/*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
/* ==========================================================================
   Normalize.scss settings
   ========================================================================== */
/**
 * Includes legacy browser support IE6/7
 *
 * Set to false if you want to drop support for IE6 and IE7
 */
/* Base
   ========================================================================== */
/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS and IE text size adjust after device orientation change,
 *    without disabling user zoom.
 * 3. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using
 *  `em` units.
 */
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 6/7/8/9 and Firefox 3.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */
audio,
canvas,
progress,
video {
  display: inline-block;
  /* 1 */
  vertical-align: baseline;
  /* 2 */ }

/**
 * Prevents 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: 700; }

/**
 * 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; }

/**
 * Addresses 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
   ========================================================================== */
/**
 * 1. Remove border when inside `a` element in IE 8/9/10.
 * 2. Improves image quality when scaled in IE 7.
 */
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.
 * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
 */
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.
 * 4. Improves appearance and consistency in all browsers.
 */
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.
 * 4. Removes inner spacing in IE 7 without affecting normal text inputs.
 *  Known issue: inner spacing remains in IE 6.
 */
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; }

/**
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 *  Known issue: excess padding remains in IE 6.
 */
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.
 * 3. Corrects text not wrapping in Firefox 3.
 * 4. Corrects alignment displayed oddly in IE 6/7.
 */
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: 700; }

/* Tables
   ========================================================================== */
/**
 * Remove most spacing between table cells.
 */
table {
  border-collapse: collapse;
  border-spacing: 0; }

td,
th {
  padding: 0; }

@media print {
  * {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important; }

  a,
  a:visited {
    text-decoration: underline; }

  a[href]:after {
    content: " (" attr(href) ")"; }

  abbr[title]:after {
    content: " (" attr(title) ")"; }

  .ir a:after,
  a[href^="javascript:"]:after,
  a[href^="#"]:after {
    content: ""; }

  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid; }

  thead {
    display: table-header-group; }

  tr,
  img {
    page-break-inside: avoid; }

  img {
    max-width: 100% !important; }

  @page {
    margin: 0.5cm; }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3; }

  h2,
  h3 {
    page-break-after: avoid; } }
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2VudHJ5LnNjc3MiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9lbnRyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19taXhpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fY2xhc3Nlcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvX3N1LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3V0aWxpdGllcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX2Zsb2F0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zaGFyZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19wcmVmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3JlbS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2luc3BlY3Quc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19vdXRwdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19kaXJlY3Rpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fZW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3JpZHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3V0dGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19nYWxsZXJ5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcm93cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmxlZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19icmVha3BvaW50LXBsdWdpbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3NjdXQvZGlzdC9fc2N1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy9fdG9vbGtpdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wbGFjZWhvbGRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ZvbnRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ludHJpbnNpYy1yYXRpby5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19uZXN0ZWQtY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wYXJhbGxheC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19ydGwuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdGFyZ2V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RyaWFuZ2xlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NlbnRlci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L192aWV3cG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L191bmRlcmxpbmUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fYXJ0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldC1tdWx0aXBsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19zY2FsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19mb250LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvbm9kZS5ub3JtYWxpemUuc2Nzcy9fbm9ybWFsaXplLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX3ByaW50LnNhc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLSB2ZW5kb3IgbWl4aW4gbGlicmFyaWVzIC0tLS1cbkBpbXBvcnQgXCJtaXhpbnNcIixcbiAgICAgICAgXCJjbGFzc2VzXCIsXG4gICAgICAgIFwifnN1c3lcIixcbiAgICAgICAgXCJ+c2N1dFwiLFxuICAgICAgICBcIn5zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdFwiO1xuXG4vLyAtLS0tIHZhcmlhYmxlcyBhbmQgY29uZmlnIC0tLS1cbkBpbXBvcnQgXCJzZXR0aW5ncy9zY2FsZVwiLFxuICAgICAgICBcInNldHRpbmdzL2dyaWRcIixcbiAgICAgICAgXCJzZXR0aW5ncy9jb2xvcnNcIixcbiAgICAgICAgXCJzZXR0aW5ncy9mb250XCI7QGNoYXJzZXQgJ3V0Zi04JztcblxuQGltcG9ydCAnfm5vZGUubm9ybWFsaXplLnNjc3Mvbm9ybWFsaXplJyxcbiAgICAgICAgJ3ByaW50JztcbiIsIi8vIHt7U2FzcyBtaXhpbnMgLS0tLS0tLS19fVxuQGZ1bmN0aW9uIG4oKSB7IEByZXR1cm4gdW5xdW90ZShcIipcIik7IH1cblxuQGZ1bmN0aW9uIHIoJHRpbWVzOiAxKSB7IEByZXR1cm4gJHJoeXRobS1nYXAgKiAkdGltZXM7IH1cblxuQG1peGluIHN1c3koJG1hcCkge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkbWFwLCBxdWVyeSksIG1hcC1nZXQoJG1hcCwgbGF5b3V0KSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiByZXZlcnNlLWhpZGUtdmlzdWFsbHkoKSB7XG4gIGJvcmRlcjogMDtcbiAgY2xpcDogYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogYXV0bztcbn1cblxuQG1peGluIHNoYXJlLWJyZWFrcG9pbnRzKCRtYXAsICRjc3Nwcm9wOiBjb250ZW50KSB7XG4gICRkZXNjcmlwdGlvbjogJyc7XG5cbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgQGlmICRkZXNjcmlwdGlvbiAhPSAgJycge1xuICAgICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAnIHwgJztcbiAgICB9XG4gICAgXG4gICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAkcHJvcGVydHkgKyc6ICcrIGluc3BlY3QoJHZhbHVlKTtcbiAgfVxuXG4gIGRpc3BsYXk6IG5vbmU7XG4gICN7JGNzc3Byb3B9OiAgJGRlc2NyaXB0aW9uO1xufVxuXG5AbWl4aW4gdG9nZ2xlLWZhZGUoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIH1cbn1cblxuQG1peGluIHRvZ2dsZS1zaG93KCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IDA7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9ICBcbn1cblxuQG1peGluIHNob3coKSB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICBoZWlnaHQ6IGF1dG87ICBcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyKCkge1xuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCBcbiAgJjo6LW1vei1wbGFjZWhvbGRlcixcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxufVxuXG5AbWl4aW4gZGVidWcoJGNvbG9yOiAjZmZmIHJnYmEodG9tYXRvLCAuMykpIHtcbiAgY29sb3I6ICRjb2xvclxufVxuXG5AbWl4aW4gbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSk7XG4gID4gbGkgKyBsaTpiZWZvcmUgeyBtYXJnaW4tbGVmdDogJHNwYWNlICsgNHB4OyB9XG59XG4iLCJAbWl4aW4gSGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBTZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBwYWRkaW5nOiAwIHIoMikgMCByKDEpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAvLyBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIC8vIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gIC8vIGJhY2tncm91bmQ6IHVybChcImltYWdlcy9hcnJvdy1kb3duLnN2Z1wiKVxuICAvLyAgICAgICAgICAgOTIlIDUwJSAvIDhweCAxMHB4XG4gIC8vICAgICAgICAgICBuby1yZXBlYXRcbiAgLy8gICAgICAgICAgIHRyYW5zcGFyZW50O1xuICAubm8tY3NzLWFwcGVhcmFuY2UgJiB7XG4gICAgQGluY2x1ZGUgc2N1dC1wYWRkaW5nKG4gMCk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gTm9ybWFsaXplKCkge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmUgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDA7XG59IiwiLy8gU3VzeVxuLy8gPT09PVxuXG5AaW1wb3J0ICdzdXN5L2xhbmd1YWdlL3N1c3knO1xuIiwiLy8gU3VzeSBOZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4kc3VzeS12ZXJzaW9uOiAyLjE7XG5cbkBpbXBvcnQgXCIuLi9zdVwiO1xuQGltcG9ydCBcIi4uL291dHB1dC9mbG9hdFwiO1xuXG5AaW1wb3J0IFwic3VzeS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1c3kvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1c3kvZ3JpZHNcIjtcbkBpbXBvcnQgXCJzdXN5L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRleHRcIjtcbkBpbXBvcnQgXCJzdXN5L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInN1c3kvc3BhblwiO1xuQGltcG9ydCBcInN1c3kvZ3V0dGVyc1wiO1xuQGltcG9ydCBcInN1c3kvaXNvbGF0ZVwiO1xuQGltcG9ydCBcInN1c3kvZ2FsbGVyeVwiO1xuQGltcG9ydCBcInN1c3kvcm93c1wiO1xuQGltcG9ydCBcInN1c3kvbWFyZ2luc1wiO1xuQGltcG9ydCBcInN1c3kvcGFkZGluZ1wiO1xuQGltcG9ydCBcInN1c3kvYmxlZWRcIjtcbkBpbXBvcnQgXCJzdXN5L2JyZWFrcG9pbnQtcGx1Z2luXCI7XG4iLCIvLyBTdVxuLy8gPT1cblxuQGltcG9ydCBcInN1L3V0aWxpdGllc1wiO1xuQGltcG9ydCBcInN1L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3UvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1L2dyaWRcIjtcbiIsIi8vIE1hcCBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBUcnVuY2F0ZSBMaXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiBhIGxpc3QsIHRydW5jYXRlZCB0byBhIGdpdmVuIGxlbmd0aFxuQGZ1bmN0aW9uIF9zdXN5LXRydW5jYXRlLWxpc3QoXG4gICRsaXN0LFxuICAkbGVuZ3RoXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgJF9yZXR1cm46IGlmKCRpIDw9ICRsZW5ndGgsIGFwcGVuZCgkX3JldHVybiwgbnRoKCRsaXN0LCAkaSkpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgR2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1nZXQoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46ICRtYXA7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIHR5cGUtb2YoJF9yZXR1cm4pID09IG1hcCB7XG4gICAgICAkX3JldHVybjogbWFwLWdldCgkX3JldHVybiwgJGtleSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIFNldFxuLy8gLS0tLS0tLS1cbi8vIC0gU2V0IGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtc2V0KFxuICAkbWFwLFxuICAka2V5cy12YWx1ZS4uLlxuKSB7XG4gICRfdmFsdWU6IG50aCgka2V5cy12YWx1ZSwgLTEpO1xuICAkX2tleXM6IF9zdXN5LXRydW5jYXRlLWxpc3QoJGtleXMtdmFsdWUsIGxlbmd0aCgka2V5cy12YWx1ZSkgLSAxKTtcbiAgJF9sZW5ndGg6IGxlbmd0aCgkX2tleXMpO1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkX2xlbmd0aCB7XG4gICAgJF9uOiAwIC0gJGk7XG4gICAgJF9sZXZlbDogX3N1c3ktdHJ1bmNhdGUtbGlzdCgkX2tleXMsICRfbGVuZ3RoICsgJF9uKTtcbiAgICAkX2xldmVsOiBfc3VzeS1kZWVwLWdldCgkbWFwLCAkX2xldmVsLi4uKTtcbiAgICAkX21lcmdlOiBudGgoJF9rZXlzLCAkX24pO1xuICAgICRfbWVyZ2U6ICgkX21lcmdlOiAkX3ZhbHVlKTtcbiAgICAkX3JldHVybjogaWYoJF9sZXZlbCwgbWFwLW1lcmdlKCRfbGV2ZWwsICRfbWVyZ2UpLCAkX21lcmdlKTtcbiAgICAkX3ZhbHVlOiAkX3JldHVybjtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBNZXJnZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIDIgb2JqZWN0cyBvZiBhbnkgZGVwdGgsIG1lcmdlZFxuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtbWVyZ2UoXG4gICRtYXAxLFxuICAkbWFwMlxuKSB7XG5cbiAgQGlmIHR5cGUtb2YoJG1hcDEpICE9IG1hcCBvciB0eXBlLW9mKCRtYXAyKSAhPSBtYXAge1xuICAgICRtYXAxOiAkbWFwMjtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAyIHtcbiAgICAgICRfbmV3OiAoJGtleTogX3N1c3lfZGVlcC1tZXJnZShtYXAtZ2V0KCRtYXAxLCAka2V5KSwgJHZhbHVlKSk7XG4gICAgICAkbWFwMTogbWFwLW1lcmdlKCRtYXAxLCAkX25ldyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbWFwMTtcbn1cblxuXG4vLyBEZWVwIEhhcy1LZXlcbi8vIC0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gdHJ1ZSBpZiBhIGRlZXAga2V5IGV4aXN0c1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtaGFzLWtleShcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogbnVsbDtcbiAgJF9zdG9wOiBmYWxzZTtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgbm90KCRfc3RvcCkge1xuICAgICAgJF9yZXR1cm46IG1hcC1oYXMta2V5KCRtYXAsICRrZXkpO1xuICAgIH1cblxuICAgIEBpZiAkX3JldHVybiB7XG4gICAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9zdG9wOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTZXR0aW5nc1xuLy8gPT09PT09PT1cblxuLy8gVmVyc2lvblxuLy8gLS0tLS0tLVxuJHN1LXZlcnNpb246IDEuMTtcblxuXG4vLyBEZWZhdWx0IFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBUaGUgYmFzaWMgc2V0dGluZ3NcbiRzdXN5LWRlZmF1bHRzOiAoXG4gIGNvbHVtbnM6IDQsXG4gIGd1dHRlcnM6IC4yNSxcbik7XG5cblxuLy8gVXNlciBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBEZWZpbmUgdGhlICRzdXN5IHZhcmlhYmxlIHdpdGggYSBtYXAgb2YgeW91ciBvd24gc2V0dGluZ3MuXG4vLyAtIFNldCBFSVRIRVIgJGNvbHVtbi13aWR0aCBPUiAkY29udGFpbmVyXG4vLyAtIFVzZSAkY29sdW1uLXdpZHRoIGZvciBzdGF0aWMgbGF5b3V0c1xuJHN1c3k6ICgpICFkZWZhdWx0O1xuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IEFkZCBkZWZhdWx0cyB0byBTdXN5XG5AbWl4aW4gc3VzeS1kZWZhdWx0cyhcbiAgJGRlZmF1bHRzXG4pIHtcbiAgJHN1c3ktZGVmYXVsdHM6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJGRlZmF1bHRzKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgU2V0XG4vLyAtLS0tLS0tLVxuLy8gQ2hhbmdlIG9uZSBzZXR0aW5nXG4vLyAtICRrZXkgICA6IHNldHRpbmcgbmFtZVxuLy8gLSAkdmFsdWUgOiBzZXR0aW5nIHZhbHVlXG5AbWl4aW4gc3VzeS1zZXQoXG4gICRrZXktdmFsdWUuLi5cbikge1xuICAkc3VzeTogX3N1c3ktZGVlcC1zZXQoJHN1c3ksICRrZXktdmFsdWUuLi4pICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm4gb25lIHNldHRpbmcgZnJvbSBhIGdyaWRcbi8vIC0gJGtleSAgICAgOiA8a2V5d29yZD5cbi8vIC0gJGxheW91dCAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gc3VzeS1nZXQoXG4gICRrZXksXG4gICRsYXlvdXQ6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJHN1c3kpXG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF9vcHRpb25zOiAkbGF5b3V0ICRzdXN5ICRzdXN5LWRlZmF1bHRzO1xuICAkX2JyZWFrOiBmYWxzZTtcbiAgJF9yZXR1cm46IG51bGw7XG5cbiAgQGVhY2ggJG9wdCBpbiAkX29wdGlvbnMge1xuICAgIEBpZiB0eXBlLW9mKCRvcHQpID09IG1hcCBhbmQgbm90KCRfYnJlYWspIHtcbiAgICAgICRfa2V5c2V0OiBfc3VzeS1kZWVwLWhhcy1rZXkoJG9wdCwgJGtleS4uLik7XG4gICAgICBAaWYgJF9rZXlzZXQge1xuICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1nZXQoJG9wdCwgJGtleS4uLik7XG4gICAgICAgICRfYnJlYWs6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIE1hdGggVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09XG5cblxuLy8gVmFsaWQgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGNvbHVtbiBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRjb2x1bW5zKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkY29sdW1ucykge1xuICAgICRyZXR1cm46ICRjb2x1bW5zO1xuICB9IEBlbHNlIGlmICR0eXBlID09IGxpc3Qge1xuICAgICRmYWlsOiBudWxsO1xuICAgIEBlYWNoICRjb2wgaW4gJGNvbHVtbnMge1xuICAgICAgQGlmIHR5cGUtb2YoJGNvbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgJGZhaWw6ICRmYWlsIG9yIGlmKHVuaXRsZXNzKCRjb2wpLCBudWxsLCB0cnVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHJldHVybjogaWYoJGZhaWwsICRyZXR1cm4sICRjb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiAkcmV0dXJuICE9ICRjb2x1bW5zIGFuZCBub3QoJHNpbGVudCkge1xuICAgICRyZXR1cm46IG51bGw7XG4gICAgJHdhcm46ICckY29sdW1ucyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyIG9yIGxpc3Qgb2YgdW5pdGxlc3MgbnVtYmVycy4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGNvbHVtbnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG4vLyBWYWxpZCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgZ3V0dGVyIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtZ3V0dGVycyhcbiAgJGd1dHRlcnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXJzKSB7XG4gICAgJHJldHVybjogJGd1dHRlcnM7XG4gIH0gQGVsc2UgaWYgbm90KCRzaWxlbnQpIHtcbiAgICAkd2FybjogJyRndXR0ZXJzIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRndXR0ZXJzfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBDb2x1bW4gbWF0aFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBJcyBTeW1tZXRyaWNhbFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIGdyaWQgaXMgc3ltbWV0cmljYWwuXG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gaXMtc3ltbWV0cmljYWwoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpZih0eXBlLW9mKCRjb2x1bW5zKSA9PSBudW1iZXIsICRjb2x1bW5zLCBudWxsKTtcbn1cblxuXG4vLyBTdXN5IENvdW50XG4vLyAtLS0tLS0tLS0tXG4vLyBGaW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiBhIGdpdmVuIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktY291bnQoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykgb3IgbGVuZ3RoKCRjb2x1bW5zKTtcbn1cblxuXG4vLyBTdXN5IFN1bVxuLy8gLS0tLS0tLS1cbi8vIEZpbmQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5LXN1bShcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuXG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQgPT0gd2lkZSwgMCwgaWYoJHNwcmVhZCA9PSB3aWRlciwgMSwgLTEpKTtcbiAgJGd1dHRlci1zdW06IChzdXN5LWNvdW50KCRjb2x1bW5zKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICRjb2x1bW4tc3VtOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgQGlmIG5vdCgkY29sdW1uLXN1bSkge1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGNvbHVtbnMge1xuICAgICAgJGNvbHVtbi1zdW06ICgkY29sdW1uLXN1bSBvciAwKSArICRjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtO1xufVxuXG5cbi8vIFN1c3kgU2xpY2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBvZiBjb2x1bW5zIGF0IGEgZ2l2ZW4gbG9jYXRpb24uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkc3ViLWNvbHVtbnM6ICRzcGFuO1xuXG4gIEBpZiBub3QoaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpKSB7XG4gICAgJGxvY2F0aW9uOiAkbG9jYXRpb24gb3IgMTtcbiAgICAkc3ViLWNvbHVtbnM6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRzcGFuKSB7XG4gICAgICAkc3ViLWNvbHVtbnM6IGFwcGVuZCgkc3ViLWNvbHVtbnMsIG50aCgkY29sdW1ucywgJGkpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG4vLyBTdXN5XG4vLyAtLS0tXG4vLyBGaW5kIHRoZSBzdW0gb2YgYSBjb2x1bW4tc3Bhbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5KFxuICAkc3BhbixcbiAgJGxvY2F0aW9uICAgICA6IGZhbHNlLFxuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICAgICAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgICAgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG4gICRzcGFuOiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcblxuICBAcmV0dXJuIHN1c3ktc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCk7XG59XG4iLCIvLyBGbG9hdCBBUElcbi8vID09PT09PT09PVxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbkBpbXBvcnQgXCJmbG9hdC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJmbG9hdC9zcGFuXCI7XG5AaW1wb3J0IFwiZmxvYXQvZW5kXCI7XG5AaW1wb3J0IFwiZmxvYXQvaXNvbGF0ZVwiO1xuIiwiLy8gU2hhcmVkIEFQSVxuLy8gPT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydFwiO1xuXG5AaW1wb3J0IFwic2hhcmVkL2luc3BlY3RcIjtcbkBpbXBvcnQgXCJzaGFyZWQvb3V0cHV0XCI7XG5AaW1wb3J0IFwic2hhcmVkL2RpcmVjdGlvblwiO1xuQGltcG9ydCBcInNoYXJlZC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic2hhcmVkL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNoYXJlZC9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic2hhcmVkL3BhZGRpbmdcIjtcblxuXG5cbiIsIi8vIFN1c3kgQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydC9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9wcmVmaXhcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3JlbVwiO1xuQGltcG9ydCBcInN1cHBvcnQvY2xlYXJmaXhcIjtcbiIsIi8vIEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgU3VwcG9ydCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgYnJlYWtwb2ludDogdHJ1ZSxcbiAgICBib3gtc2l6aW5nOiB0cnVlLFxuICAgIHJlbTogdHJ1ZSxcbiAgKSxcbikpO1xuXG5cbi8vIFN1c3kgU3VwcG9ydCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VuZCBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0byB0aGUgcHJvcGVyIHN1cHBvcnQgbW9kdWxlcy5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXN1cHBvcnQoXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgLy8gQmFja2dyb3VuZCBTdXBwb3J0XG4gIEBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtaW1hZ2UoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1zaXplIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtc2l6ZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLW9yaWdpbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbigkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWNsaXAge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1jbGlwKCR2YWwpO1xuICB9XG5cbiAgLy8gQm94LVNpemluZyBTdXBwb3J0XG4gIEBlbHNlIGlmICRwcm9wID09IGJveC1zaXppbmcge1xuICAgIEBpbmNsdWRlIHN1c3ktYm94LXNpemluZygkdmFsKTtcbiAgfVxuXG4gIC8vIFJlbSBTdXBwb3J0XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cblxuXG4vLyBTdXN5IFN1cHBvcnQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBzdXBwb3J0IG9mIGEgZmVhdHVyZS5cbi8vIC0gJGZlYXR1cmUgICAgICAgOiA8c3RyaW5nPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nIFwicmVtXCIgb3IgXCJib3gtc2l6aW5nXCJcbi8vIC0gJHJlcXVpcmVtZW50cyAgOiA8bWFwPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nICh2YXJpYWJsZTogcmVtLXdpdGgtcHgtZmFsbGJhY2ssIG1peGluOiByZW0pXG4vLyAtICR3YXJuICAgICAgICAgIDogPGJvb2w+XG5AZnVuY3Rpb24gc3VzeS1zdXBwb3J0KFxuICAkZmVhdHVyZSxcbiAgJHJlcXVpcmVtZW50czogKCksXG4gICR3YXJuOiB0cnVlXG4pIHtcbiAgJF9zdXBwb3J0OiBzdXN5LWdldCh1c2UtY3VzdG9tICRmZWF0dXJlKTtcblxuICBAaWYgJF9zdXBwb3J0IHtcbiAgICAkX2ZhaWw6IGZhbHNlO1xuXG4gICAgQGVhY2ggJF90eXBlLCAkX3JlcSBpbiAkcmVxdWlyZW1lbnRzIHtcbiAgICAgIEBlYWNoICRfaSBpbiAkX3JlcSB7XG4gICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcblxuICAgICAgICBAaWYgbm90KCRfcGFzcykge1xuICAgICAgICAgICRfZmFpbDogdHJ1ZTtcbiAgICAgICAgICBAaWYgJHdhcm4ge1xuICAgICAgICAgICAgQHdhcm4gXCJZb3UgcmVxdWVzdGVkIGN1c3RvbSBzdXBwb3J0IG9mICN7JGZlYXR1cmV9LCBidXQgdGhlICN7JF9pfSAjeyRfdHlwZX0gaXMgbm90IGF2YWlsYWJsZS5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3N1cHBvcnQ6IGlmKCRfZmFpbCwgZmFsc2UsICRfc3VwcG9ydCk7XG4gIH1cblxuICBAcmV0dXJuICRfc3VwcG9ydDtcbn1cbiIsIi8vIFN1c3kgUHJlZml4XG4vLyA9PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IHNpbXBsZSBwcmVmaXhlZCBwcm9wZXJ0aWVzLlxuLy8gLSAkcHJvcCAgICAgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgICAgICA6IDxjc3MgdmFsdWU+XG4vLyAtIFskcHJlZml4XSAgOiA8YnJvd3NlciBwcmVmaXggbGlzdD5cbkBtaXhpbiBzdXN5LXByZWZpeChcbiAgJHByb3AsXG4gICR2YWwsXG4gICRwcmVmaXg6IG9mZmljaWFsXG4pIHtcbiAgQGVhY2ggJGZpeCBpbiAkcHJlZml4IHtcbiAgICAkZml4OiBpZigkZml4ID09IG9mZmljaWFsIG9yIG5vdCgkZml4KSwgJHByb3AsICctI3skZml4fS0jeyRwcm9wfScpO1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRmaXgsICR2YWwpO1xuICB9XG59XG4iLCIvLyBCYWNrZ3JvdW5kIFByb3BlcnRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEJhY2tncm91bmQgSW1hZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtaW1hZ2U+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2Vcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtaW1hZ2UsIChtaXhpbjogYmFja2dyb3VuZC1pbWFnZSksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLi4uKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBTaXplXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLXNpemU+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1zaXplKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgkc2l6ZSk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemU7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIE9yaWdpblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtb3JpZ2luPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oXG4gICRvcmlnaW5cbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLW9yaWdpbikpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRvcmlnaW47XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIENsaXBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1jbGlwPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1jbGlwKFxuICAkY2xpcFxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtY2xpcCkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNsaXAoJGNsaXApO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwO1xuICB9XG59XG4iLCIvLyBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09XG5cbi8vIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkbW9kZWw6IDxib3gtc2l6aW5nPlxuQG1peGluIHN1c3ktYm94LXNpemluZyhcbiAgJG1vZGVsOiBjb250ZW50LWJveFxuKSB7XG4gIEBpZiAkbW9kZWwge1xuICAgIEBpZiBzdXN5LXN1cHBvcnQoYm94LXNpemluZywgKG1peGluOiBib3gtc2l6aW5nKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKCRtb2RlbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJlZml4OiAobW96LCB3ZWJraXQsIG9mZmljaWFsKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktcHJlZml4KGJveC1zaXppbmcsICRtb2RlbCwgJHByZWZpeCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBEZWJ1Z2dpbmdcbi8vID09PT09PT09PVxuXG4vLyBTdXN5IEluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8gT3V0cHV0IGFyZ3VtZW50cyBwYXNzZWQgdG8gYSBpbnNwZWN0LlxuLy8gLSAkbWl4aW4gIDogPHN1c3kgbWl4aW4+XG4vLyAtICRpbnNwZWMgICA6IDxtaXhpbiBhcmd1bWVudHM+XG5cbkBtaXhpbiBzdXN5LWluc3BlY3QoXG4gICRtaXhpbixcbiAgJGluc3BlY3Rcbikge1xuICAkc2hvdzogZmFsc2U7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGluc3BlY3Qge1xuICAgIEBpZiBpbmRleCgkaXRlbSwgaW5zcGVjdCkge1xuICAgICAgJHNob3c6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzaG93IG9yIHN1c3ktZ2V0KGRlYnVnIGluc3BlY3QpIHtcbiAgICAtc3VzeS0jeyRtaXhpbn06IGluc3BlY3QoJGluc3BlY3QpO1xuICB9XG59XG4iLCIvLyBPdXRwdXRcbi8vID09PT09PVxuXG4vLyBPdXRwdXRcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IENTUyB3aXRoIHByb3BlciBicm93c2VyIHN1cHBvcnQuXG4vLyAtICRzdHlsZXMgIDogPG1hcCBvZiBjc3MgcHJvcGVydHktdmFsdWUgcGFpcnM+XG5AbWl4aW4gb3V0cHV0KFxuICAkc3R5bGVzXG4pIHtcbiAgQGVhY2ggJHByb3AsICR2YWwgaW4gJHN0eWxlcyB7XG4gICAgQGluY2x1ZGUgc3VzeS1zdXBwb3J0KCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gR3JpZCBCYWNrZ3JvdW5kIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuLy8gLSBTdWItcGl4ZWwgcm91bmRpbmcgY2FuIGxlYWQgdG8gc2V2ZXJhbCBwaXhlbHMgdmFyaWF0aW9uIGJldHdlZW4gYnJvd3NlcnMuXG5cbi8vIEdyaWQgQmFja2dyb3VuZCBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGltYWdlOiBiYWNrZ3JvdW5kLWltYWdlXG4vLyAtICRzaXplOiBiYWNrZ3JvdW5kLXNpemVcbi8vIC0gJGNsaXA6IGJhY2tncm91bmQtY2xpcFxuLy8gLSBbJGZsb3ddOiBsdHIgfCBydGxcbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0IChcbiAgJGltYWdlLFxuICAkc2l6ZTogbnVsbCxcbiAgJGNsaXA6IG51bGwsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2UsXG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZSxcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBmcm9tKCRmbG93KSB0b3AsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBNYXJnaW5zIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gTWFyZ2luIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBtYXJnaW4tb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUGFkZGluZyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIFBhZGRpbmcgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBwYWRkaW5nLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBDb250YWluZXJcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGZsb2F0LWNvbnRhaW5lcihcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gIEBpbmNsdWRlIHN1c3ktY2xlYXJmaXg7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1vdXRwdXQoJHdpZHRoLCAkanVzdGlmeSwgJHByb3BlcnR5KTtcbn1cbiIsIi8vIEZsb2F0IFNwYW4gQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBTcGFuIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHdpZHRoICAgICAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG9hdF0gICAgICAgICAgIDogZnJvbSB8IHRvXG4vLyAtIFskbWFyZ2luLWJlZm9yZV0gICA6IDxsZW5ndGg+XG4vLyAtIFskbWFyZ2luLWFmdGVyXSAgICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1iZWZvcmVdICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1hZnRlcl0gICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gICAgICAgICAgICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LXNwYW4tb3V0cHV0KFxuICAkd2lkdGgsXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbSxcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsLFxuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGwsXG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbCxcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsLFxuICAkZmxvdyAgICAgICAgICAgICA6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvICAgICA6IHRvKCRmbG93KTtcbiAgJGZyb20gICA6IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aDogJHdpZHRoLFxuICAgIGZsb2F0OiBpZigkZmxvYXQgPT0gdG8sICR0bywgbnVsbCkgb3IgaWYoJGZsb2F0ID09IGZyb20sICRmcm9tLCBudWxsKSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkcGFkZGluZy1hZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IElzb2xhdGlvbiBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gSXNvbGF0ZSBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRwdXNoICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBpc29sYXRlLW91dHB1dChcbiAgJHB1c2gsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiAkZnJvbSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRwdXNoLFxuICAgIG1hcmdpbi0jeyR0b306IC0xMDAlLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFN1c3kgU2V0dGluZ3Ncbi8vID09PT09PT09PT09PT1cblxuLy8gU3VzeSBMYW5ndWFnZSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBjZW50ZXIsXG4gIGd1dHRlci1wb3NpdGlvbjogYWZ0ZXIsXG4gIGdsb2JhbC1ib3gtc2l6aW5nOiBjb250ZW50LWJveCxcbiAgZGVidWc6IChcbiAgICBpbWFnZTogaGlkZSxcbiAgICBjb2xvcjogcmdiYSgjNjZmLCAuMjUpLFxuICAgIG91dHB1dDogYmFja2dyb3VuZCxcbiAgICB0b2dnbGU6IHRvcCByaWdodCxcbiAgKSxcbikpO1xuXG5cbi8vIFZhbGlkIEtleXdvcmQgVmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFOiBET05UJ1QgVE9VQ0hcbiRzdXN5LWtleXdvcmRzOiAoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogc3RhdGljIGZsdWlkLFxuICBvdXRwdXQ6IGlzb2xhdGUgZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogbGVmdCBjZW50ZXIgcmlnaHQsXG4gIGZsb3c6IGx0ciBydGwsXG4gIGd1dHRlci1wb3NpdGlvbjogYmVmb3JlIGFmdGVyIHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljLFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94IGNvbnRlbnQtYm94LFxuICBzcGFuOiBmdWxsLFxuICBlZGdlOiBmaXJzdCBhbHBoYSBsYXN0IG9tZWdhIGZ1bGwsXG4gIHNwcmVhZDogbmFycm93IHdpZGUgd2lkZXIsXG4gIGd1dHRlci1vdmVycmlkZTogbm8tZ3V0dGVycyBuby1ndXR0ZXIsXG4gIHJvbGU6IG5lc3QsXG4gIGNsZWFyOiBicmVhayBub2JyZWFrLFxuICBkZWJ1ZyBpbWFnZTogc2hvdyBoaWRlIHNob3ctY29sdW1ucyBzaG93LWJhc2VsaW5lLFxuICBkZWJ1ZyBvdXRwdXQ6IGJhY2tncm91bmQgb3ZlcmxheSxcbik7XG5cblxuLy8gUGFyc2UgU3VzeSBLZXl3b3JkcyBhbmQgTWFwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNldHRpbmdzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gc3RyaW5nc1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IHN0cmluZyB7XG4gICAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkc3VzeS1rZXl3b3JkcyB7XG4gICAgICAgICAgQGlmIGluZGV4KCR2YWx1ZSwgJGl0ZW0pIHtcbiAgICAgICAgICAgICRfa2V5LXZhbHVlOiBhcHBlbmQoJGtleSwgJGl0ZW0pO1xuICAgICAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtc2V0KCRfcmV0dXJuLCAkX2tleS12YWx1ZS4uLik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAvLyBtYXBzXG4gICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IG1hcCB7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIENvbHVtbnMgJiBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWxheW91dChcbiAgJHNob3J0XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuICAkX2NvbHVtbnM6ICgpO1xuICAkX2d1dHRlcnM6IG51bGw7XG5cbiAgQGlmIG5vdCh1bml0bGVzcyhudGgobnRoKCRzaG9ydCwgMSksIDEpKSkge1xuICAgICRfZ3V0dGVyczogbnRoKCRzaG9ydCwgMSk7XG4gIH0gQGVsc2Uge1xuICAgICRfY29sdW1uczogKGNvbHVtbnM6IG50aCgkc2hvcnQsIDEpKTtcbiAgICAkX2d1dHRlcnM6IGlmKGxlbmd0aCgkc2hvcnQpID4gMSwgbnRoKCRzaG9ydCwgMiksICRfZ3V0dGVycyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkX2d1dHRlcnMpID09IGxpc3QgYW5kIGxlbmd0aCgkX2d1dHRlcnMpID4gMCB7XG4gICAgJF9ndXR0ZXJzOiAoXG4gICAgICBndXR0ZXJzOiBudGgoJF9ndXR0ZXJzLCAyKSAvIG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICAgY29sdW1uLXdpZHRoOiBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlcnM6IGlmKCRfZ3V0dGVycywgKGd1dHRlcnM6ICRfZ3V0dGVycyksICgpKTtcbiAgfVxuXG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfY29sdW1ucyk7XG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfZ3V0dGVycyk7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHcmlkL0NvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWdyaWQoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogcGFyc2Utc2V0dGluZ3MoJHNob3J0KTtcbiAgJF9sYXlvdXQ6ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gbnVtYmVyIG9yIGxpc3RcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IG9yIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICAgJF9sYXlvdXQ6IGFwcGVuZCgkX2xheW91dCwgJGl0ZW0pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY29udGFpbmVyOiAkaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9sYXlvdXQ6IGlmKGxlbmd0aCgkX2xheW91dCkgPiAwLCBwYXJzZS1sYXlvdXQoJF9sYXlvdXQpLCAkX2xheW91dCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkX3JldHVybiwgJF9sYXlvdXQpO1xufVxuXG5cbi8vIFBhcnNlIFNwYW5cbi8vIC0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zcGFuKFxuICAkc2hvcnQsXG4gICRrZXk6IHNwYW5cbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgICRfYXQ6IGluZGV4KCRzaG9ydCwgYXQpO1xuXG4gICAgQGlmICRfYXQge1xuICAgICAgJF9sb2NpOiAkX2F0ICsgMTtcbiAgICAgICRfbG9jYXRpb246IG50aCgkc2hvcnQsICRfbG9jaSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAobG9jYXRpb246ICRfbG9jYXRpb24pKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfYXQsIG51bGwpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9sb2NpLCBudWxsKTtcbiAgICB9XG5cbiAgICAkX2k6IDE7XG4gICAgJF9zcGFuOiAoKTtcblxuICAgIEB3aGlsZSAkX2kgPD0gbGVuZ3RoKCRzaG9ydCkge1xuICAgICAgJF90aGlzOiBudGgoJHNob3J0LCAkX2kpO1xuXG4gICAgICBAaWYgdHlwZS1vZigkX3RoaXMpID09IG51bWJlciB7XG4gICAgICAgICRfc3BhbjogYXBwZW5kKCRfc3BhbiwgJF90aGlzKTtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgIH0gQGVsc2UgaWYgJF90aGlzID09IG9mIHtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgICAgJF9pOiBsZW5ndGgoJHNob3J0KSArIDE7XG4gICAgICB9XG5cbiAgICAgICRfaTogJF9pICsgMTtcbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCRfc3BhbikgPiAwIHtcbiAgICAgICRfc3BhbjogaWYobGVuZ3RoKCRfc3BhbikgPT0gMSwgbnRoKCRfc3BhbiwgMSksICRfc3Bhbik7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJGtleTogJF9zcGFuKSk7XG4gICAgfVxuXG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgcGFyc2UtZ3JpZCgkc2hvcnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWd1dHRlcnMoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX2d1dHRlcnM6IHBhcnNlLXNwYW4oJHNob3J0LCBndXR0ZXItb3ZlcnJpZGUpO1xuICAkX3NwYW46IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJF9ndXR0ZXJzKTtcblxuICBAaWYgJF9zcGFuIGFuZCBub3QobWFwLWdldCgkX2d1dHRlcnMsIGNvbHVtbnMpKSB7XG4gICAgJF9jb250ZXh0OiAoKTtcbiAgICAkX25ldzogKCk7XG5cbiAgICBAZWFjaCAkaXRlbSBpbiAkX3NwYW4ge1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgJF9jb250ZXh0OiBhcHBlbmQoJF9jb250ZXh0LCAkaXRlbSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJF9uZXc6IGFwcGVuZCgkX25ldywgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICRfY29udGV4dDogcGFyc2UtZ3JpZCgkX2NvbnRleHQpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDAsIG51bGwsICRfbmV3KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAxLCBudGgoJF9uZXcsIDEpLCAkX25ldyk7XG4gICAgJF9uZXc6IChndXR0ZXItb3ZlcnJpZGU6IGlmKCRfbmV3ICE9ICRfc3BhbiwgJF9uZXcsICRfc3BhbikpO1xuXG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX25ldyk7XG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX2NvbnRleHQpO1xuICB9XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG4iLCIvLyBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09XG5cblxuLy8gVmFsaWRhdGUgQ29sdW1uIE1hdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1uLW1hdGgoXG4gICRtYXRoLFxuICAkY29sdW1uLXdpZHRoXG4pIHtcbiAgQGlmICRtYXRoID09IHN0YXRpYyBhbmQgbm90KCRjb2x1bW4td2lkdGgpIHtcbiAgICBAZXJyb3IgJ1N0YXRpYyBtYXRoIHJlcXVpcmVzIGEgdmFsaWQgY29sdW1uLXdpZHRoIHNldHRpbmcuJztcbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi13aWR0aDtcbn1cbiIsIi8vIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBTZXQgYSBuZXcgbGF5b3V0IHVzaW5nIGEgc2hvcnRoYW5kXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXlvdXQsICRpbnNwZWN0KTtcbn1cblxuXG4vLyBVc2UgR3JpZFxuLy8gLS0tLS0tLS1cbi8vIFVzZSBhbiBhcmJpdHJhcnkgbGF5b3V0IGZvciBhIHNlY3Rpb24gb2YgY29kZVxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIHdpdGgtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJG9sZCAgICAgIDogJHN1c3k7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qod2l0aC1sYXlvdXQsICRpbnNwZWN0KTtcblxuICBAY29udGVudDtcblxuICAkc3VzeTogJG9sZCAhZ2xvYmFsO1xufVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gYSBwYXJzZWQgbGF5b3V0IG1hcCBiYXNlZCBvbiBzaG9ydGhhbmQgc3ludGF4XG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBsYXlvdXQoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgQHJldHVybiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xufVxuXG5cbi8vIEdldCBMYXlvdXRcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIG5ldyBsYXlvdXQgYmFzZWQgb24gY3VycmVudCBhbmQgZ2l2ZW4gc2V0dGluZ3Ncbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBmdW5jdGlvbiBfZ2V0LWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRsYXlvdXQ6IGxheW91dCgkbGF5b3V0KTtcbiAgQHJldHVybiBpZigkY2xlYW4sICRsYXlvdXQsIF9zdXN5LWRlZXAtbWVyZ2UoJHN1c3ksICRsYXlvdXQpKTtcbn1cbiIsIi8vIFN1c3kgQm94IFNpemluZ1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBib3ggbW9kZWwgZ2xvYmFsbHkgb24gYWxsIGVsZW1lbnRzLlxuLy8gLSBbJGJveF06IGJvcmRlci1ib3ggfCBjb250ZW50LWJveFxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBnbG9iYWwtYm94LXNpemluZyhcbiAgJGJveDogc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpLFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdDogJGJveDtcblxuICBAaWYgJGluaGVyaXQge1xuICAgIEBhdC1yb290IHtcbiAgICAgICBodG1sIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgICAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cbiAgICAgfVxuICB9IEBlbHNlIHtcbiAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2xvYmFsLWJveC1zaXppbmcsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgdXBkYXRlLWJveC1tb2RlbCgkYm94KTtcbn1cblxuLy8gQm9yZGVyIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBIGxlZ2FjeSBzaG9ydGN1dC4uLlxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBib3JkZXItYm94LXNpemluZyhcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCwgJGluaGVyaXQpO1xufVxuXG4vLyBVcGRhdGUgQm94IE1vZGVsXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBVcGRhdGVzIGdsb2JhbCBib3ggbW9kZWwgc2V0dGluZ1xuQG1peGluIHVwZGF0ZS1ib3gtbW9kZWwoXG4gICRib3hcbikge1xuICBAaWYgJGJveCAhPSBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykge1xuICBAaW5jbHVkZSBzdXN5LXNldChnbG9iYWwtYm94LXNpemluZywgJGJveCk7XG4gIH1cbn1cbiIsIi8vIENvbnRleHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBOZXN0ZWQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBncmlkIGZvciBuZXN0ZWQgY29udGV4dC5cbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuQGZ1bmN0aW9uIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkY29udGV4dCAgICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkc3BhbiAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRjb250ZXh0KTtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGNvbnRleHQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcblxuICBAcmV0dXJuIHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xufVxuXG4vLyBOZXN0ZWQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFVzZSBhIHN1YnNldCBncmlkIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbi8vIC0gQGNvbnRlbnQgICA6IDxjb250ZW50PlxuQG1peGluIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRvbGQgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpO1xuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiBuZXN0ZWQoJGNvbnRleHQpKSkgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobmVzdGVkLCAkaW5zcGVjdCk7XG4gIEBjb250ZW50O1xuXG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6ICRvbGQpKSAhZ2xvYmFsO1xufVxuIiwiLy8gQmFja2dyb3VuZCBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IGZhbHNlO1xuXG5cbi8vIFNob3cgR3JpZC9zXG4vLyAtLS0tLS0tLS0tLVxuLy8gU2hvdyBncmlkIG9uIGFueSBlbGVtZW50IHVzaW5nIGVpdGhlciBiYWNrZ3JvdW5kIG9yIG92ZXJsYXkuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIHNob3ctZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3Q6ICRncmlkO1xuICAkX291dHB1dDogZGVidWctZ2V0KG91dHB1dCwgJGdyaWQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzaG93LWdyaWQsICRpbnNwZWN0KTtcbiAgQGlmICRfb3V0cHV0ID09IG92ZXJsYXkgYW5kIHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCkgIT0gaGlkZSB7XG4gICAgQGluY2x1ZGUgb3ZlcmxheS1ncmlkKCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvdy1ncmlkcyhcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRncmlkKTtcbn1cblxuLy8gQmFja2dyb3VuZCBHcmlkXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNob3cgYSBncmlkIGJhY2tncm91bmQgb24gYW55IGVsZW1lbnQuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIGJhY2tncm91bmQtZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGdyaWQ7XG4gICRfb3V0cHV0ICA6IGdldC1iYWNrZ3JvdW5kKCRncmlkKTtcblxuICBAaWYgbGVuZ3RoKCRfb3V0cHV0KSA+IDAge1xuICAgICRfZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpO1xuXG4gICAgJF9pbWFnZTogKCk7XG4gICAgQGVhY2ggJG5hbWUsICRsYXllciBpbiBtYXAtZ2V0KCRfb3V0cHV0LCBpbWFnZSkge1xuICAgICAgJF9kaXJlY3Rpb246IGlmKCRuYW1lID09IGJhc2VsaW5lLCB0byBib3R0b20sIHRvIHRvKCRfZmxvdykpO1xuICAgICAgJF9pbWFnZTogYXBwZW5kKCRfaW1hZ2UsIGxpbmVhci1ncmFkaWVudCgkX2RpcmVjdGlvbiwgJGxheWVyKSwgY29tbWEpO1xuICAgIH1cbiAgICAkX291dHB1dDogbWFwLW1lcmdlKCRfb3V0cHV0LCAoaW1hZ2U6ICRfaW1hZ2UpKTtcblxuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICAgIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChiYWNrZ3JvdW5kLWdyaWQsICRpbnNwZWN0KTtcbiAgfVxufVxuXG5cbi8vIE92ZXJsYXkgR3JpZFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBHZW5lcmF0ZSBhbiBpY29uIHRvIHRyaWdnZXIgZ3JpZC1vdmVybGF5cyBvbiBhbnkgZ2l2ZW4gZWxlbWVudHMuXG4vLyAkZ3JpZHMuLi4gIDogPHNlbGVjdG9yPiBbPHNldHRpbmdzPl0gWywgPHNlbGVjdG9yPl0qXG5AbWl4aW4gb3ZlcmxheS1ncmlkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGlmIG5vdCgkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHMpIHtcbiAgICBAYXQtcm9vdCBoZWFkIHsgQGluY2x1ZGUgb3ZlcmxheS1oZWFkKCRncmlkKTsgfVxuICAgIEBhdC1yb290IGhlYWQ6YmVmb3JlIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpob3ZlciB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlci1ob3ZlcjsgfVxuICAgICRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgaGVhZDpob3ZlciB+ICYsXG4gIGhlYWQ6aG92ZXIgfiBib2R5ICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLW92ZXJsYXktYmFzZTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlciB7XG4gIGNvbnRlbnQ6IFwifHx8XCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udDoge1xuICAgIGZhbWlseTogc2Fucy1zZXJpZjtcbiAgICBzaXplOiAxNnB4O1xuICAgIHdlaWdodDogYm9sZDtcbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXIgSG92ZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXItaG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuNSk7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgSGVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGhlYWQ+IHN0eWxlcyB0byBjcmVhdGUgZ3JpZCBvdmVybGF5IHRvZ2dsZVxuQG1peGluIG92ZXJsYXktaGVhZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRfdG9nZ2xlOiBkZWJ1Zy1nZXQodG9nZ2xlLCAkZ3JpZCk7XG4gICRfaG9yejogbnVsbDtcbiAgJF92ZXJ0OiBudWxsO1xuXG4gIEBlYWNoICRzaWRlIGluICRfdG9nZ2xlIHtcbiAgICAkX2hvcno6IGlmKCRzaWRlID09IGxlZnQgb3IgJHNpZGUgPT0gcmlnaHQsICRzaWRlLCAkX2hvcnopO1xuICAgICRfdmVydDogaWYoJHNpZGUgPT0gdG9wIG9yICRzaWRlID09IGJvdHRvbSwgJHNpZGUsICRfdmVydCk7XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICAjeyRfaG9yen06IDEwcHg7XG4gICN7JF92ZXJ0fTogMTBweDtcbiAgei1pbmRleDogOTk5O1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjI1KTtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gR3JpZCBPdmVybGF5IEJhc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmFzZSBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIG92ZXJsYXlcbkBtaXhpbiBncmlkLW92ZXJsYXktYmFzZSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICB6LWluZGV4OiA5OTg7XG59XG5cblxuLy8gR2V0IFN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLXN5bShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgICAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9ndXR0ZXJzICAgICAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGdyaWQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRncmlkKTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGdyaWQpO1xuXG4gICRfY29sb3IgICAgICAgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfdHJhbnMgICAgICAgICA6IHRyYW5zcGFyZW50O1xuICAkX2xpZ2h0ICAgICAgICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG5cbiAgJF9lbmQgICAgICAgICAgIDogMSArICRfZ3V0dGVycztcbiAgJF9hZnRlciAgICAgICAgIDogcGVyY2VudGFnZSgxLyRfZW5kKTtcbiAgJF9zdG9wcyAgICAgICAgIDogKCk7XG4gICRfc2l6ZSAgICAgICAgICA6IHNwYW4oMSAkZ3JpZCB3aWRlKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodDtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3BsaXQ6ICRfZ3V0dGVycy8yO1xuICAgICRfYmVmb3JlOiBwZXJjZW50YWdlKCRfc3BsaXQvJF9lbmQpO1xuICAgICRfYWZ0ZXI6IHBlcmNlbnRhZ2UoKDEgKyAkX3NwbGl0KS8kX2VuZCk7XG4gICAgJF9zdG9wczogJF90cmFucyAkX2JlZm9yZSwgJF9jb2xvciAkX2JlZm9yZSwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9XG5cbiAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICRfc2l6ZTogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkgKiAkX2VuZDtcbiAgfVxuXG4gICRfb3V0cHV0OiAoXG4gICAgaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSxcbiAgICBzaXplOiAkX3NpemUsXG4gICk7XG5cbiAgQHJldHVybiAkX291dHB1dDtcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEluc2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1pbnNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgU3BsaXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1zcGxpdChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRzdGFydCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuXG4gICAgJF9lbmQ6ICRzdGFydCArIHNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRfZW5kLCBjb21tYSk7XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIE91dHNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLW91dHNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfdHJhbnMgICA6IHRyYW5zcGFyZW50O1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGd1dHRlcjogZ2V0LXNwYW4td2lkdGgoZmlyc3QgJGxvY2F0aW9uICRncmlkKTtcblxuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuXG4gICAgICAkZ3V0dGVyOiAkX2xpZ2h0ICRndXR0ZXIsICRfdHJhbnMgJGd1dHRlciwgJF90cmFucyAkX2VuZDtcbiAgICAgICR0aGlzLXN0b3A6IGpvaW4oJHRoaXMtc3RvcCwgJGd1dHRlciwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtYXN5bShcbiAgJGdyaWRcbikge1xuICAkX3N0b3BzOiAoKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0taW5zaWRlKCRncmlkKTtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLXNwbGl0KCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tb3V0c2lkZSgkZ3JpZCk7XG4gIH1cblxuICBAcmV0dXJuIChpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpKTtcbn1cblxuXG4vLyBHZXQgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9zaG93ICAgIDogc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKTtcbiAgJF9yZXR1cm4gIDogKCk7XG5cbiAgQGlmICRfc2hvdyBhbmQgJF9zaG93ICE9ICdoaWRlJyB7XG4gICAgJF9jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICAkX3N5bTogaXMtc3ltbWV0cmljYWwoJF9jb2x1bW5zKTtcbiAgICAgICRfcmV0dXJuOiBpZigkX3N5bSwgZ2V0LWJhY2tncm91bmQtc3ltKCRncmlkKSwgZ2V0LWJhY2tncm91bmQtYXN5bSgkZ3JpZCkpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGNvbnRlbnQtYm94KSk7XG4gICAgfVxuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1jb2x1bW5zJ1xuICAgICAgYW5kIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoYmFzZS1saW5lLWhlaWdodClcbiAgICAgIGFuZCB0eXBlLW9mKCRiYXNlLWxpbmUtaGVpZ2h0KSA9PSAnbnVtYmVyJ1xuICAgICAgYW5kIG5vdCB1bml0bGVzcygkYmFzZS1saW5lLWhlaWdodCkge1xuICAgICAgJF9jb2xvcjogdmFyaWFibGUtZXhpc3RzKCdncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3InKTtcbiAgICAgICRfY29sb3I6IGlmKCRfY29sb3IsICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICMwMDApO1xuXG4gICAgICAkX2ltYWdlOiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSk7XG4gICAgICAkX3NpemU6IG1hcC1nZXQoJF9yZXR1cm4sIHNpemUpO1xuICAgICAgJF9iYXNlbGluZTogKGJhc2VsaW5lOiAoJF9jb2xvciAxcHgsIHRyYW5zcGFyZW50IDFweCkpO1xuICAgICAgJF9iYXNlbGluZS1zaXplOiAxMDAlICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoXG4gICAgICAgIGltYWdlOiBpZigkX2ltYWdlLCBtYXAtbWVyZ2UoJF9pbWFnZSwgJF9iYXNlbGluZSksICRfYmFzZWxpbmUpLFxuICAgICAgICBzaXplOiBpZigkX3NpemUsICgkX3NpemUsICRfYmFzZWxpbmUtc2l6ZSksICRfYmFzZWxpbmUtc2l6ZSksXG4gICAgICApKTtcblxuICAgICAgQGlmICRfc2hvdyA9PSAnc2hvdycge1xuICAgICAgICAkX2NsaXA6IG1hcC1nZXQoJF9yZXR1cm4sIGNsaXApO1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogam9pbigkX2NsaXAsIGJvcmRlci1ib3gsIGNvbW1hKSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJF9zaG93ID09ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICBAd2FybiAnUGxlYXNlIHByb3ZpZGUgYSAkYmFzZS1saW5lLWhlaWdodCB3aXRoIHRoZSBkZXNpcmVkIGhlaWdodCBhbmQgdW5pdHMnO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSkge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChmbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gR2V0IERlYnVnXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgdmFsdWUgb2YgYSBkZWJ1ZyBzZXR0aW5nXG4vLyAtICRrZXk6IDxzZXR0aW5nPlxuQGZ1bmN0aW9uIGRlYnVnLWdldChcbiAgJGtleSxcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGtleTogam9pbihkZWJ1ZywgJGtleSwgc3BhY2UpO1xuICBAcmV0dXJuIHN1c3ktZ2V0KCRrZXksICRncmlkKTtcbn1cbiIsIi8vIENvbnRhaW5lciBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBjb250YWluZXIgZWxlbWVudFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQG1peGluIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgICA6ICRsYXlvdXQ7XG4gICRsYXlvdXQgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcblxuICAkX3dpZHRoICAgICA6IGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG4gICRfanVzdGlmeSAgIDogcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKHN1c3ktZ2V0KGNvbnRhaW5lci1wb3NpdGlvbiwgJGxheW91dCkpO1xuICAkX3Byb3BlcnR5ICA6IGlmKHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpID09IHN0YXRpYywgd2lkdGgsIG1heC13aWR0aCk7XG5cbiAgJF9ib3ggICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkbGF5b3V0KTtcblxuICBAaWYgJF9ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJF9ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChjb250YWluZXIsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgZmxvYXQtY29udGFpbmVyKCRfd2lkdGgsICRfanVzdGlmeSwgJF9wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0KTtcbn1cblxuLy8gQ29udGFpbmVyIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gIEByZXR1cm4gZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbn1cblxuLy8gR2V0IENvbnRhaW5lciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIHRoZSBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWNvbnRhaW5lci13aWR0aChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0ICAgICAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX3dpZHRoICAgICAgICAgOiBzdXN5LWdldChjb250YWluZXIsICRsYXlvdXQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRsYXlvdXQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkbGF5b3V0KTtcblxuICBAaWYgbm90KCRfd2lkdGgpIG9yICRfd2lkdGggPT0gYXV0byB7XG4gICAgQGlmIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpIHtcbiAgICAgICRfY29sdW1ucyAgIDogc3VzeS1nZXQoY29sdW1ucywgJGxheW91dCk7XG4gICAgICAkX2d1dHRlcnMgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRsYXlvdXQpO1xuICAgICAgJF9zcHJlYWQgICAgOiBpZihpcy1zcGxpdCgkbGF5b3V0KSwgd2lkZSwgbmFycm93KTtcbiAgICAgICRfd2lkdGggICAgIDogc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSAqICRfY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF93aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfd2lkdGg7XG59XG5cbi8vIFBhcnNlIENvbnRhaW5lciBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZSB0aGUgJGNvbnRhaW5lci1wb3NpdGlvbiBpbnRvIG1hcmdpbiB2YWx1ZXMuXG4vLyAtIFskanVzdGlmeV0gICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IDxsZW5ndGg+IFs8bGVuZ3RoPl1cbkBmdW5jdGlvbiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oXG4gICRqdXN0aWZ5OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBjb250YWluZXItcG9zaXRpb24pXG4pIHtcbiAgJF9yZXR1cm46IGlmKCRqdXN0aWZ5ID09IGxlZnQsIDAsIGF1dG8pIGlmKCRqdXN0aWZ5ID09IHJpZ2h0LCAwLCBhdXRvKTtcblxuICBAaWYgbm90KGluZGV4KGxlZnQgcmlnaHQgY2VudGVyLCAkanVzdGlmeSkpIHtcbiAgICAkX3JldHVybjogbnRoKCRqdXN0aWZ5LCAxKTtcbiAgICAkX3JldHVybjogJF9yZXR1cm4gaWYobGVuZ3RoKCRqdXN0aWZ5KSA+IDEsIG50aCgkanVzdGlmeSwgMiksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIElzb2xhdGlvbiBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuXG4vLyBJc29sYXRlIFtNaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGlzb2xhdGlvbiBhcyBhbiBvdmVycmlkZS5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBtaXhpbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpbnNwZWN0OiAkaXNvbGF0ZTtcblxuICAkb3V0cHV0OiAoXG4gICAgcHVzaDogaXNvbGF0ZSgkaXNvbGF0ZSksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGlzb2xhdGUpLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChpc29sYXRlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGlzb2xhdGUtb3V0cHV0KCRvdXRwdXQuLi4pO1xufVxuXG5cbi8vIElzb2xhdGUgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYW4gaXNvbGF0aW9uIG9mZnNldCB3aWR0aC5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBmdW5jdGlvbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpc29sYXRlOiBwYXJzZS1zcGFuKCRpc29sYXRlKTtcbiAgJGlzb2xhdGlvbjogc3VzeS1nZXQoc3BhbiwgJGlzb2xhdGUpO1xuXG4gIEBpZiAkaXNvbGF0aW9uIGFuZCBub3QoZ2V0LWxvY2F0aW9uKCRpc29sYXRlKSkge1xuICAgICRuZXc6IChcbiAgICAgIHNwYW46IG51bGwsXG4gICAgICBsb2NhdGlvbjogJGlzb2xhdGlvbixcbiAgICApO1xuICAgICRpc29sYXRlOiBtYXAtbWVyZ2UoJGlzb2xhdGUsICRuZXcpO1xuICB9XG5cbiAgQHJldHVybiBnZXQtaXNvbGF0aW9uKCRpc29sYXRlKTtcbn1cblxuXG4vLyBHZXQgSXNvbGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGhcbi8vIC0gJGlucHV0OiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1pc29sYXRpb24oXG4gICRpbnB1dFxuKSB7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRpbnB1dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGlucHV0KTtcbiAgJHdpZHRoICAgICAgOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyIGFuZCBub3QodW5pdGxlc3MoJGxvY2F0aW9uKSkge1xuICAgICR3aWR0aDogJGxvY2F0aW9uO1xuICB9IEBlbHNlIGlmICRsb2NhdGlvbiB7XG4gICAgJHB1c2g6ICRsb2NhdGlvbiAtIDE7XG4gICAgQGlmICRwdXNoID4gMCB7XG4gICAgICAkcHVzaDogbWFwLW1lcmdlKCRpbnB1dCwgKFxuICAgICAgICBzcGFuOiAkcHVzaCxcbiAgICAgICAgbG9jYXRpb246IDEsXG4gICAgICAgIHNwcmVhZDogd2lkZSxcbiAgICAgICkpO1xuICAgICAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkcHVzaCk7XG4gICAgfVxuICB9XG5cbiAgQGlmIHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGlucHV0KSA9PSBzcGxpdFxuICAgICAgYW5kIHN1c3ktZ2V0KGd1dHRlcnMsICRpbnB1dCkgPiAwIHtcbiAgICAkd2lkdGg6IGlmKCR3aWR0aCA9PSBudWxsLCBndXR0ZXJzKCRpbnB1dCksICR3aWR0aCArIGd1dHRlcnMoJGlucHV0KSk7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aCBvciAwO1xufVxuIiwiLy8gR2FsbGVyeSBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIEdhbGxlcnlcbi8vIC0tLS0tLS1cbi8vIENyZWF0ZSBhbiBpc29sYXRlZCBnYWxsZXJ5XG4vLyAtICRzcGFuICAgICAgICA6IDxzcGFuPlxuLy8gLSBbJHNlbGVjdG9yXSAgOiBjaGlsZCB8IG9mLXR5cGVcbkBtaXhpbiBnYWxsZXJ5KFxuICAkc3BhbixcbiAgJHNlbGVjdG9yOiBjaGlsZFxuKSB7XG4gICRpbnNwZWN0ICAgIDogJHNwYW47XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRzcGFuICAgICAgIDogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246IDEpKTtcblxuICAkbiAgICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkY29udGV4dCAgICAgIDogc3VzeS1jb3VudCgkY29sdW1ucyk7XG4gICRmbG93ICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG5cbiAgJGluc2lkZSAgICAgICA6IGlzLWluc2lkZSgkc3Bhbik7XG4gICRmcm9tICAgICAgICAgOiBmcm9tKCRmbG93KTtcbiAgJGxpbmUgICAgICAgICA6IGZsb29yKCRjb250ZXh0IC8gJG4pO1xuICAkc3ltbWV0cmljYWwgIDogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aCAgICAgICAgICAgICA6IG51bGwsXG4gICAgZmxvYXQgICAgICAgICAgICAgOiBmcm9tLFxuICAgIG1hcmdpbi1iZWZvcmUgICAgIDogbnVsbCxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IG51bGwsXG4gICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICApO1xuXG4gIEBpZiAkaW5zaWRlIHtcbiAgICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAoXG4gICAgICBwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKSxcbiAgICAgIHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKSxcbiAgICApKTtcbiAgfVxuXG4gIEBpZiAkc3ltbWV0cmljYWwge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAod2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKSkpO1xuICB9XG5cbiAgJGJveCAgICAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGdsb2JhbC1ib3ggICA6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSA9PSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2FsbGVyeSwgJGluc3BlY3QpO1xuXG4gIC8vIENvbGxlY3RpdmUgT3V0cHV0XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggb3IgKCRpbnNpZGUgYW5kIG5vdCgkYm94KSBhbmQgbm90KCRnbG9iYWwtYm94KSkge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogYm9yZGVyLWJveCkpO1xuICB9IEBlbHNlIGlmICRib3ggPT0gY29udGVudC1ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogY29udGVudC1ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIC8vIEluZGl2aWR1YWwgTG9vcFxuICBAZm9yICRpdGVtIGZyb20gMSB0aHJvdWdoICRsaW5lIHtcbiAgICAkbnRoOiAnI3skbGluZX1uICsgI3skaXRlbX0nO1xuICAgICY6bnRoLSN7JHNlbGVjdG9yfSgjeyRudGh9KSB7XG4gICAgICAvLyBJbmRpdmlkdWFsIFByZXBcbiAgICAgICRvdXRwdXQ6IChcbiAgICAgICAgd2lkdGggICAgICAgICAgICAgOiBpZigkc3ltbWV0cmljYWwsIG51bGwsIGdldC1zcGFuLXdpZHRoKCRzcGFuKSksXG4gICAgICAgIGZsb2F0ICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgbWFyZ2luLWJlZm9yZSAgICAgOiBnZXQtaXNvbGF0aW9uKCRzcGFuKSxcbiAgICAgICAgbWFyZ2luLWFmdGVyICAgICAgOiAtMTAwJSxcbiAgICAgICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgICAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICAgICApO1xuXG4gICAgICAvLyBJbmRpdmlkdWFsIE91dHB1dFxuICAgICAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgICAgIEBpZiBnZXQtZWRnZSgkc3BhbikgPT0gZmlyc3Qge1xuICAgICAgICBAaW5jbHVkZSBicmVhaztcbiAgICAgICAgQGluY2x1ZGUgZmlyc3QoJHNwYW4pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgTG9jYXRpb24gSW5jcmVtZW50XG4gICAgICAkbG9jYXRpb246IGdldC1sb2NhdGlvbigkc3BhbikgKyAkbjtcbiAgICAgICRsb2NhdGlvbjogaWYoJGxvY2F0aW9uID4gJGNvbnRleHQsIDEsICRsb2NhdGlvbik7XG4gICAgICAkc3BhbjogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246ICRsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZ3V0dGVyIDogZ3V0dGVyKCRzcGFuKTtcbiAgJHNwYW4gICA6IHNwYW4oJHNwYW4pO1xuICAkd2lkdGggIDogaWYoJHNwbGl0IGFuZCAkZ3V0dGVyLCAkc3BhbiArICRndXR0ZXIsICRzcGFuKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNxdWlzaCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmUoJHByZSk7XG4gIEBpbmNsdWRlIHBvc3QoJHBvc3QpO1xufVxuIiwiLy8gUGFkZGluZyBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmVmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFN1ZmZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzdWZmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHN1ZmZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUGFkXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBwYWQoXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocGFkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZWZpeCgkcHJlKTtcbiAgQGluY2x1ZGUgc3VmZml4KCRwb3N0KTtcblxufVxuIiwiLy8gQmxlZWQgU3ludGF4XG4vLyA9PT09PT09PT09PT1cblxuLy8gQmxlZWRcbi8vIC0tLS0tXG4vLyBBZGQgbmVnYXRpdmUgbWFyZ2lucywgYW5kIGVxdWFsIHBvc2l0aXZlIHBhZGRpbmcgdG8gY3JlYXRlIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQoXG4gICRibGVlZDogMCBndXR0ZXIoKVxuKSB7XG4gICRpbnNwZWN0ICA6ICRibGVlZDtcbiAgJG91dHB1dCAgIDogZ2V0LWJsZWVkKCRibGVlZCk7XG5cbiAgQGlmIHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSBjb250ZW50LWJveCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKChib3gtc2l6aW5nOiBjb250ZW50LWJveCksICRvdXRwdXQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJsZWVkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuXG4vLyBCbGVlZC14XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgaG9yaXpvbnRhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXgoXG4gICRibGVlZDogZ3V0dGVyKClcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAyKSAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXggb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEJsZWVkLXlcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciB2ZXJ0aWNhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXkoXG4gICRibGVlZDogaWYoZnVuY3Rpb24tZXhpc3RzKHJoeXRobSksIHJoeXRobSgxKSwgMWVtKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwIG50aCgkdHJibCwgMikgMCkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteSBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gR2V0IEJsZWVkXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBibGVlZCBvdXRwdXQgdmFsdWVzXG4vLyAtICRibGVlZDogPHNwYW4+XG5AZnVuY3Rpb24gZ2V0LWJsZWVkKFxuICAkYmxlZWRcbikge1xuICAkYmxlZWQgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJGJsZWVkKSk7XG4gICR0cmJsICAgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG4gICRzaG9ydCAgICA6IG51bGw7XG4gICRvdXRwdXQgICA6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR0cmJsKSB7XG4gICAgJHRoaXM6IG50aCgkdHJibCwgJGkpO1xuICAgICRuZXc6ICgpO1xuICAgICRtYXJnaW46IG51bGw7XG4gICAgJHBhZGRpbmc6IG51bGw7XG4gICAgJHBhZGRpbmcteDogbnVsbDtcblxuICAgIEBpZiAkdGhpcyA+IDAge1xuICAgICAgJHRoaXM6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAkdGhpcykpO1xuICAgICAgJG1hcmdpbjogc3BhbigkdGhpcyk7XG4gICAgICAkcGFkZGluZzogJG1hcmdpbjtcbiAgICAgICRwYWRkaW5nLXg6ICRwYWRkaW5nO1xuICAgIH1cblxuICAgIEBpZiAkbWFyZ2luIGFuZCAkbWFyZ2luID4gMCB7XG4gICAgICAkbWFyZ2luOiAtICRtYXJnaW47XG5cbiAgICAgIEBpZiBpcy1pbnNpZGUoJHRoaXMpIHtcbiAgICAgICAgJGd1dHRlcjogZ3V0dGVyKCR0aGlzKTtcbiAgICAgICAgJGpvaW46IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHBhZGRpbmcsICRndXR0ZXIpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICRwYWRkaW5nLXg6IGlmKCRqb2luIGFuZCAkcGFkZGluZyA+IDAsICRwYWRkaW5nICsgJGd1dHRlciwgJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAyIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDMge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gNCB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAkbmV3KTtcbiAgfVxuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG91dHB1dCB7XG4gICAgJG91dHB1dDogaWYoJHZhbHVlID09IDAsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJHByb3A6IG51bGwpKSwgJG91dHB1dCk7XG4gIH1cblxuICBAcmV0dXJuIGJsZWVkLXNob3J0aGFuZCgkb3V0cHV0KTtcbn1cblxuLy8gQmxlZWQgU2hvcnRoYW5kXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENvbnZlcnQgYmxlZWQgb3V0cHV0IGludG8gc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuXG4vLyAtICRibGVlZDogPG91dHB1dCBtYXA+XG5AZnVuY3Rpb24gYmxlZWQtc2hvcnRoYW5kKFxuICAkYmxlZWRcbikge1xuICAkbWFyZ2luOiAoKTtcbiAgJHBhZGRpbmc6ICgpO1xuICAkcmV0dXJuOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJsZWVkIHtcbiAgICBAaWYgc3RyLWluZGV4KCRrZXksIG1hcmdpbikge1xuICAgICAgJG1hcmdpbjogbWFwLW1lcmdlKCRtYXJnaW4sICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIGlmIHN0ci1pbmRleCgka2V5LCBwYWRkaW5nKSA+IDAge1xuICAgICAgJHBhZGRpbmc6IG1hcC1tZXJnZSgkcGFkZGluZywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICRwcm9wczogKFxuICAgIG1hcmdpbjogJG1hcmdpbixcbiAgICBwYWRkaW5nOiAkcGFkZGluZyxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJG1hcCBpbiAkcHJvcHMge1xuICAgICRmb3VyOiBpZihsZW5ndGgobWFwLWtleXMoJG1hcCkpID09IDQsIHRydWUsIGZhbHNlKTtcbiAgICAkbnVsbDogaWYoaW5kZXgobWFwLXZhbHVlcygkbWFwKSwgbnVsbCksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkZm91ciBhbmQgbm90KCRudWxsKSB7XG4gICAgICAkdG9wOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS10b3AnKTtcbiAgICAgICRyaWdodDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tcmlnaHQnKTtcbiAgICAgICRib3R0b206IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWJvdHRvbScpO1xuICAgICAgJGxlZnQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWxlZnQnKTtcblxuICAgICAgJHRiOiBpZigkdG9wID09ICRib3R0b20sICR0b3AsIG51bGwpO1xuICAgICAgJHJsOiBpZigkcmlnaHQgPT0gJGxlZnQsICRyaWdodCwgbnVsbCk7XG4gICAgICAkYWxsOiBpZigkdGIgPT0gJHJsLCAkdGIsIG51bGwpO1xuXG4gICAgICAkbmV3OiBpZigkYWxsLCAkYWxsLCBudWxsKTtcblxuICAgICAgQGlmIG5vdCgkbmV3KSB7XG4gICAgICAgIEBpZiAkdGIgYW5kICRybCB7XG4gICAgICAgICAgJG5ldzogJHRiICRybDtcbiAgICAgICAgfSBAZWxzZSBpZiAkcmwge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJsICRib3R0b207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJpZ2h0ICRib3R0b20gJGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmFtZTogJG5ldykpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICRtYXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cbiIsIi8qXG4qIFNjdXQsIGEgY29sbGVjdGlvbiBvZiBTYXNzIHV0aWxpdGllc1xuKiB0byBlYXNlIGFuZCBpbXByb3ZlIG91ciBpbXBsZW1lbnRhdGlvbnMgb2YgY29tbW9uIHN0eWxlLWNvZGUgcGF0dGVybnMuXG4qIHYxLjQuMFxuKiBEb2NzIGF0IGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0XG4qL1xuXG5AbWl4aW4gc2N1dC1jbGVhcmZpeCB7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNsZWFyZml4IHtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtdW5zdHlsZWQoXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCk7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1mbG9hdGVkIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJGRpcjogbGVmdCxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xuXG4gICYgPiBsaSB7XG4gICAgZmxvYXQ6ICRkaXI7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tI3skZGlyfTogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtZmxvYXRlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkO1xufVxuXG5AZnVuY3Rpb24gc2N1dC1hdXRvT3JWYWx1ZSAoJHZhbCkge1xuICBAaWYgJHZhbCA9PSBhIG9yICR2YWwgPT0gYXV0byB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtY29vcmRzIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICAkdG9wOiBudGgoJGNvb3JkaW5hdGVzLCAxKTtcbiAgJHJpZ2h0OiBudGgoJGNvb3JkaW5hdGVzLCAyKTtcbiAgJGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyk7XG4gICRsZWZ0OiBudGgoJGNvb3JkaW5hdGVzLCA0KTtcblxuICBAaWYgJHRvcCAhPSBuIHtcbiAgICB0b3A6IHNjdXQtYXV0b09yVmFsdWUoJHRvcCk7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBuIHtcbiAgICByaWdodDogc2N1dC1hdXRvT3JWYWx1ZSgkcmlnaHQpO1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG4ge1xuICAgIGJvdHRvbTogc2N1dC1hdXRvT3JWYWx1ZSgkYm90dG9tKTtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbiB7XG4gICAgbGVmdDogc2N1dC1hdXRvT3JWYWx1ZSgkbGVmdCk7XG4gIH1cblxufVxuQGZ1bmN0aW9uIHNjdXQtc3RyaXAtdW5pdCAoXG4gICRudW1cbikge1xuXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1lbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtZW0gKFxuICAkcGl4ZWxzLFxuICAkYmFzZTogJHNjdXQtZW0tYmFzZVxuKSB7XG5cbiAgLy8gJGJhc2UgY291bGQgYmUgaW4gZW0gb3IgcHggKG5vIHVuaXQgPSBweCkuXG4gIC8vIEFkanVzdCBhY2NvcmRpbmdseSB0byBjcmVhdGUgYSAkZGl2aXNvciB0aGF0XG4gIC8vIHNlcnZlcyBhcyBjb250ZXh0IGZvciAkcGl4ZWxzLlxuICAkbXVsdGlwbGllcjogaWYodW5pdCgkYmFzZSkgPT0gZW0sIDE2LCAxKTtcbiAgJGRpdmlzb3I6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZSkgKiAkbXVsdGlwbGllcjtcblxuICAkZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1lbXM6IChzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkZGl2aXNvcikgKiAxZW07XG4gICAgJGVtLXZhbHM6IGFwcGVuZCgkZW0tdmFscywgJHZhbC1pbi1lbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZW0tdmFscztcbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1yZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LXJlbSAoXG4gICRwaXhlbHNcbikge1xuXG4gICRyZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1yZW1zOiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkc2N1dC1yZW0tYmFzZSAqIDFyZW07XG4gICAgJHJlbS12YWxzOiBhcHBlbmQoJHJlbS12YWxzLCAkdmFsLWluLXJlbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcmVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkcmVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRyZW0tdmFscztcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1ib3JkZXIgKFxuICAkc3R5bGUsXG4gICRzaWRlczogbiB5XG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaWRlcykgPT0gMiB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaWRlcykgPT0gNCB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDMpICE9IG4ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgNCkgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlNjdXQtYm9yZGVyIHJlcXVpcmVzIGEgJHNpZGVzIGFyZ3VtZW50IG9mIDIgb3IgNCB2YWx1ZXMuXCJcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jaXJjbGUgKFxuICAkc2l6ZSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBAaWYgJGNvbG9yID09IGluaGVyaXQge1xuICAgIC8vIElmIHVzZXIgd2FudHMgdG8gaW5oZXJpdCB0aGUgY29sb3IsXG4gICAgLy8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBib3JkZXJcbiAgICAvLyBjb2xvciBkZWZhdWx0cyB0byB0aGUgdGV4dCBjb2xvciBvZiB0aGUgZWxlbWVudC5cbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGhlaWdodDogMDtcbiAgICB3aWR0aDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHVzZSBiYWNrZ3JvdW5kLWNvbG9yLlxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jb2xvci1zd2FwIChcbiAgJG9mZixcbiAgJG9uLFxuICAkZHVyYXRpb246IDAsXG4gICRiZzogZmFsc2Vcbikge1xuXG4gICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IG51bGw7XG4gICRvZmYtaXMtbGlzdDogdHlwZS1vZigkb2ZmKSA9PSBsaXN0O1xuICAkb24taXMtbGlzdDogdHlwZS1vZigkb24pID09IGxpc3Q7XG5cbiAgLy8gSWYgJG9mZiBJUyBhIGxpc3QsXG4gIC8vIGFzc2lnbiBjb2xvciBhbmQgYmFja2dyb3VuZC1jb2xvci5cbiAgQGlmICRvZmYtaXMtbGlzdCB7XG4gICAgY29sb3I6IG50aCgkb2ZmLCAxKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9mZiwgMik7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvciwgY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBUUlVFLFxuICAvLyBhc3NpZ24gYmFja2dyb3VuZC1jb2xvci5cbiAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9mZi1pcy1saXN0KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgRkFMU0UsXG4gIC8vIGFzc2lnbiBjb2xvci5cbiAgQGVsc2Uge1xuICAgIGNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGNvbG9yO1xuICB9XG5cbiAgLy8gT25seSBzZXQtdXAgdHJhbnNpdGlvbiBpZiAkZHVyYXRpb24gIT0gMC5cbiAgQGlmICRkdXJhdGlvbiAhPSAwIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzO1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuXG4gICAgLy8gJG9uIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgJG9mZiwgYWJvdmUuXG4gICAgQGlmICRvbi1pcy1saXN0IHtcbiAgICAgIGNvbG9yOiBudGgoJG9uLCAxKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb24sIDIpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvbi1pcy1saXN0KSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb247XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgY29sb3I6ICRvbjtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtaGQtYnAgKFxuICAkcmF0aW86IDEuM1xuKSB7XG5cbiAgQG1lZGlhICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAoJHJhdGlvIC8gMSkpLFxuICAgICAgICAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgICAgICAgIChtaW4tcmVzb2x1dGlvbjogKHJvdW5kKDk2ICogJHJhdGlvKSAqIDFkcGkpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oaWRlLXZpc3VhbGx5IHtcblxuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcblxufVxuXG4lc2N1dC1oaWRlLXZpc3VhbGx5IHtcbiAgQGluY2x1ZGUgc2N1dC1oaWRlLXZpc3VhbGx5O1xufVxuQG1peGluIHNjdXQtaW1hZ2UtcmVwbGFjZSB7XG5cbiAgdGV4dC1pbmRlbnQ6IDEwMiU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG5cbn1cblxuJXNjdXQtaW1hZ2UtcmVwbGFjZSB7XG4gIEBpbmNsdWRlIHNjdXQtaW1hZ2UtcmVwbGFjZTtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LXJlbSBhbmQgc2N1dC1zdHJpcC11bml0XG5cbkBtaXhpbiBzY3V0LXJlbS1mYWxsYmFjayAoXG4gICRwaXhlbHMsXG4gICRwcm9wZXJ0eTogZm9udC1zaXplXG4pIHtcblxuICAkcHgtdmFsczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXB4OiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgKiAxcHg7XG4gICAgJHB4LXZhbHM6IGFwcGVuZCgkcHgtdmFscywgJHZhbC1pbi1weCk7XG4gIH1cbiAgJHJlbS12YWxzOiBzY3V0LXJlbSgkcGl4ZWxzKTtcblxuICAjeyRwcm9wZXJ0eX06ICRweC12YWxzO1xuICAjeyRwcm9wZXJ0eX06ICRyZW0tdmFscztcblxufVxuQG1peGluIHNjdXQtcmVzZXQtYm9yZGVyLWJveCB7XG4gIC8vIE1ha2UgZXZlcnl0aGluZyBhIGJvcmRlci1ib3gsIGJlY2F1c2Ugd2h5IG5vdD9cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1hbnRpYWxpYXMge1xuICAvLyBBbnRpYWxpYXMhXG4gIGJvZHkge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXNlbWFudGljaXplIHtcbiAgLy8gTWFrZSBoZWFkZXJzIGFuZCA8Yj4gc2VtYW50aWMsIG5vdCBwcmVzZW50YXRpb25hbC5cbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wb2ludGVyIHtcbiAgLy8gQ2xpY2thYmxlIGZvcm0gZWxlbWVudHMgc2hvdWxkIGhhdmUgYSBwb2ludGVyLlxuICBsYWJlbCxcbiAgc2VsZWN0LFxuICBvcHRpb24sXG4gIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZvcm0ge1xuICBmaWVsZHNldCB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWJ1dHRvbiB7XG4gIC8vIFJlc2V0IGRlZmF1bHQgYnV0dG9uIHN0eWxlcywgd2hpY2ggYXJlIG5ldmVyIHVzZWQuXG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdLFxuICBbdHlwZT1cInJlc2V0XCJdIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogYXV0bztcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBhcmFncmFwaCB7XG4gIC8vIFNvbWUgcGFyYWdyYXBoIG1hcmdpbnMganVzdCBnZXQgaW4gdGhlIHdheS5cbiAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LW1lZGlhIHtcbiAgLy8gWW91IHdhbnQgdGhlc2UgZWxlbWVudHMgZmx1aWQsIHByb2JhYmx5LlxuICBpbWcsXG4gIHZpZGVvIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZpZ3VyZSB7XG4gIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbnMuXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8vIENhbGwgdGhlbSBhbGwsIG1pbnVzIGV4Y2x1c2lvbnMhXG5AbWl4aW4gc2N1dC1yZXNldCAoJGV4Y2x1ZGU6IGZhbHNlKSB7XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJvcmRlci1ib3gpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1ib3JkZXItYm94O1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGFudGlhbGlhcykpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWFudGlhbGlhcztcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBzZW1hbnRpY2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXNlbWFudGljaXplO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBvaW50ZXIpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wb2ludGVyO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZvcm0pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1mb3JtO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJ1dHRvbikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJ1dHRvbjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwYXJhZ3JhcGgpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wYXJhZ3JhcGg7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgbWVkaWEpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1tZWRpYTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmaWd1cmUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1maWd1cmU7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtc2VsZWN0ZWQgKFxuICAkYWN0aXZlOiBmYWxzZVxuKSB7XG5cbiAgQGlmICRhY3RpdmUge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtdHJpYW5nbGUgKFxuICAkZGlyZWN0aW9uOiByaWdodCxcbiAgJHNpemU6IDAuNzVlbSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIC8vIEZvciBpbXByb3ZlZCBhcHBlYXJhbmNlIGluIHNvbWUgV2Via2l0IGJyb3dzZXJzXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcblxuICAvLyBTZXQgdXAgc29tZSB2YXJpYWJsZXNcbiAgJHdpZHRoOiBudWxsO1xuICAkaGVpZ2h0OiBudWxsO1xuICAkYm9yZGVyLXdpZHRoczogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gbGlzdCB7XG4gICAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR3aWR0aDogJHNpemU7XG4gICAgJGhlaWdodDogJHNpemU7XG4gIH1cblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICAvLyBGb3IgdXAgYW5kIGRvd24sIHdpZHRoIGdldHMgdHdvIGJvcmRlcnMgYnV0IGhlaWdodCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgc2Vjb25kIGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICRoZWlnaHQgKCR3aWR0aCAvIDIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgLy8gRm9yIHJpZ2h0IGFuZCBsZWZ0LCBoZWlnaHQgZ2V0cyB0d28gYm9yZGVycyBidXQgd2lkdGggb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIGZpcnN0IGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgJHdpZHRoO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBGb3IgcmlnaHQgdHJpYW5nbGVzICh0aGUgcmVzdCksIGJvdGggc2lkZXMgZ2V0IHR3byBib3JkZXJzLFxuICAgIC8vIHNvIGRpdmlkZSBib3RoIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAoJHdpZHRoIC8gMik7XG4gIH1cblxuICBib3JkZXItd2lkdGg6ICRib3JkZXItd2lkdGhzO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG5cbiAgLy8gU1RBTkRBUkQgVFJJQU5HTEVTXG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cblxuICAvLyBDT1JORVIgVFJJQU5HTEVTXG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdG9wLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdHJpYW5nbGUge1xuICBAaW5jbHVkZSBzY3V0LXRyaWFuZ2xlO1xufVxuQG1peGluIHNjdXQtY2VudGVyLWFic29sdXRlbHkgKFxuICAkZGltZW5zaW9uc1xuKSB7XG5cbiAgJHdpZHRoOiBudGgoJGRpbWVuc2lvbnMsIDEpO1xuICAkaGVpZ2h0OiBudGgoJGRpbWVuc2lvbnMsIDIpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJHdpZHRoICE9IG4ge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAoLSR3aWR0aCAvIDIpO1xuICB9XG5cbiAgQGlmICRoZWlnaHQgIT0gbiB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6ICgtJGhlaWdodCAvIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1ibG9jayAoXG4gICRtYXgtd2lkdGg6IGZhbHNlXG4pIHtcblxuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBAaWYgJG1heC13aWR0aCB7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICB9XG5cbn1cblxuJXNjdXQtY2VudGVyLWJsb2NrIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItYmxvY2s7XG59XG5cbkBtaXhpbiBzY3V0LWNlbnRlci10cmFuc2Zvcm0gKFxuICAkYXhpczogZmFsc2UgLy8gb3IgeCBvciB5XG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICRheGlzICE9IHgge1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgfVxuXG4gIEBpZiAkYXhpcyAhPSB5IHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgJHRyYW5zbGF0ZS12YWw6IG51bGw7XG5cbiAgQGlmIG5vdCgkYXhpcykge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geCB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIC1tcy10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICB0cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXgge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeCk7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuQG1peGluIHNjdXQtZmlsbCAoXG4gICR3aWR0aC1oZWlnaHQ6IGZhbHNlXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgQGlmICR3aWR0aC1oZWlnaHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtZmlsbCB7XG4gIEBpbmNsdWRlIHNjdXQtZmlsbDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtY3VzdG9tIChcbiAgJGNvbnRlbnQ6IFwiXFwyMDIyXCIsXG4gICRtYXJrZXItd2lkdGg6IDAuNzVlbSxcbiAgJHBhZDogMCxcbiAgJG5vLW1hcmdpbjogZmFsc2Vcbikge1xuXG4gICRjb250ZW50LXZhbDogbnVsbDtcbiAgJGNvdW50ZXI6IGluZGV4KCRjb250ZW50LCBjb3VudCk7XG4gIEBpZiAkY291bnRlciB7XG4gICAgQGlmIGxlbmd0aCgkY29udGVudCkgPT0gMyB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyLCBudGgoJGNvbnRlbnQsIDMpKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAyIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICRjb250ZW50LXZhbDogJGNvbnRlbnQ7XG4gIH1cblxuICBwYWRkaW5nLWxlZnQ6ICRtYXJrZXItd2lkdGggKyAkcGFkO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gICYgPiBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiAkY291bnRlciB7XG4gICAgICBjb3VudGVyLWluY3JlbWVudDogc2N1dGxpc3Rjb3VudGVyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkY29udGVudC12YWw7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IC0kbWFya2VyLXdpZHRoO1xuICAgICAgd2lkdGg6ICRtYXJrZXItd2lkdGg7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC1mbG9hdGVkYCwgd2hpY2ggZGVwZW5kcyBpbiB0dXJuIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1kaXZpZGVkIChcbiAgJGRpdmlkZXI6IFwifFwiLFxuICAkc3BhY2U6IDAuNWVtLFxuICAkZGlyOiBsZWZ0LFxuICAkaGVpZ2h0OiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQoJGRpcjogJGRpciwgJG5vLW1hcmdpbjogJG5vLW1hcmdpbik7XG5cbiAgJHBzZXVkbzogaWYoJGRpciA9PSBsZWZ0LCAnYmVmb3JlJywgJ2FmdGVyJyk7XG5cbiAgLy8gSWYgYW4gZXhwbGljaXQgaGVpZ2h0IGlzIHBhc3NlZCxcbiAgLy8gdGhpbmdzIGFyZSBkaWZmZXJlbnQ6IEFsbCA8bGk+c1xuICAvLyBuZWVkIHRoZSBwc2V1ZG8tZWxlbWVudCAodG8gZm9yY2UgaGVpZ2h0KSxcbiAgLy8gYnV0IHRoZSBmaXJzdCdzIG11c3QgYmUgaGlkZGVuLlxuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICAmID4gbGkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICAmID4gbGk6I3skcHNldWRvfSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgJiA+IGxpOmZpcnN0LWNoaWxkOiN7JHBzZXVkb30ge1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gICYgPiBsaSArIGxpOiN7JHBzZXVkb30ge1xuICAgIEBpZiBub3QoJGhlaWdodCkge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjZTtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtYmFyIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQ7XG59XG5cbiVzY3V0LWxpc3QtYnJlYWRjcnVtYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKFwiL1wiKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWlubGluZSAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtaW5saW5lO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtcHVuY3R1YXRlZCAoXG4gICRkaXZpZGVyOiBcIiwgXCIsXG4gICRkaXNwbGF5OiBpbmxpbmUsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6ICRkaXNwbGF5O1xuICAgICY6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWNvbW1hIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXB1bmN0dWF0ZWQ7XG59XG5AbWl4aW4gc2N1dC1tYXJnaW4gKFxuICAkbWFyZ2luXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDEgYW5kICRtYXJnaW4gIT0gbiB7XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMiB7XG4gICAgJG1hcmdpbi15OiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgQGlmICRtYXJnaW4teSAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDMge1xuICAgICRtYXJnaW4teS10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLXktYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgQGlmICRtYXJnaW4teS10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi15LWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSA0IHtcbiAgICAkbWFyZ2luLXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4tcmlnaHQ6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgICRtYXJnaW4tbGVmdDogbnRoKCRtYXJnaW4sIDQpO1xuICAgIEBpZiAkbWFyZ2luLXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1yaWdodCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi1yaWdodDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWxlZnQgIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi1sZWZ0O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1wYWRkaW5nIChcbiAgJHBhZGRpbmdcbikge1xuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDEgYW5kICRwYWRkaW5nICE9IG4ge1xuICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDIge1xuICAgICRwYWRkaW5nLXk6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICBAaWYgJHBhZGRpbmcteSAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15O1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXk7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAzIHtcbiAgICAkcGFkZGluZy15LXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLXktYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgIEBpZiAkcGFkZGluZy15LXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15LXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteS1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gNCB7XG4gICAgJHBhZGRpbmctdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXJpZ2h0OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICAkcGFkZGluZy1sZWZ0OiBudGgoJHBhZGRpbmcsIDQpO1xuICAgIEBpZiAkcGFkZGluZy10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmctdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctcmlnaHQgIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy1yaWdodDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1sZWZ0ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy1sZWZ0O1xuICAgIH1cbiAgfVxufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1hYnNvbHV0ZSAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWFic29sdXRlIHtcbiAgQGluY2x1ZGUgc2N1dC1hYnNvbHV0ZTtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtZml4ZWQgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1maXhlZCB7XG4gIEBpbmNsdWRlIHNjdXQtZml4ZWQ7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LXJlbGF0aXZlIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cbkBtaXhpbiBzY3V0LXJhdGlvLWJveCAoXG4gICRyYXRpbzogMS8xXG4pIHtcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVGhlIGNvbnRhaW5lcidzIGhlaWdodCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZVxuICAvLyBjb250YWluZXIncyB3aWR0aCwgaXMgc2V0IGJ5IGFzc2lnbmluZ1xuICAvLyBwYWRkaW5nLXRvcCB0byBhIHBzZXVkby1lbGVtZW50LlxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgcGFkZGluZy10b3A6ICgxIC8gJHJhdGlvKSAqIDEwMCU7XG4gIH1cblxufVxuXG4lc2N1dC1yYXRpby1ib3gge1xuICBAaW5jbHVkZSBzY3V0LXJhdGlvLWJveDtcbn1cbkBtaXhpbiBzY3V0LXNpemUoXG4gICRzaXplXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAxIHtcbiAgICB3aWR0aDogICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICB3aWR0aDogIG50aCgkc2l6ZSwgMSk7XG4gICAgaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAtJGhlaWdodDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAjeyR3cmFwcGVyfTphZnRlcixcbiAgI3skZm9vdGVyfSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG5cbn1cblxuLy8gZGVwcmVjYXRlZFxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3RlciAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbil7XG4gIEBpbmNsdWRlIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCgkaGVpZ2h0LCAkd3JhcHBlciwgJGZvb3Rlcik7XG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZsdWlkIChcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICN7JGZvb3Rlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcbiAgICBoZWlnaHQ6IDFweDtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLWliIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICAvLyBUaGUgaW5uZXIgZWxlbWVudCBpcyB2ZXJ0aWNhbGx5IGNlbnRlcmVkXG4gIC8vIGJ5IG1pZGRsZS1hbGlnbmluZyBpdCB3aXRoIGFuIGlubGluZSBwc2V1ZG8tZWxlbWVudFxuICAvLyB3aG9zZSBoZWlnaHQgaXMgMTAwJS5cblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgLy8gQSBzbWFsbCBuZWdhdGl2ZSByaWdodCBtYXJnaW4gaXMgc2V0XG4gICAgLy8gdG8gYWNjb3VudCBmb3IgdGhlIGRlZmF1bHRcbiAgICAvLyB3b3JkLXNwYWNpbmcgb2YgaW5saW5lLWJsb2NrLlxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVlbTtcbiAgfVxuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC12Y2VudGVyLWliIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLWliO1xufVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLWxoIChcbiAgJGhlaWdodFxuKSB7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJGhlaWdodDtcblxufVxuQG1peGluIHNjdXQtdmNlbnRlci10ZCAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgZGlzcGxheTogdGFibGU7XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG5cbiVzY3V0LXZjZW50ZXItdGQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdGQ7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1jZW50ZXItdHJhbnNmb3JtXG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItdHQgKCkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbiVzY3V0LXZjZW50ZXItdHQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdHQ7XG59XG4vLyBzcGFjZVxuJHNjdXQtc3BhY2U6IFwiXFwwMDIwXCI7XG4vLyBub24tYnJlYWtpbmcgc3BhY2VcbiRzY3V0LW5ic3A6IFwiXFwwMGEwXCI7XG5cbi8vIHF1b3RhdGlvbiBtYXJrXG4kc2N1dC1xdW90OiBcIlxcMDAyMlwiO1xuLy8gbGVmdCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LWxzcXVvOiBcIlxcMjAxOFwiO1xuLy8gcmlnaHQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1yc3F1bzogXCJcXDIwMTlcIjtcbi8vIGxlZnQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1sZHF1bzogXCJcXDIwMUNcIjtcbi8vIHJpZ2h0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtcmRxdW86IFwiXFwyMDFEXCI7XG4vLyBsZWZ0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbHNhcXVvOiBcIlxcMjAzOVwiO1xuLy8gcmlnaHQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yc2FxdW86IFwiXFwyMDNBXCI7XG4vLyBsZWZ0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbGFxdW86IFwiXFwwMGFiXCI7XG4vLyByaWdodCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJhcXVvOiBcIlxcMDBiYlwiO1xuXG4vLyBlbSBkYXNoIChtdXR0b24pXG4kc2N1dC1tZGFzaDogXCJcXDIwMTRcIjtcbi8vIGVuIGRhc2ggKG51dClcbiRzY3V0LW5kYXNoOiBcIlxcMjAxM1wiO1xuLy8gaHlwaGVuXG4kc2N1dC1oeXBoZW46IFwiXFwyMDEwXCI7XG5cbi8vIGFtcGVyc2FuZFxuJHNjdXQtYW1wOiBcIlxcMDAyNlwiO1xuLy8gZ3JlYXRlciB0aGFuXG4kc2N1dC1ndDogXCJcXDAwM2VcIjtcbi8vIGxlc3MgdGhhblxuJHNjdXQtbHQ6IFwiXFwwMDNjXCI7XG4vLyB0aW1lc1xuJHNjdXQtdGltZXM6IFwiXFwwMEQ3XCI7XG4vLyBiaWcgdGltZXNcbiRzY3V0LWJpZ3RpbWVzOiBcIlxcMjcxNVwiO1xuLy8gY2hlY2ttYXJrXG4kc2N1dC1jaGVja21hcms6IFwiXFwyNzEzXCI7XG5cbi8vIHNlY3Rpb24gc2lnbiAoZG91YmxlIFMsIGh1cnJpY2FuZSwgc2VjdGlvbmFsIHN5bWJvbCwgdGhlIGxlZ2FsIGRvdWdobnV0LCBzaWdudW0gc2VjdGlvbmlzKVxuJHNjdXQtc2VjdDogXCJcXDAwYTdcIjtcbi8vIHBhcmFncmFwaCBzeW1ib2wgKHBpbGNyb3cpXG4kc2N1dC1wYXJhOiBcIlxcMDBiNlwiO1xuXG4vLyBtaWRkb3QgKGludGVycHVuY3QsIGludGVycG9pbnQpXG4kc2N1dC1taWRkb3Q6IFwiXFwwMGI3XCI7XG4vLyBvLXNsYXNoIChzbGFzaGVkIG8pXG4kc2N1dC1vc2xhc2g6IFwiXFwwMGY4XCI7XG4vLyBidWxsZXRcbiRzY3V0LWJ1bGw6IFwiXFwyMDIyXCI7XG4vLyB3aGl0ZSBidWxsZXRcbiRzY3V0LXdoaWJ1bGw6IFwiXFwyNUU2XCI7XG4vLyBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1oZWxsaXA6IFwiXFwyMDI2XCI7XG4vLyB2ZXJ0aWNhbCBlbGxpcHNpc1xuJHNjdXQtdmVsbGlwOiBcIlxcMjJFRVwiO1xuLy8gbWlkbGluZSBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1taWRoZWxsaXA6IFwiXFwyMkVGXCI7XG5cbi8vIHVwLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC11dHJpOiBcIlxcMjViMlwiO1xuLy8gZG93bi1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtZHRyaTogXCJcXDI1YmNcIjtcbi8vIGxlZnQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWx0cmk6IFwiXFwyNWMwXCI7XG4vLyByaWdodC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtcnRyaTogXCJcXDI1YjZcIjtcbi8vIHVwLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC11c3RyaTogXCJcXDI1YjRcIjtcbi8vIGRvd24tcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWRzdHJpOiBcIlxcMjViZVwiO1xuLy8gbGVmdC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtbHN0cmk6IFwiXFwyNWMyXCI7XG4vLyByaWdodC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtcnN0cmk6IFwiXFwyNWI4XCI7XG4vLyBkaWFtb25kXG4kc2N1dC1kaWFtb25kOiBcIlxcMjVjNlwiO1xuLy8gZmlzaGV5ZVxuJHNjdXQtZmlzaGV5ZTogXCJcXDI1YzlcIjtcbi8vIGJ1bGxzZXllXG4kc2N1dC1idWxsc2V5ZTogXCJcXDI1Y2VcIjtcbi8vIGNpcmNsZVxuJHNjdXQtY2lyY2xlOiBcIlxcMjVjZlwiO1xuLy8gd2hpdGUgY2lyY2xlXG4kc2N1dC13aGl0ZWNpcmNsZTogXCJcXDI1Y2JcIjtcbi8vIHNxdWFyZVxuJHNjdXQtc3F1YXJlOiBcIlxcMjVhMFwiO1xuLy8gd2hpdGUgc3F1YXJlXG4kc2N1dC13aGl0ZXNxdWFyZTogXCJcXDI1YTFcIjtcbi8vIHNtYWxsIHNxdWFyZVxuJHNjdXQtc3NxdWFyZTogXCJcXDI1YWFcIjtcbi8vIHNtYWxsIHdoaXRlIHNxdWFyZVxuJHNjdXQtc3doaXRlc3F1YXJlOiBcIlxcMjVhYlwiO1xuXG4vLyBnZW5lcmFsIGN1cnJlbmN5XG4kc2N1dC1jdXJyZW5jeTogXCJcXDAwYTRcIjtcbi8vIGNlbnRcbiRzY3V0LWNlbnQ6IFwiXFwwMGEyXCI7XG4vLyBkb2xsYXJcbiRzY3V0LWRvbGxhcjogXCJcXDAwMjRcIjtcbi8vIHBvdW5kXG4kc2N1dC1wb3VuZDogXCJcXDAwYTNcIjtcbi8vIGV1cm9cbiRzY3V0LWV1cm86IFwiXFwyMGFjXCI7XG4vLyB5ZW5cbiRzY3V0LXllbjogXCJcXDAwYTVcIjtcbi8vIHJ1cGVlXG4kc2N1dC1ydXBlZTogXCJcXDIwQjlcIjtcbkBmdW5jdGlvbiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KSB7XG4gIC8vIFJldHVybiB0aGUgbGlzdCBvZiBgc3JjYCB2YWx1ZXMsIGluIG9yZGVyLCB0aGF0XG4gIC8vIGEgZ29vZCBgQGZvbnQtZmFjZWAgd2lsbCBuZWVkLCBpbmNsdWRpbmcgb25seVxuICAvLyB0aG9zZSBmb3JtYXRzIHNwZWNpZmllZCBpbiB0aGUgbGlzdCBgJGZvcm1hdHNgLlxuICAkcmVzdWx0OiAoKTtcbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAkZW90LXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRlb3QtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmMikge1xuICAgICR3b2ZmMi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYyLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZikge1xuICAgICR3b2ZmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB0dGYpIHtcbiAgICAkdHRmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHR0Zi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHN2Zykge1xuICAgICRzdmctdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fScpIGZvcm1hdCgnc3ZnJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRzdmctdmFsLCBjb21tYSk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AbWl4aW4gc2N1dC1mb250LWZhY2UgKFxuICAkZm9udC1mYW1pbHksXG4gICRmaWxlLXBhdGgsXG4gICR3ZWlnaHQ6IG5vcm1hbCxcbiAgJHN0eWxlOiBub3JtYWwsXG4gICRmb3JtYXRzOiBlb3Qgd29mZjIgd29mZiB0dGYgc3ZnXG4pIHtcblxuICBAaWYgaW5kZXgoJ2l0YWxpYycgJ29ibGlxdWUnLCAkd2VpZ2h0KSB7XG4gICAgJHN0eWxlOiAkd2VpZ2h0O1xuICAgICR3ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuXG4gICAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAgIHNyYzogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgIH1cbiAgICBzcmM6IG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpO1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGFuZ2luZy1pbmRlbnQgKFxuICAkaW5kZW50OiAxZW1cbikge1xuXG4gIC8vIHBhZGRpbmctbGVmdCBjcmVhdGVzIHRoZSBpbmRlbnQsXG4gIC8vIHdoaWxlIHRleHQtaW5kZW50IHB1bGxzIHRoZSBmaXJzdCBsaW5lXG4gIC8vIGJhY2sgdG8gdGhlIGVkZ2UuXG5cbiAgcGFkZGluZy1sZWZ0OiAkaW5kZW50O1xuICB0ZXh0LWluZGVudDogLSRpbmRlbnQ7XG5cbn1cblxuJXNjdXQtaGFuZ2luZy1pbmRlbnQge1xuICBAaW5jbHVkZSBzY3V0LWhhbmdpbmctaW5kZW50O1xufVxuQG1peGluIHNjdXQtaW5kZW50ZWQtcHMgKFxuICAkaW5kZW50OiAxLjVlbSxcbiAgJG5vLWZpcnN0LWluZGVudDogdHJ1ZVxuKSB7XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtaW5kZW50OiAkaW5kZW50O1xuICB9XG5cbiAgQGlmICRuby1maXJzdC1pbmRlbnQge1xuICAgIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB0ZXh0LWluZGVudDogMDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1pbmRlbnRlZC1wcyB7XG4gIEBpbmNsdWRlIHNjdXQtaW5kZW50ZWQtcHM7XG59XG5AbWl4aW4gc2N1dC1rZXktdmFsIChcbiAgJGRpdmlkZXI6IFwiOlwiLFxuICAkcGFkOiAwLjI1ZW0sXG4gICRpbmRlbnQ6IDFlbSxcbiAgJHNwYWNpbmc6IDAsXG4gICRwYWQtbGVmdDogMFxuKSB7XG5cbiAgJiA+IGR0IHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkcGFkO1xuICAgICAgQGlmICRwYWQtbGVmdCAhPSAwIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRwYWQtbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmID4gZGQge1xuICAgIG1hcmdpbi1sZWZ0OiAkaW5kZW50O1xuICAgIEBpZiAkc3BhY2luZyAhPSAwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWtleS12YWwge1xuICBAaW5jbHVkZSBzY3V0LWtleS12YWw7XG59XG5AbWl4aW4gc2N1dC1saW5rLWJiIChcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkd2lkdGg6IDFweFxuKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gIGJvcmRlci1ib3R0b20td2lkdGg6ICR3aWR0aDtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgfVxuXG59XG5cbiVzY3V0LWxpbmstYmIge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstYmI7XG59XG4vLyBTQ1VUIExJTksgVU5TVFlMRURcbi8vIGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0LyNsaW5rLXVuc3R5bGVkXG5cbkBtaXhpbiBzY3V0LWxpbmstdW5zdHlsZWQoKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcblxufVxuXG4lc2N1dC1saW5rLXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLXVuc3R5bGVkKCk7XG59XG5cbkBtaXhpbiBzY3V0LXJldmVyc2UtaXRhbGljcyAoXG4gICRlbGVtZW50czogbnVsbFxuKSB7XG5cbiAgJGVsZW1lbnQtbGlzdDogZW0sIGNpdGUsIGk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgI3tqb2luKCRlbGVtZW50LWxpc3QsICRlbGVtZW50cyl9IHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cblxufVxuXG4lc2N1dC1yZXZlcnNlLWl0YWxpY3Mge1xuICBAaW5jbHVkZSBzY3V0LXJldmVyc2UtaXRhbGljcztcbn1cblxuQG1peGluIHNjdXQtc2lkZS1saW5lZCAoXG4gICRoZWlnaHQ6IDFweCxcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkdi1hZGp1c3Q6IGZhbHNlLFxuICAkZG91YmxlOiBmYWxzZVxuKSB7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDUwJTtcblxuICAgIGJvcmRlci10b3Atc3R5bGU6ICRzdHlsZTtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAkaGVpZ2h0O1xuXG4gICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgJHYtYWRqdXN0ICE9IGZhbHNlIHtcbiAgICAgIGJvdHRvbTogJHYtYWRqdXN0O1xuICAgIH1cblxuICAgIEBpZiAkZG91YmxlICE9IGZhbHNlIHtcbiAgICAgIGhlaWdodDogJGRvdWJsZTtcbiAgICAgIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6ICRoZWlnaHQ7XG4gICAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0OiAkc3BhY2U7XG4gICAgbWFyZ2luLWxlZnQ6IC01MCU7XG4gIH1cbiAgJjphZnRlciB7XG4gICAgbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXNpZGUtbGluZWQge1xuICBAaW5jbHVkZSBzY3V0LXNpZGUtbGluZWQ7XG59XG5AbWl4aW4gc2N1dC10cnVuY2F0ZSB7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbn1cblxuJXNjdXQtdHJ1bmNhdGUge1xuICBAaW5jbHVkZSBzY3V0LXRydW5jYXRlO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInRvb2xraXQvcGxhY2Vob2xkZXJzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcInRvb2xraXQvY29sb3JzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9mb250c1wiO1xuQGltcG9ydCBcInRvb2xraXQvaW50cmluc2ljLXJhdGlvXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9uZXN0ZWQtY29udGV4dFwiO1xuQGltcG9ydCBcInRvb2xraXQvcGFyYWxsYXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3J0bFwiO1xuQGltcG9ydCBcInRvb2xraXQvdGFyZ2V0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC90cmlhbmdsZVwiO1xuQGltcG9ydCBcInRvb2xraXQvY2VudGVyXCI7XG5AaW1wb3J0IFwidG9vbGtpdC92aWV3cG9ydFwiO1xuQGltcG9ydCBcInRvb2xraXQvdW5kZXJsaW5lXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9hcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3NldC1tdWx0aXBsZVwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRUb29sa2l0LVNldHRpbmdzOiAoXG4gICdjbGVhcmZpeCBleHRlbmQnOiBmYWxzZSxcbiAgJ2NvbG9yIHN0YWNrIGFtb3VudHMnOiAyNSUgNTAlIDc1JSA4NSUgOTAlLFxuICAndGludCBzaGFkZSBhbW91bnRzJzogNzUlIDUwJSAyNSUsXG4gICd0aW50IGNvbG9yJzogI2ZmZixcbiAgJ3NoYWRlIGNvbG9yJzogIzAwMCxcbiAgJ2NvbG9yIHNjYWxlIHN0ZXBzJzogNixcbiAgJ2xpZ2F0dXJlIGV4dGVuZCc6IGZhbHNlLFxuICAnZm9udCBmYWNlIHdlaWdodCc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBzdHlsZSc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZic6IGZhbHNlLFxuICAnaWNvbiBmb250IGV4dGVuZCc6IGZhbHNlLFxuICAnaWNvbiBmb250IHNwZWFrJzogZmFsc2UsXG4gICdmYWRlIGluIGR1cmF0aW9uJzogMXMsXG4gICdmYWRlIGluIGxvYWRpbmcgY2xhc3MnOiAnLndmLWxvYWRpbmcnLFxuICAnZmFkZSBpbiBleHRlbmQnOiBmYWxzZSxcbiAgJ2ludHJpbnNpYyByYXRpbyc6IDE2LzksXG4gICdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnOiAxMDAlLFxuICAnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJzogJz4gKicsXG4gICdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nOiB0b3AsXG4gICdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJzogZmFsc2UsXG4gICduZXN0ZWQgY29udGV4dCBjb250ZXh0cyc6IDEwMCUsXG4gICduZXN0ZWQgY29udGV4dCBwb3NpdGlvbic6IGxlZnQsXG4gICd0cmlhbmdsZSBjb2xvcic6ICMwMDAsXG4gICd0cmlhbmdsZSBoZWlnaHQnOiAxZW0sXG4gICd0cmlhbmdsZSB3aWR0aCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIGFuZ2xlJzogMCxcbiAgJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJzogMSxcbiAgJ3BhcmFsbGF4IGVsZW1lbnQnOiAnYm9keScsXG4gICdwYXJhbGxheCBpb3MnOiB0cnVlLFxuICAncGFyYWxsYXggZGlzdGFuY2UnOiAwLFxuICAndmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICd2ZXJ0aWNhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnOiA1MCUsXG4gICdob3Jpem9udGFsIGZpeGVkJzogZmFsc2UsXG4gICdob3Jpem9udGFsIGV4dGVuZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJzogZmFsc2UsXG4gICd1bmRlcmxpbmUgYmFja2dyb3VuZCc6ICNmZmYsXG4gICd1bmRlcmxpbmUgY29sb3InOiAjMDBlLFxuICAndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnOiB0cnVlLFxuICAndW5kZXJsaW5lIGRpc3RhbmNlJzogMSxcbiAgJ3VuZGVybGluZSB3aWR0aCc6IDIsXG4gICd1bmRlcmxpbmUgZXh0ZW5kJzogZmFsc2UsXG4gICdhcnQgcGl4ZWwgc2l6ZSc6IDFweCxcbiAgJ2FydCBjb2xvcic6IGJsYWNrLFxuICAnYXJ0IGJvcmRlciByYWRpdXMnOiAwJVxuKTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBOZXcgU2V0dGluZ3MgbW9kdWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdsb2JhbFxuJEdsb2JhbFNldHRpbmdzOiAkVG9vbGtpdC1TZXR0aW5ncyAhZGVmYXVsdDtcbi8vIFVzZXJcbiRVc2VyU2V0dGluZ3M6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVzZXIgU2V0dGluZyBFeGlzdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJFJldHVybjtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1oYXMoJHNldHRpbmcpIHtcbiAgQHJldHVybiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIEdldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEdsb2JhbFNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctZ2V0LW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkdmFsdWVzOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkdmFsdWVzOiBtYXAtbWVyZ2UoJHZhbHVlcywgKCRzZXR0aW5nOiBzZXR0aW5nLWdldCgkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICR2YWx1ZXM7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtZ2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1nZXQoJHNldHRpbmcpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZ3MgU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgJHNldHRpbmdzKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZS1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJFJldHVybjogKCk7XG5cbiAgQGVhY2ggJEtleSwgJFZhbHVlIGluICRVc2VyU2V0dGluZ3Mge1xuICAgICRSZXR1cm46IGlmKCRzZXR0aW5nID09ICRLZXksICRSZXR1cm4sIG1hcC1tZXJnZSgkUmV0dXJuLCAoJEtleTogJFZhbHVlKSkpO1xuICB9XG5cbiAgJFVzZXJTZXR0aW5nczogJFJldHVybiAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRjbGVhci10aGUtc2V0dGluZ3M6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcmVzZXQoKSB7XG4gICRVc2VyU2V0dGluZ3M6ICgpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLXJlc2V0KCk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBQaWNrXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2soJHNldHRpbmcsICRpbnB1dCkge1xuICBAcmV0dXJuIGlmKCRpbnB1dCAhPSBudWxsLCAkaW5wdXQsIHNldHRpbmctZ2V0KCRzZXR0aW5nKSk7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2stbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZywgJGlucHV0IGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogc2V0dGluZy1waWNrKCRpbnB1dCwgJHNldHRpbmcpKSk7XG4gIH1cblxuICBAcmV0dXJuICRSZXR1cm47XG59IiwiJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFBsYWNlaG9sZGVyIEdldC9TZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCkge1xuICAkdW5pcXVlLWlkOiB1bmlxdWUtaWQoKTtcbiAgJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6IG1hcC1tZXJnZSgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgKCRpZDogJHVuaXF1ZS1pZCkpICFnbG9iYWw7XG4gIEByZXR1cm4gJHVuaXF1ZS1pZDtcbn1cblxuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCkge1xuICBAcmV0dXJuIG1hcC1nZXQoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICRpZCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhdGUgUGxhY2Vob2xkZXIgQ2xhc3MgYW5kIEV4dGVuZFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKTtcblxuICBAaWYgJHBsYWNlaG9sZGVyLWlkID09IG51bGwge1xuICAgICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKTtcbiAgICBAYXQtcm9vdCAlI3skcGxhY2Vob2xkZXItaWR9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZXh0ZW5kICUjeyRwbGFjZWhvbGRlci1pZH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU3RhdGljIE1peGluIEhlbHBlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gbWl4aW4tZHJ5ZXIoJGlkLCAkZXh0ZW5kOiB0cnVlKSB7XG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNb2Rlcm4gQ2xlYXJmaXggTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNsZWFyZml4KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnY2xlYXJmaXggZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjbGVhcmZpeCcpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb21wYXNzIEV4dGVuc2lvbiBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUaW50IGFuZCBTaGFkZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMdW1hXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBsdW1hKCRjb2xvcikge1xuICBAcmV0dXJuIChyZWQoJGNvbG9yKSAqIC4yOTkpICsgKGdyZWVuKCRjb2xvcikgKiAuNTg3KSArIChibHVlKCRjb2xvcikgKiAuMTE0KTtcbn1cblxuQGZ1bmN0aW9uIGx1bWEtZ3RlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPj0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWx0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpIDw9IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1kaWZmKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQHJldHVybiBsdW1hKCRjb2xvcjEpIC0gbHVtYSgkY29sb3IyKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTdGFja3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXN0YWNrKCRtYWluLCAkc2Vjb25kYXJ5LCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ2NvbG9yIHN0YWNrIGFtb3VudHMnKTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJGFtb3VudHMpID09IDEge1xuICAgICRhbW91bnRzOiBudGgoJGFtb3VudHMsIDEpO1xuICB9XG5cbiAgJHN0YWNrOiAkbWFpbjtcblxuICBAZWFjaCAkYW1vdW50IGluICRhbW91bnRzIHtcbiAgICAkc3RhY2s6IGpvaW4oJHN0YWNrLCBtaXgoJHNlY29uZGFyeSwgbnRoKCRzdGFjaywgMSksICRhbW91bnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0YWNrO1xufVxuXG4vLyBUaW50IFN0YWNrXG5AZnVuY3Rpb24gdGludC1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFNoYWRlIFN0YWNrXG5AZnVuY3Rpb24gc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFRpbnQvU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgJGNvbG9yczogKCk7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgndGludCBzaGFkZSBhbW91bnRzJyk7XG4gIH1cbiAgJGxlbmd0aDogbGVuZ3RoKCRhbW91bnRzKTtcblxuICAvLyBTaGFkZXNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgc2hhZGUoJGNvbG9yLCBudGgoJGFtb3VudHMsICRpKSkpO1xuICB9XG5cbiAgLy8gQmFzZVxuICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgJGNvbG9yKTtcblxuICAvLyBUaW50c1xuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRsZW5ndGggLSAxIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgdGludCgkY29sb3IsIG50aCgkYW1vdW50cywgJGxlbmd0aCAtICRpKSkpO1xuICB9XG5cbiAgQHJldHVybiAkY29sb3JzO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFNjYWxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc2NhbGUoJG1haW4sICRzZWNvbmRhcnksICRzdGVwczogbnVsbCkge1xuICAkc3RlcHM6IGlmKCRzdGVwcyAhPSBudWxsLCAkc3RlcHMsIHRvb2xraXQtZ2V0KCdjb2xvciBzY2FsZSBzdGVwcycpKTtcblxuICAkbGlzdDogJG1haW47XG5cbiAgJHJlZDE6IHJlZCgkbWFpbik7XG4gICRyZWQyOiByZWQoJHNlY29uZGFyeSk7XG4gICRyZWQtZGlmZjogKCgkcmVkMSAtICRyZWQyKSAvICgoJHN0ZXBzIC0gMSkpKTtcblxuICAkaHVlMTogaHVlKCRtYWluKTtcbiAgJGh1ZTI6IGh1ZSgkc2Vjb25kYXJ5KTtcbiAgQGlmICgkaHVlMiArIDM1OSAtICRodWUxKSA8IGFicygkaHVlMSAtICRodWUyKSB7XG4gICAgJGh1ZTI6ICRodWUyICsgMzU5O1xuICB9XG4gICRodWUtZGlmZjogKCRodWUyIC0gJGh1ZTEpIC8gKCRzdGVwcyAtIDEpO1xuXG4gICRzYXQxOiBzYXR1cmF0aW9uKCRtYWluKTtcbiAgJHNhdDI6IHNhdHVyYXRpb24oJHNlY29uZGFyeSk7XG4gICRzYXQtZGlmZjogMDtcbiAgQGlmICRzYXQxID4gJHNhdDIge1xuICAgICRzYXQtZGlmZjogKCRzYXQyIC0gJHNhdDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MSAtICRzYXQyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRsdGUxOiBsaWdodG5lc3MoJG1haW4pO1xuICAkbHRlMjogbGlnaHRuZXNzKCRzZWNvbmRhcnkpO1xuICAkbHRlLWRpZmY6IDA7XG4gIEBpZiAkbHRlMSA+ICRsdGUyIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMiAtICRsdGUxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTEgLSAkbHRlMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkYWxwMTogYWxwaGEoJG1haW4pO1xuICAkYWxwMjogYWxwaGEoJHNlY29uZGFyeSk7XG4gICRhbHAtZGlmZjogMDtcbiAgQGlmICRhbHAxID4gJGFscDIge1xuICAgICRhbHAtZGlmZjogKCRhbHAyIC0gJGFscDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMSAtICRhbHAyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRodWUtaG9sZDogJGh1ZTE7XG4gICRzYXQtaG9sZDogJHNhdDE7XG4gICRsdGUtaG9sZDogJGx0ZTE7XG4gICRhbHAtaG9sZDogJGFscDE7XG4gICRjb2xvci1ob2xkOiAwO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJHN0ZXBzIHtcbiAgICAkaHVlLWhvbGQ6ICRodWUtaG9sZCArICRodWUtZGlmZjtcbiAgICAkc2F0LWhvbGQ6ICRzYXQtaG9sZCArICRzYXQtZGlmZjtcbiAgICAkbHRlLWhvbGQ6ICRsdGUtaG9sZCArICRsdGUtZGlmZjtcbiAgICAkYWxwLWhvbGQ6ICRhbHAtaG9sZCArICRhbHAtZGlmZjtcblxuICAgICRjb2xvci1ob2xkOiBoc2xhKCRodWUtaG9sZCwgJHNhdC1ob2xkLCAkbHRlLWhvbGQsICRhbHAtaG9sZCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGNvbG9yLWhvbGQpO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFbmFibGUgbGlnYXR1cmVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnbGlnYXR1cmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnZW5hYmxlIGxpZ2F0dXJlcycpIHtcbiAgICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXM7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2E9MSwgZGxpZz0xXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1zLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtby1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIixcImRsaWdcIjtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFjZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZm9udC1mYWNlKCRuYW1lLCAkZmlsZXMsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGlubGluZS13b2ZmOiBudWxsKSB7XG4gICR3ZWlnaHQ6IGlmKCR3ZWlnaHQgIT0gbnVsbCwgJHdlaWdodCwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSB3ZWlnaHQnKSk7XG4gICRzdHlsZTogaWYoJHN0eWxlICE9IG51bGwsICRzdHlsZSwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBzdHlsZScpKTtcbiAgJGlubGluZS13b2ZmOiBpZigkaW5saW5lLXdvZmYgIT0gbnVsbCwgJGlubGluZS13b2ZmLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIGlubGluZSB3b2ZmJykpO1xuXG4gICRmb250LXN0YWNrOiAoKTtcbiAgJGZvbnQtc3JjOiAnJztcbiAgJGVvdDogZmFsc2U7XG4gICRmb250LWV4dGVuc2lvbnM6ICgnZW90JzogJ2VtYmVkZGVkLW9wZW50eXBlJywgJ3dvZmYyJzogJ3dvZmYyJywgJ3dvZmYnOiAnd29mZicsICd0dGYnOiAndHJ1ZXR5cGUnLCAnc3ZnJzogJ3N2ZycpO1xuXG4gIEBlYWNoICRleHQsICRmb3JtYXQgaW4gJGZvbnQtZXh0ZW5zaW9ucyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRmaWxlcywgJGV4dCkge1xuICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhpbmxpbmUtZm9udC1maWxlcykgYW5kICRpbmxpbmUtd29mZiA9PSB0cnVlIGFuZCAoJGV4dCA9PSAnd29mZicgb3IgJGV4dCA9PSAnd29mZjInKSB7XG4gICAgICAgICRmb250LXNyYzogaW5saW5lLWZvbnQtZmlsZXMobWFwLWdldCgkZmlsZXMsICRleHQpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIGZ1bmN0aW9uLWV4aXN0cyhmb250LXVybCkge1xuICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkZm9udC1zdGFjazogYXBwZW5kKCRmb250LXN0YWNrLCAkZm9udC1zcmMsICdjb21tYScpO1xuICAgIH1cblxuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRuYW1lO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6ICRlb3Q7XG4gICAgfVxuICAgIEBpZiBsZW5ndGgoJGZvbnQtc3RhY2spID4gMCB7XG4gICAgICBzcmM6ICRmb250LXN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEljb24gRm9udFxuLy8gRnJvbSBodHRwOi8vaWNvbW9vbi5pb1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaWNvbi1mb250KCRmb250LXN0YWNrLCAkc3BlYWs6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHNwZWFrOiBpZigkc3BlYWsgIT0gbnVsbCwgJHNwZWFrLCB0b29sa2l0LWdldCgnaWNvbiBmb250IHNwZWFrJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjaztcbiAgQGlmICRzcGVhayA9PSBmYWxzZSB7XG4gICAgc3BlYWs6IG5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gaWNvbi1mb250LS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCAge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpY29uIGZvbnQgY29yZScpIHtcbiAgICAgIEBpbmNsdWRlIGljb24tZm9udC0tY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZCk7XG5cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWRlIEluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjb250ZW50LWZhZGUtaW4oJGR1cmF0aW9uOiBudWxsLCAkbG9hZGluZzogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZHVyYXRpb246IGlmKCRkdXJhdGlvbiAhPSBudWxsLCAkZHVyYXRpb24sIHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykpO1xuICAkbG9hZGluZzogaWYoJGxvYWRpbmcgIT0gbnVsbCwgJGxvYWRpbmcsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUgYW5kICRkdXJhdGlvbiA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpIGFuZCAkbG9hZGluZyA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjb250ZW50IGZhZGUgaW4nKSB7XG4gICAgICBAaW5jbHVkZSBjb250ZW50LWZhZGUtaW4oJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaWYgbm90IG1peGluLWV4aXN0cygnc2luZ2xlLXRyYW5zaXRpb24nKSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG9wYWNpdHkgJGR1cmF0aW9uKTtcbiAgICB9XG5cbiAgICAjeyRsb2FkaW5nfSAmIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZsdWlkIEVtYmVkcyBhbmQgd2hhdGV2ZXIgV0lUSCBOTyBKQVZBU0NJUFQhXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBwYXJlbnQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gY2hpbGQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICB0b3A6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG5cbiAgcGFkZGluZy0jeyRwb3NpdGlvbn06ICgxIC8gJHJhdGlvKSAqICR3aWR0aDtcbiAgd2lkdGg6ICR3aWR0aDtcbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRlbGVtZW50czogaWYoJGVsZW1lbnRzICE9IG51bGwsICRlbGVtZW50cywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZCk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xuXG4gIEBlYWNoICRlbGVtZW50IGluICRlbGVtZW50cyB7XG4gICAgI3skZWxlbWVudH0ge1xuICAgIFx0QGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXIoJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpbygkcmF0aW8sICR3aWR0aCwgJGVsZW1lbnRzLCAkZXh0ZW5kLCAkcG9zaXRpb24pO1xufVxuXG5AbWl4aW4gaXItcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG59IiwiLy8gc2ltcGxlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbnRleHQgb2YgYSBuZXN0ZWQgcGVyY2VudGFnZS5cbkBmdW5jdGlvbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG5cbiAgLy8gRmlyc3QgbGV2ZWwgZGVlcCBpcyBhbHdheXMgMTAwJVxuICAkcGVyY2VudGFnZTogMTAwJTtcblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBsZXZlbFxuICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgIC8vIEludmVydCB0aGUgcGVyY2VudGFnZSB0byBmaW5kIGNvbnRleHRcbiAgICAkcGVyY2VudGFnZTogcGVyY2VudGFnZSgkcGVyY2VudGFnZSAvICRjb250ZXh0KTtcbiAgfVxuICAvLyBSZXR1cm4gZmluYWwgcGVyY2VudGFnZVxuICBAcmV0dXJuICRwZXJjZW50YWdlO1xufVxuXG4vLyBtaXhpbiB0byBtYWtlIHRoaW5ncyBlYXNpZXJcbkBtaXhpbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nKSk7XG5cbiAgd2lkdGg6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cyk7XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJjZW50ZXJcIiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0uNTtcbiAgfVxuICBAaWYgJHBvc2l0aW9uID09IFwicmlnaHRcIiB7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtMSArIDEwMCU7XG4gIH1cbn0iLCIvLyBNYWdpYyBwYXJhbGxheCBtaXhpbnNcbkBtaXhpbiBwYXJhbGxheC1pbml0KCRwZXJzcGVjdGl2ZTogbnVsbCwgJGVsZW1lbnQ6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcblxuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJGVsZW1lbnQ6IGlmKCRlbGVtZW50ICE9IG51bGwsICRlbGVtZW50LCB0b29sa2l0LWdldCgncGFyYWxsYXggZWxlbWVudCcpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIEBpZiAkZWxlbWVudCA9PSAnYm9keScge1xuICAgIEBhdC1yb290IHtcbiAgICAgIGh0bWwsIGJvZHkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICBib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGVsZW1lbnQgPT0gdGhpcyB7XG4gICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGF0LXJvb3QgI3skZWxlbWVudH0ge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmU6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBvdmVyZmxvdzogYXV0bztcbiAgQGlmIG1peGluLWV4aXN0cyhwZXJzcGVjdGl2ZSkge1xuICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSAqIDFweCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgICBwZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICB9XG4gIC8vIEFsbG93cyBmb3Igc21vb3RoIHNjcm9sbGluZyBidXQgZGlzYWJsZXMgcGFyYWxsYXggZWZmZWN0cy5cbiAgQGlmICRwYXJhbGxheC1pb3MgPT0gZmFsc2Uge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAvLyBNYWtlIHN1cmUgM0QgcGVyc3BlY3RpdmUgaXMgcHJlc2VydmVkXG4gICYsICYgKiB7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0tc3R5bGUpIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZShwcmVzZXJ2ZS0zZCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheCgkZGlzdGFuY2U6IG51bGwsICRwZXJzcGVjdGl2ZTogbnVsbCkge1xuXG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGRpc3RhbmNlJykpO1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcblxuICAkdHJhbnNmb3JtOiB0cmFuc2xhdGVaKCRkaXN0YW5jZSAqICRwZXJzcGVjdGl2ZSAqIDFweCkgc2NhbGUoYWJzKCRkaXN0YW5jZSAtIDEpKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnNmb3JtKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gICAgdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICB9XG5cbiAgei1pbmRleDogJGRpc3RhbmNlICogMTAwO1xufVxuIiwiQG1peGluIHJ0bCgkcHJvcGVydHksICR2YWx1ZSkge1xuICAkX3Byb3BlcnR5OiAkcHJvcGVydHk7XG4gICN7JHByb3BlcnR5fTogJHZhbHVlO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA9PSA0IHtcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgI3skcHJvcGVydHl9OiBudGgoJHZhbHVlLCAxKSBudGgoJHZhbHVlLCA0KSBudGgoJHZhbHVlLCAzKSBudGgoJHZhbHVlLCAyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpIC0gMSkgKyAncmlnaHQnO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykgLSAxKSArICdsZWZ0JztcbiAgICB9XG5cbiAgICBAaWYgJHByb3BlcnR5ICE9ICRfcHJvcGVydHkge1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiQG1peGluIHRhcmdldCgkdGFyZ2V0KSB7XG4gIEBhdC1yb290IHtcbiAgICAvKiEgQHt0YXJnZXQ6ICN7JHRhcmdldH19ICovXG4gICAgJiB7XG4gICAgICBAY29udGVudDsgIFxuICAgIH1cbiAgICAvKiEge3RhcmdldDogI3skdGFyZ2V0fX1AICovICBcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRHJhdyB0cmlhbmdsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gdHJpYW5nbGUoJGNvbG9yOiBudWxsLCAkaGVpZ2h0OiBudWxsLCAkd2lkdGg6IG51bGwsICRhbmdsZTogbnVsbCkge1xuXG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGNvbG9yJykpO1xuICAkaGVpZ2h0OiBpZigkaGVpZ2h0ICE9IG51bGwsICRoZWlnaHQsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBoZWlnaHQnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIHdpZHRoJykpO1xuICAkYW5nbGU6IGlmKCRhbmdsZSAhPSBudWxsLCAkYW5nbGUsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBhbmdsZScpKTtcblxuICBAaWYgbnRoKCRhbmdsZSwgMSkgPT0gXCJ0b3BcIiBvciBudGgoJGFuZ2xlLCAxKSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IFwiI3skYW5nbGV9XCI7XG4gIH1cblxuICBAaWYgJGFuZ2xlID09IFwidG9wXCIge1xuICAgICRhbmdsZTogMDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiA3O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJyaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAxO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDQ7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiAzO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA2O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNTtcbiAgfVxuXG4gIEBpZiB1bml0KCRoZWlnaHQpID09IFwiXCIgb3IgdW5pdCgkaGVpZ2h0KSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skaGVpZ2h0fSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIGhlaWdodC5cIlxuICB9XG5cbiAgQGlmIHVuaXQoJHdpZHRoKSA9PSBcIlwiIG9yIHVuaXQoJHdpZHRoKSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skd2lkdGh9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3Igd2lkdGguXCJcbiAgfVxuXG4gIC8vIG9mZnNldCA0NWRlZyB0byBtYWtlIGVhY2ggc2lkZSBzdGFydCBhdCAwXG4gICRkZWc6ICRhbmdsZSArIDQ1O1xuICAvLyBpZiB1bml0cywgcmVtb3ZlIHVuaXRzXG4gIEBpZiB1bml0KCRkZWcpID09IGRlZyB7XG4gICAgJGRlZzogJGRlZyAvIDFkZWc7XG4gIH1cbiAgLy8gc2hpZnQgdG8gYmUgb24gYSBzY2FsZSBmcm9tIDAgdG8gOTAuXG4gIEB3aGlsZSAkZGVnID4gOTAge1xuICAgICRkZWc6ICRkZWcgLSA5MDtcbiAgfVxuICBAd2hpbGUgJGRlZyA8IDAge1xuICAgICRkZWc6ICRkZWcgKyA5MDtcbiAgfVxuICAvLyBHZXQgYSByYXRpbyBvZiA5MCB0byBtdWx0aXBseSBieS5cbiAgJGRlZzogJGRlZyAvIDkwO1xuXG4gIC8vIG1ha2Ugc3VyZSBtZXRyaWNzIGFyZSByZXNldFxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gIC8vIHJ1biB0aHJvdWdoIHNpZGVzXG4gIEBpZiAkYW5nbGUgPD0gNDUgb3IgJGFuZ2xlID4gMzE1IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKSAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gNDUgYW5kICRhbmdsZSA8PSAxMzUge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqICRkZWcpIDAgKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGg7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDEzNSBhbmQgJGFuZ2xlIDw9IDIyNSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAoJHdpZHRoICogJGRlZykgMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDIyNSBhbmQgJGFuZ2xlIDw9IDMxNSB7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aCAoJGhlaWdodCAqICRkZWcpIDA7XG4gIH1cbn0iLCIvLyBWZXJ0aWNhbGx5IGNlbnRlciBhbnl0aGluZywgbGl0ZXJhbGx5IGFueXRoaW5nLlxuLy8gaHR0cDovL3plcm9zaXh0aHJlZS5zZS92ZXJ0aWNhbC1hbGlnbi1hbnl0aGluZy13aXRoLWp1c3QtMy1saW5lcy1vZi1jc3MvXG5AbWl4aW4gdmVydGljYWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuXG4gIHRvcDogJG1pZHBvaW50O1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3ZlcnRpY2FsIGNlbnRlcicpIHtcbiAgICAgIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhvcml6b250YWwgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgQGlmICRtaWRwb2ludCAhPSAwJSB7XG4gICAgbGVmdDogJG1pZHBvaW50O1xuICB9XG5cbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBYnNvbHV0ZSBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFic29sdXRlLWNlbnRlcigkdmVydGljYWw6IG51bGwsICRob3Jpem9udGFsOiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHZlcnRpY2FsOiBpZigkdmVydGljYWwgIT0gbnVsbCwgJHZlcnRpY2FsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgdG9wOiAkdmVydGljYWw7XG4gIEBpZiAkaG9yaXpvbnRhbCAhPSAwJSB7XG4gICAgbGVmdDogJGhvcml6b250YWw7XG4gIH1cblxuICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENTUyBsZXZlbCA0IFZpZXdwb3J0XG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtZGV2aWNlLWFkYXB0LyN0aGUtYXR2aWV3cG9ydC1ydWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiB2aWV3cG9ydCB7XG4gIEAtd2Via2l0LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tcy12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQHZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4iLCJAbWl4aW4gdW5kZXJsaW5lKCRiYWNrZ3JvdW5kOiBudWxsLCAkY29sb3I6IG51bGwsICRjbGVhci1kZXNjZW5kZXJzOiBudWxsLCAkZGlzdGFuY2U6IG51bGwsICR3aWR0aDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkYmFja2dyb3VuZDogaWYoJGJhY2tncm91bmQgIT0gbnVsbCwgJGJhY2tncm91bmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgYmFja2dyb3VuZCcpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNvbG9yJykpO1xuICAkY2xlYXItZGVzY2VuZGVyczogaWYoJGNsZWFyLWRlc2NlbmRlcnMgIT0gbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnMsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycycpKTtcbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGRpc3RhbmNlJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgd2lkdGgnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgJFBYOiAuMDYyNWVtO1xuXG4gIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKCRleHRlbmQpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHMoYmFja2dyb3VuZC1pbWFnZSkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhsaW5lYXItZ3JhZGllbnQpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKFxuICAgICAgbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKVxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSk7XG4gIH1cbiAgYmFja2dyb3VuZC1zaXplOiAoMiAqICRQWCkgKCgxICsgJHdpZHRoKSAqICRQWCk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgKCgkd2lkdGgpICogJFBYKSArICRkaXN0YW5jZTtcblxuICBAaWYgJGNsZWFyLWRlc2NlbmRlcnMge1xuICAgIHRleHQtc2hhZG93OiAoMSAqICRQWCkgKDEgKiAkUFgpIDAgJGJhY2tncm91bmQsICgtMSAqICRQWCkgMCAwICRiYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd1bmRlcmxpbmUnKSB7XG4gICAgICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBUlQhXG4vLyBJbnNwaXJlZCBieSBodHRwOi8vZWxydW1vcmRlbGFsdXouZ2l0aHViLmlvL1BpeGVsYXRvci9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFydCgkYXJ0LCAkcHgtc2l6ZTogbnVsbCwgJGNvbG9yOiBudWxsLCAkcmFkaXVzOiBudWxsKSB7XG4gICRweC1zaXplOiBpZigkcHgtc2l6ZSAhPSBudWxsLCAkcHgtc2l6ZSwgdG9vbGtpdC1nZXQoJ2FydCBwaXhlbCBzaXplJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCdhcnQgY29sb3InKSk7XG4gICRyYWRpdXM6IGlmKCRyYWRpdXMgIT0gbnVsbCwgJHJhZGl1cywgdG9vbGtpdC1nZXQoJ2FydCBib3JkZXIgcmFkaXVzJykpO1xuXG4gICRidWlsZDogKCk7XG4gICR5OiAkcHgtc2l6ZTtcbiAgJHg6IDA7XG5cbiAgaGVpZ2h0OiAkcHgtc2l6ZTtcbiAgd2lkdGg6ICRweC1zaXplO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyX2xlbmd0aCgkYXJ0KSB7XG4gICAgJGNoYXI6IHN0cl9zbGljZSgkYXJ0LCAkaSwgJGkpO1xuICAgICR4OiAkeCArICRweC1zaXplO1xuXG4gICAgQGlmICRjaGFyID09ICduJyB7XG4gICAgICAkeTogJHkgKyAkcHgtc2l6ZTtcbiAgICAgICR4OiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY2hhciAhPSAnICcge1xuICAgICAgJGJvcmRlcjogJHggJHkgMCAkY29sb3I7XG4gICAgICAkYnVpbGQ6IGFwcGVuZCgkYnVpbGQsICRib3JkZXIsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBib3gtc2hhZG93OiAkYnVpbGQ7XG59IiwiQG1peGluIHNldC1tdWx0aXBsZSgkdmFsdWUsICRwcm9wZXJ0aWVzLi4uKSB7XG4gICRwcm9wZXJ0eS1sZW5ndGg6IGxlbmd0aCgkcHJvcGVydGllcyk7XG4gICRlcnJvci1tc2c6IFwiVGhlIGBzZXQtbXVsdGlwbGVgIG1peGluIHJlcXVpcmVzIHlvdSB0byBwYXNzIGluIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzIHRoZSBzZWNvbmQgYXJndW1lbnRcIjtcblxuICBAaWYgJHByb3BlcnR5LWxlbmd0aCA8IDEge1xuICAgIEBpZiBmZWF0dXJlLWV4aXN0cyhhdC1lcnJvcikge1xuICAgICAgQGVycm9yICRlcnJvci1tc2c7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICRlcnJvci1tc2c7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCBpbiBpcyBhIHdoaXRlLXNwYWNlZCBzZXBhcmF0ZWQgbGlzdC5cbiAgJHByb3BlcnRpZXM6IGlmKCRwcm9wZXJ0eS1sZW5ndGggPT0gMSwgbnRoKCRwcm9wZXJ0aWVzLCAxKSwgJHByb3BlcnRpZXMpO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSBpbiAkcHJvcGVydGllcyB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWVcbiAgfVxufVxuIiwiLy8gIE1vZHVsZSBTY2FsZSBhbmQgYmFzZSBmb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJGJhc2UtZm9udC1zaXplOiAgIDE0cHg7XG4kaWRlYWwtZm9udC1zaXplOiAgMjJweDtcbi8vICRiYXNlLWxpbmUtaGVpZ2h0OiBtcygxLCAkYmFzZS1mb250LXNpemUpO1xuXG4kcmh5dGhtLXVuaXQ6IFwicmVtXCI7XG4kcmh5dGhtLWdhcDogOHB4O1xuJHJlbS13aXRoLXB4LWZhbGxiYWNrOiBmYWxzZTtcblxuJHNjdXQtcmVtLWJhc2U6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZS1mb250LXNpemUpO1xuXG5cbi8vIHt7IENvbXBvbmVudCBzaXplIH19XG4kZ2xvYmFsLXJhZGl1czogM3B4O1xuIiwiLy8gIEdyaWQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG5cbiRsYXlvdXQtYmFzZTogKFxuICBndXR0ZXJzOiAxLzUsXG4gIGNvbHVtbi13aWR0aDogODBweCxcbiAgLy8gZ3V0dGVyLXBvc2l0aW9uOiBpbnNpZGUtc3RhdGljLFxuICBkZWJ1ZzogKFxuICAgIC8vIGltYWdlOiBzaG93LFxuICApLFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IHRydWUsXG4gICAgcmVtOiBmYWxzZSxcbiAgKSxcbik7XG4kc3VzeTogbGF5b3V0KDUgJGxheW91dC1iYXNlKTtcblxuLy8ge3sgRWxlbWVudCB0d2ljayBwb2ludHMgfX1cblxuLy8ge3sgRGV2aWNlIGxheW91dHMgfX1cbiRzdXN5LW1lZGlhOiAoXG4gICdtb2JpbGUnOiAnKG1heC13aWR0aDogNDE0cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6ICcobWF4LXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiAnKG1heC13aWR0aDogMTAyNHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3RhYmxldCc6ICcobWluLXdpZHRoOiA3NjhweCknLFxuICAndGFibGV0LXBvcnRyYWl0LW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ2Rlc2t0b3AnOiAnKG1pbi13aWR0aDogMTIwMHB4KScsXG4gICdjYXRlZ29yeS1tZW51JzogJyhtaW4td2lkdGg6IDEwMjRweCknXG4pO1xuJHRhYmxldDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgdGFibGV0KSxcbiAgbGF5b3V0OiA5IC41XG4pO1xuJHRhYmxldC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCR0YWJsZXQsIGxheW91dCkpO1xuJGRlc2t0b3A6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIGRlc2t0b3ApLFxuICBsYXlvdXQ6IDEyIDEuNSBzcGxpdFxuKTtcbiRkZXNrdG9wLWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJGRlc2t0b3AsIGxheW91dCkpO1xuJGRlc2t0b3AtZ3JpZC1wYWRkaW5nOiBzY3V0LXJlbSgxNSk7XG5cbi8vICB7eyBMYXllcnMgLS0tLS0tIH19XG4kbGF5ZXJzOiAoXG4gIGJhc2UsXG4gIGhlYWRlci1tZW51LFxuICBkcmF3ZXIsXG4gIGRyYXdlci1zaGFkb3csXG4gIGRyYXdlci1uYXYsXG4pOyIsIi8vICBTZXR0aW5nc1xuLy8gID09PT09PT09XG5cbiRjb2xvci1saWdodC1zYXR1cmF0aW9uOiA5MyU7XG5cbi8vICBDb2xvcnNcbi8vICA9PT09PT1cblxuJGdyYXktYmFzZTogICAgICMwMDAgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrZXI6ICAgdGludCgkZ3JheS1iYXNlLCAxMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrOiAgICAgdGludCgkZ3JheS1iYXNlLCAyMCUpICAgIWRlZmF1bHQ7XG4kZ3JheTogICAgICAgICAgdGludCgkZ3JheS1iYXNlLCAzMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodDogICAgdGludCgkZ3JheS1iYXNlLCA0Ni41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodGVyOiAgdGludCgkZ3JheS1iYXNlLCA5My41JSkgIWRlZmF1bHQ7XG5cbi8vICBUZXh0c1xuLy8gIC0tLS0tXG5cbiR0ZXh0LWNvbG9yOiAkZ3JheS1kYXJrO1xuXG4vLyAgUGFsbGV0ZVxuLy8gIC0tLS0tLS0tLS0tXG5cbiRibHVlOiAjMmQ2ZWM2O1xuJGJsdWUtZGFyazogcmdiKDAsIDY5LCAxNjQpO1xuJGJsdWUtbGlnaHQ6ICNkOGU5ZmY7XG4keWVsbG93OiAjZmM5NjAwO1xuJHllbGxvdy1kYXJrOiAjYjg2ZTAwO1xuJHllbGxvdy1saW5rOiAjZmZkODAwO1xuJG9yYW5nZTogI2ZjNDcwMDtcbiRvcmFuZ2UtZGFyazogI2I4NmUwMDtcbiRyZWQ6IHJnYigyMDYsIDY4LCA2Mik7XG4kZ3JlZW46IHJnYigyOCwgMTQ5LCAyMik7XG4kcGluazogcmdiKDE5NywgMzEsIDEyNCk7XG5cbiRwcmltYXJ5OiBzaGFkZSgjNDI4YmNhLCA2LjUlKTtcbiRzdWNjZXNzOiAjNWNiODVjO1xuJGluZm86ICAgICM1YmMwZGM7XG4kd2FybmluZzogI2YwYWQ0ZTtcbiRkYW5nZXI6ICAjZDk1MzRmO1xuXG4kaW5wdXQtYm9yZGVyOiAjZTRlNGU0O1xuJGJvcmRlci1ncmF5OiAjOTE5MTkxO1xuJGJhY2tncm91bmQtZ3JheTogI2U5ZTllOTtcblxuLy8gIExpbmtzXG4vLyAgLS0tLS1cblxuJGxpbmstY29sb3I6ICAgICAgICAgICAjMDAwICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICBzaGFkZSgkbGluay1jb2xvciwgMTUlKSAhZGVmYXVsdDtcbiRsaW5rLWZvY3VzLWNvbG9yOiAgICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLWFjdGl2ZS1jb2xvcjogICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLXZpc2l0ZWQtY29sb3I6ICAgJGdyYXktZGFyayAhZGVmYXVsdDtcblxuLy8gIE5Qcm9ncmVzc1xuLy8gIC0tLS0tLS0tLVxuJG5wcm9ncmVzcy1jb2xvcjogICAgJHByaW1hcnk7XG4iLCIvLyAgRm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiAgIHJpZ2h0O1xuXG4vLyDlg4Xph53lsI3oi7Hmlodcbi8vIEBmb250LWZhY2Uge1xuLy8gICBmb250LWZhbWlseTogRW5nbGlzaDtcbi8vICAgdW5pY29kZS1yYW5nZTogVSswMC0wMjRGO1xuLy8gICBzcmM6IGxvY2FsKEhlbHZldGljYSk7XG4vLyB9XG5cbiRzYW5zOiAgICBIZWx2ZXRpY2FOZXVlLUxpZ2h0XG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUgTGlnaHQnXG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUnXG4gICAgICAgLCAgSGVsdmV0aWNhXG4gICAgICAgLCAnSGVpdGkgVEMnXG4gICAgICAgLCAnTGlIZWkgUHJvJ1xuICAgICAgICwgJ01pY3Jvc29mdCBKaGVuZ0hlaSdcbiAgICAgICAsICflvq7ou5/mraPpu5Hpq5QnXG4gICAgICAgLCAgQXJpYWxcbiAgICAgICAsICBzYW5zLXNlcmlmO1xuXG4kc2VyaWY6ICAnUFQgU2VyaWYnXG4gICAgICAgLCBHZW9yZ2lhXG4gICAgICAgLCBUaW1lc1xuICAgICAgICwgJ1RpbWVzIE5ldyBSb21hbidcbiAgICAgICAsICdTb25ndGkgVEMnXG4gICAgICAgLCAnSGlyYWdpbm8gTWluY2hvIFByb04nXG4gICAgICAgLCBzZXJpZjtcblxuJGJhc2UtZm9udC1mYW1pbHk6ICRzYW5zOyIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICBOb3JtYWxpemUuc2NzcyBzZXR0aW5nc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogSW5jbHVkZXMgbGVnYWN5IGJyb3dzZXIgc3VwcG9ydCBJRTYvN1xuICpcbiAqIFNldCB0byBmYWxzZSBpZiB5b3Ugd2FudCB0byBkcm9wIHN1cHBvcnQgZm9yIElFNiBhbmQgSUU3XG4gKi9cblxuJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQ6IGZhbHNlICFkZWZhdWx0O1xuXG4vKiBCYXNlXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIFNldCBkZWZhdWx0IGZvbnQgZmFtaWx5IHRvIHNhbnMtc2VyaWYuXG4gKiAyLiBQcmV2ZW50IGlPUyBhbmQgSUUgdGV4dCBzaXplIGFkanVzdCBhZnRlciBkZXZpY2Ugb3JpZW50YXRpb24gY2hhbmdlLFxuICogICAgd2l0aG91dCBkaXNhYmxpbmcgdXNlciB6b29tLlxuICogMy4gQ29ycmVjdHMgdGV4dCByZXNpemluZyBvZGRseSBpbiBJRSA2Lzcgd2hlbiBib2R5IGBmb250LXNpemVgIGlzIHNldCB1c2luZ1xuICogIGBlbWAgdW5pdHMuXG4gKi9cblxuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyAvKiAxICovXG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xuICBAaWYgJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQge1xuICAgICpmb250LXNpemU6IDEwMCU7IC8qIDMgKi9cbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IG1hcmdpbi5cbiAqL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBhbnkgSFRNTDUgZWxlbWVudCBpbiBJRSA4LzkuXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYGRldGFpbHNgIG9yIGBzdW1tYXJ5YCBpbiBJRSAxMC8xMVxuICogYW5kIEZpcmVmb3guXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYG1haW5gIGluIElFIDExLlxuICovXG5cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubWFpbixcbm1lbnUsXG5uYXYsXG5zZWN0aW9uLFxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgYGlubGluZS1ibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA2LzcvOC85IGFuZCBGaXJlZm94IDMuXG4gKiAyLiBOb3JtYWxpemUgdmVydGljYWwgYWxpZ25tZW50IG9mIGBwcm9ncmVzc2AgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxuYXVkaW8sXG5jYW52YXMsXG5wcm9ncmVzcyxcbnZpZGVvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiAxICovXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgLyogMiAqL1xuICBAaWYgJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQge1xuICAgICpkaXNwbGF5OiBpbmxpbmU7XG4gICAgKnpvb206IDE7XG4gIH1cbn1cblxuLyoqXG4gKiBQcmV2ZW50cyBtb2Rlcm4gYnJvd3NlcnMgZnJvbSBkaXNwbGF5aW5nIGBhdWRpb2Agd2l0aG91dCBjb250cm9scy5cbiAqIFJlbW92ZSBleGNlc3MgaGVpZ2h0IGluIGlPUyA1IGRldmljZXMuXG4gKi9cblxuYXVkaW86bm90KFtjb250cm9sc10pIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIEFkZHJlc3MgYFtoaWRkZW5dYCBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC5cbiAqIEhpZGUgdGhlIGB0ZW1wbGF0ZWAgZWxlbWVudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIEZpcmVmb3ggPCAyMi5cbiAqL1xuXG5baGlkZGVuXSxcbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyogTGlua3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIHRoZSBncmF5IGJhY2tncm91bmQgY29sb3IgZnJvbSBhY3RpdmUgbGlua3MgaW4gSUUgMTAuXG4gKi9cblxuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vKipcbiAqIEltcHJvdmUgcmVhZGFiaWxpdHkgb2YgZm9jdXNlZCBlbGVtZW50cyB3aGVuIHRoZXkgYXJlIGFsc28gaW4gYW5cbiAqIGFjdGl2ZS9ob3ZlciBzdGF0ZS5cbiAqL1xuXG5hIHtcbiAgJjphY3RpdmUsICY6aG92ZXIge1xuICAgIG91dGxpbmU6IDA7XG4gIH07XG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAvMTEsIFNhZmFyaSwgYW5kIENocm9tZS5cbiAqL1xuXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQ7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsZSBzZXQgdG8gYGJvbGRlcmAgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmIsXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuQGlmICRsZWdhY3lfYnJvd3Nlcl9zdXBwb3J0IHtcbiAgYmxvY2txdW90ZSB7XG4gICAgbWFyZ2luOiAxZW0gNDBweDtcbiAgfVxufVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqL1xuXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qKlxuICogQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYFxuICogY29udGV4dHMgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbkBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG4gIGgyIHtcbiAgICBmb250LXNpemU6IDEuNWVtO1xuICAgIG1hcmdpbjogMC44M2VtIDA7XG4gIH1cblxuICBoMyB7XG4gICAgZm9udC1zaXplOiAxLjE3ZW07XG4gICAgbWFyZ2luOiAxZW0gMDtcbiAgfVxuXG4gIGg0IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBtYXJnaW46IDEuMzNlbSAwO1xuICB9XG5cbiAgaDUge1xuICAgIGZvbnQtc2l6ZTogMC44M2VtO1xuICAgIG1hcmdpbjogMS42N2VtIDA7XG4gIH1cblxuICBoNiB7XG4gICAgZm9udC1zaXplOiAwLjY3ZW07XG4gICAgbWFyZ2luOiAyLjMzZW0gMDtcbiAgfVxufVxuXG4vKipcbiAqIEFkZHJlc3NlcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xuXG5tYXJrIHtcbiAgYmFja2dyb3VuZDogI2ZmMDtcbiAgY29sb3I6ICMwMDA7XG59XG5cbkBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG5cbiAgLyoqXG4gICAqIEFkZHJlc3NlcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBJRSA2LzcuXG4gICAqL1xuXG4gIHAsXG4gIHByZSB7XG4gICAgKm1hcmdpbjogMWVtIDA7XG4gIH1cblxuICAvKlxuICAgKiBBZGRyZXNzZXMgQ1NTIHF1b3RlcyBub3Qgc3VwcG9ydGVkIGluIElFIDYvNy5cbiAgICovXG5cbiAgcSB7XG4gICAgKnF1b3Rlczogbm9uZTtcbiAgfVxuXG4gIC8qXG4gICAqIEFkZHJlc3NlcyBgcXVvdGVzYCBwcm9wZXJ0eSBub3Qgc3VwcG9ydGVkIGluIFNhZmFyaSA0LlxuICAgKi9cblxuICBxOmJlZm9yZSxcbiAgcTphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgY29udGVudDogbm9uZTtcbiAgfVxufVxuXG4vKipcbiAqIEFkZHJlc3MgaW5jb25zaXN0ZW50IGFuZCB2YXJpYWJsZSBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgYWZmZWN0aW5nIGBsaW5lLWhlaWdodGAgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1YixcbnN1cCB7XG4gIGZvbnQtc2l6ZTogNzUlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbkBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG5cbiAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAgTGlzdHNcbiAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuICAvKlxuICAgKiBBZGRyZXNzZXMgbWFyZ2lucyBzZXQgZGlmZmVyZW50bHkgaW4gSUUgNi83LlxuICAgKi9cblxuICBkbCxcbiAgbWVudSxcbiAgb2wsXG4gIHVsIHtcbiAgICAqbWFyZ2luOiAxZW0gMDtcbiAgfVxuXG4gIGRkIHtcbiAgICAqbWFyZ2luOiAwIDAgMCA0MHB4O1xuICB9XG5cbiAgLypcbiAgICogQWRkcmVzc2VzIHBhZGRpbmdzIHNldCBkaWZmZXJlbnRseSBpbiBJRSA2LzcuXG4gICAqL1xuXG4gIG1lbnUsXG4gIG9sLFxuICB1bCB7XG4gICAgKnBhZGRpbmc6IDAgMCAwIDQwcHg7XG4gIH1cblxuICAvKlxuICAgKiBDb3JyZWN0cyBsaXN0IGltYWdlcyBoYW5kbGVkIGluY29ycmVjdGx5IGluIElFIDcuXG4gICAqL1xuXG4gIG5hdiB1bCxcbiAgbmF2IG9sIHtcbiAgICAqbGlzdC1zdHlsZTogbm9uZTtcbiAgICAqbGlzdC1zdHlsZS1pbWFnZTogbm9uZTtcbiAgfVxuXG59XG5cbi8qIEVtYmVkZGVkIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gUmVtb3ZlIGJvcmRlciB3aGVuIGluc2lkZSBgYWAgZWxlbWVudCBpbiBJRSA4LzkvMTAuXG4gKiAyLiBJbXByb3ZlcyBpbWFnZSBxdWFsaXR5IHdoZW4gc2NhbGVkIGluIElFIDcuXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyOiAwO1xuICBAaWYgJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQge1xuICAgICotbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyAvKiAyICovXG4gIH1cbn1cblxuLyoqXG4gKiBDb3JyZWN0IG92ZXJmbG93IG5vdCBoaWRkZW4gaW4gSUUgOS8xMC8xMS5cbiAqL1xuXG5zdmc6bm90KDpyb290KSB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkcmVzcyBtYXJnaW4gbm90IHByZXNlbnQgaW4gSUUgOC85IGFuZCBTYWZhcmkuXG4gKi9cblxuZmlndXJlIHtcbiAgbWFyZ2luOiAxZW0gNDBweDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGRpZmZlcmVuY2VzIGJldHdlZW4gRmlyZWZveCBhbmQgb3RoZXIgYnJvd3NlcnMuXG4gKi9cblxuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgaGVpZ2h0OiAwO1xufVxuXG4vKipcbiAqIENvbnRhaW4gb3ZlcmZsb3cgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnByZSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgb2RkIGBlbWAtdW5pdCBmb250IHNpemUgcmVuZGVyaW5nIGluIGFsbCBicm93c2Vycy5cbiAqIENvcnJlY3QgZm9udCBmYW1pbHkgc2V0IG9kZGx5IGluIElFIDYsIFNhZmFyaSA0LzUsIGFuZCBDaHJvbWUuXG4gKi9cblxuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIEBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG4gICAgX2ZvbnQtZmFtaWx5OiAnY291cmllciBuZXcnLCBtb25vc3BhY2U7XG4gIH1cbiAgZm9udC1zaXplOiAxZW07XG59XG5cbi8qIEZvcm1zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEtub3duIGxpbWl0YXRpb246IGJ5IGRlZmF1bHQsIENocm9tZSBhbmQgU2FmYXJpIG9uIE9TIFggYWxsb3cgdmVyeSBsaW1pdGVkXG4gKiBzdHlsaW5nIG9mIGBzZWxlY3RgLCB1bmxlc3MgYSBgYm9yZGVyYCBwcm9wZXJ0eSBpcyBzZXQuXG4gKi9cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGNvbG9yIG5vdCBiZWluZyBpbmhlcml0ZWQuXG4gKiAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuXG4gKiAyLiBDb3JyZWN0IGZvbnQgcHJvcGVydGllcyBub3QgYmVpbmcgaW5oZXJpdGVkLlxuICogMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKiA0LiBJbXByb3ZlcyBhcHBlYXJhbmNlIGFuZCBjb25zaXN0ZW5jeSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7IC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xuICBtYXJnaW46IDA7IC8qIDMgKi9cbiAgQGlmICRsZWdhY3lfYnJvd3Nlcl9zdXBwb3J0IHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IC8qIDMgKi9cbiAgICAqdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogMyAqL1xuICB9XG59XG5cbi8qKlxuICogQWRkcmVzcyBgb3ZlcmZsb3dgIHNldCB0byBgaGlkZGVuYCBpbiBJRSA4LzkvMTAvMTEuXG4gKi9cblxuYnV0dG9uIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYHRleHQtdHJhbnNmb3JtYCBpbmhlcml0YW5jZSBmb3IgYGJ1dHRvbmAgYW5kIGBzZWxlY3RgLlxuICogQWxsIG90aGVyIGZvcm0gY29udHJvbCBlbGVtZW50cyBkbyBub3QgaW5oZXJpdCBgdGV4dC10cmFuc2Zvcm1gIHZhbHVlcy5cbiAqIENvcnJlY3QgYGJ1dHRvbmAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveCwgSUUgOC85LzEwLzExLCBhbmQgT3BlcmEuXG4gKiBDb3JyZWN0IGBzZWxlY3RgIHN0eWxlIGluaGVyaXRhbmNlIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uLFxuc2VsZWN0IHtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qKlxuICogMS4gQXZvaWQgdGhlIFdlYktpdCBidWcgaW4gQW5kcm9pZCA0LjAuKiB3aGVyZSAoMikgZGVzdHJveXMgbmF0aXZlIGBhdWRpb2BcbiAqICBhbmQgYHZpZGVvYCBjb250cm9scy5cbiAqIDIuIENvcnJlY3QgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSBgaW5wdXRgIHR5cGVzIGluIGlPUy5cbiAqIDMuIEltcHJvdmUgdXNhYmlsaXR5IGFuZCBjb25zaXN0ZW5jeSBvZiBjdXJzb3Igc3R5bGUgYmV0d2VlbiBpbWFnZS10eXBlXG4gKiAgYGlucHV0YCBhbmQgb3RoZXJzLlxuICogNC4gUmVtb3ZlcyBpbm5lciBzcGFjaW5nIGluIElFIDcgd2l0aG91dCBhZmZlY3Rpbmcgbm9ybWFsIHRleHQgaW5wdXRzLlxuICogIEtub3duIGlzc3VlOiBpbm5lciBzcGFjaW5nIHJlbWFpbnMgaW4gSUUgNi5cbiAqL1xuXG5idXR0b24sXG5odG1sIGlucHV0W3R5cGU9XCJidXR0b25cIl0sIC8qIDEgKi9cbmlucHV0W3R5cGU9XCJyZXNldFwiXSxcbmlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgLyogMiAqL1xuICBjdXJzb3I6IHBvaW50ZXI7IC8qIDMgKi9cbiAgQGlmICRsZWdhY3lfYnJvd3Nlcl9zdXBwb3J0IHtcbiAgICAqb3ZlcmZsb3c6IHZpc2libGU7ICAvKiA0ICovXG4gIH1cbn1cblxuLyoqXG4gKiBSZS1zZXQgZGVmYXVsdCBjdXJzb3IgZm9yIGRpc2FibGVkIGVsZW1lbnRzLlxuICovXG5cbmJ1dHRvbltkaXNhYmxlZF0sXG5odG1sIGlucHV0W2Rpc2FibGVkXSB7XG4gIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyoqXG4gKiBSZW1vdmUgaW5uZXIgcGFkZGluZyBhbmQgYm9yZGVyIGluIEZpcmVmb3ggNCsuXG4gKi9cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxuaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXIge1xuICBib3JkZXI6IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBGaXJlZm94IDQrIHNldHRpbmcgYGxpbmUtaGVpZ2h0YCBvbiBgaW5wdXRgIHVzaW5nIGAhaW1wb3J0YW50YCBpblxuICogdGhlIFVBIHN0eWxlc2hlZXQuXG4gKi9cblxuaW5wdXQge1xuICBsaW5lLWhlaWdodDogbm9ybWFsO1xufVxuXG4vKipcbiAqIDEuIEFkZHJlc3MgYm94IHNpemluZyBzZXQgdG8gYGNvbnRlbnQtYm94YCBpbiBJRSA4LzkvMTAuXG4gKiAyLiBSZW1vdmUgZXhjZXNzIHBhZGRpbmcgaW4gSUUgOC85LzEwLlxuICogIEtub3duIGlzc3VlOiBleGNlc3MgcGFkZGluZyByZW1haW5zIGluIElFIDYuXG4gKi9cblxuaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdLFxuaW5wdXRbdHlwZT1cInJhZGlvXCJdIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAyICovXG4gIEBpZiAkbGVnYWN5X2Jyb3dzZXJfc3VwcG9ydCB7XG4gICAgKmhlaWdodDogMTNweDsgLyogMyAqL1xuICAgICp3aWR0aDogMTNweDsgLyogMyAqL1xuICB9XG59XG5cbi8qKlxuICogRml4IHRoZSBjdXJzb3Igc3R5bGUgZm9yIENocm9tZSdzIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucy4gRm9yIGNlcnRhaW5cbiAqIGBmb250LXNpemVgIHZhbHVlcyBvZiB0aGUgYGlucHV0YCwgaXQgY2F1c2VzIHRoZSBjdXJzb3Igc3R5bGUgb2YgdGhlXG4gKiBkZWNyZW1lbnQgYnV0dG9uIHRvIGNoYW5nZSBmcm9tIGBkZWZhdWx0YCB0byBgdGV4dGAuXG4gKi9cblxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xuICBoZWlnaHQ6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQWRkcmVzcyBgYXBwZWFyYW5jZWAgc2V0IHRvIGBzZWFyY2hmaWVsZGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKiAyLiBBZGRyZXNzIGBib3gtc2l6aW5nYCBzZXQgdG8gYGJvcmRlci1ib3hgIGluIFNhZmFyaSBhbmQgQ2hyb21lLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBzZWFyY2ggY2FuY2VsIGJ1dHRvbiBpbiBTYWZhcmkgYW5kIENocm9tZSBvbiBPUyBYLlxuICogU2FmYXJpIChidXQgbm90IENocm9tZSkgY2xpcHMgdGhlIGNhbmNlbCBidXR0b24gd2hlbiB0aGUgc2VhcmNoIGlucHV0IGhhc1xuICogcGFkZGluZyAoYW5kIGB0ZXh0ZmllbGRgIGFwcGVhcmFuY2UpLlxuICovXG5cbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24sXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcbiAqIERlZmluZSBjb25zaXN0ZW50IGJvcmRlciwgbWFyZ2luLCBhbmQgcGFkZGluZy5cbiAqL1xuXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjMGMwYzA7XG4gIG1hcmdpbjogMCAycHg7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjYyNWVtIDAuNzVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IGBjb2xvcmAgbm90IGJlaW5nIGluaGVyaXRlZCBpbiBJRSA4LzkvMTAvMTEuXG4gKiAyLiBSZW1vdmUgcGFkZGluZyBzbyBwZW9wbGUgYXJlbid0IGNhdWdodCBvdXQgaWYgdGhleSB6ZXJvIG91dCBmaWVsZHNldHMuXG4gKiAzLiBDb3JyZWN0cyB0ZXh0IG5vdCB3cmFwcGluZyBpbiBGaXJlZm94IDMuXG4gKiA0LiBDb3JyZWN0cyBhbGlnbm1lbnQgZGlzcGxheWVkIG9kZGx5IGluIElFIDYvNy5cbiAqL1xuXG5sZWdlbmQge1xuICBib3JkZXI6IDA7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xuICBAaWYgJGxlZ2FjeV9icm93c2VyX3N1cHBvcnQge1xuICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDMgKi9cbiAgICAqbWFyZ2luLWxlZnQ6IC03cHg7IC8qIDQgKi9cbiAgfVxufVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSA4LzkvMTAvMTEuXG4gKi9cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gKiBEb24ndCBpbmhlcml0IHRoZSBgZm9udC13ZWlnaHRgIChhcHBsaWVkIGJ5IGEgcnVsZSBhYm92ZSkuXG4gKiBOT1RFOiB0aGUgZGVmYXVsdCBjYW5ub3Qgc2FmZWx5IGJlIGNoYW5nZWQgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWC5cbiAqL1xuXG5vcHRncm91cCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBUYWJsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxuICovXG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG5cbnRkLFxudGgge1xuICBwYWRkaW5nOiAwO1xufSIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQcmludCBzdHlsZXMuXG4vLyBJbmxpbmVkIHRvIGF2b2lkIHJlcXVpcmVkIEhUVFAgY29ubmVjdGlvbjogaDVicC5jb20vclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQG1lZGlhIHByaW50IHtcbiAgKiB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBjb2xvcjogIzAwMCAhaW1wb3J0YW50OyAvLyBCbGFjayBwcmludHMgZmFzdGVyOiBoNWJwLmNvbS9zXG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIHRleHQtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7IH1cbiAgYSxcbiAgYTp2aXNpdGVkIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfVxuICBhW2hyZWZdOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiAoXCIgYXR0cihocmVmKSBcIilcIjsgfVxuICBhYmJyW3RpdGxlXTphZnRlciB7XG4gICAgY29udGVudDogXCIgKFwiIGF0dHIodGl0bGUpIFwiKVwiOyB9XG4gIC8vXG4gIC8vIERvbid0IHNob3cgbGlua3MgZm9yIGltYWdlcywgb3IgamF2YXNjcmlwdC9pbnRlcm5hbCBsaW5rc1xuICAuaXIgYTphZnRlcixcbiAgYVtocmVmXj1cImphdmFzY3JpcHQ6XCJdOmFmdGVyLFxuICBhW2hyZWZePVwiI1wiXTphZnRlciB7XG4gICAgY29udGVudDogXCJcIjsgfVxuICBwcmUsXG4gIGJsb2NrcXVvdGUge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICM5OTk7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkOyB9XG4gIHRoZWFkIHtcbiAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7IH1cbiAgLy8gaDVicC5jb20vdFxuICB0cixcbiAgaW1nIHtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7IH1cbiAgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4gIEBwYWdlIHtcbiAgICBtYXJnaW46IDAuNWNtOyB9XG5cbiAgcCxcbiAgaDIsXG4gIGgzIHtcbiAgICBvcnBoYW5zOiAzO1xuICAgIHdpZG93czogMzsgfVxuICBoMixcbiAgaDMge1xuICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOyB9IH1cbiJdLCJtYXBwaW5ncyI6IkE4Q0FBOzs7OztFQUtFO0FzQkxGOztnRkFFZ0Y7QUFDaEY7Ozs7R0FJRztBQUlIO2dGQUNnRjtBQUVoRjs7Ozs7O0dBTUc7QUFFSCxBQUFBLElBQUksQ0FBQztFQUNILFdBQVcsRUFBRSxVQUFXO0VBQUUsT0FBTztFQUNqQyxvQkFBb0IsRUFBRSxJQUFLO0VBQUUsT0FBTztFQUNwQyx3QkFBd0IsRUFBRSxJQUFLO0VBQUUsT0FBTyxFQUl6Qzs7QUFFRDs7R0FFRztBQUVILEFBQUEsSUFBSSxDQUFDO0VBQ0gsTUFBTSxFQUFFLENBQUUsR0FDWDs7QUFFRDtnRkFDZ0Y7QUFFaEY7Ozs7O0dBS0c7QUFFSCxBQUFBLE9BQU87QUFDUCxBQUFBLEtBQUs7QUFDTCxBQUFBLE9BQU87QUFDUCxBQUFBLFVBQVU7QUFDVixBQUFBLE1BQU07QUFDTixBQUFBLE1BQU07QUFDTixBQUFBLE1BQU07QUFDTixBQUFBLE1BQU07QUFDTixBQUFBLElBQUk7QUFDSixBQUFBLElBQUk7QUFDSixBQUFBLEdBQUc7QUFDSCxBQUFBLE9BQU87QUFDUCxBQUFBLE9BQU8sQ0FBQztFQUNOLE9BQU8sRUFBRSxLQUFNLEdBQ2hCOztBQUVEOzs7R0FHRztBQUVILEFBQUEsS0FBSztBQUNMLEFBQUEsTUFBTTtBQUNOLEFBQUEsUUFBUTtBQUNSLEFBQUEsS0FBSyxDQUFDO0VBQ0osT0FBTyxFQUFFLFlBQWE7RUFBRSxPQUFPO0VBQy9CLGNBQWMsRUFBRSxRQUFTO0VBQUUsT0FBTyxFQUtuQzs7QUFFRDs7O0dBR0c7QUFFSCxBQUFvQixLQUFmLEFBQUEsSUFBSyxFQUFBLEFBQUEsQUFBUyxRQUFSLEFBQUEsR0FBVztFQUNwQixPQUFPLEVBQUUsSUFBSztFQUNkLE1BQU0sRUFBRSxDQUFFLEdBQ1g7O0FBRUQ7OztHQUdHO0NBRUgsQUFBQSxBQUFPLE1BQU4sQUFBQTtBQUNELEFBQUEsUUFBUSxDQUFDO0VBQ1AsT0FBTyxFQUFFLElBQUssR0FDZjs7QUFFRDtnRkFDZ0Y7QUFFaEY7O0dBRUc7QUFFSCxBQUFBLENBQUMsQ0FBQztFQUNBLGdCQUFnQixFQUFFLFdBQVksR0FDL0I7O0FBRUQ7OztHQUdHO0FBRUgsQUFBQSxDQUFDLEFBQ0UsT0FBTyxFQURWLEFBQUEsQ0FBQyxBQUNZLE1BQU0sQ0FBQztFQUNoQixPQUFPLEVBQUUsQ0FBRSxHQUNaOztBQUdIO2dGQUNnRjtBQUVoRjs7R0FFRztBQUVILEFBQVUsSUFBTixDQUFBLEFBQUEsS0FBQyxBQUFBLEVBQU87RUFDVixhQUFhLEVBQUUsVUFBVyxHQUMzQjs7QUFFRDs7R0FFRztBQUVILEFBQUEsQ0FBQztBQUNELEFBQUEsTUFBTSxDQUFDO0VBQ0wsV0FBVyxFQUFFLElBQUssR0FDbkI7O0FBUUQ7O0dBRUc7QUFFSCxBQUFBLEdBQUcsQ0FBQztFQUNGLFVBQVUsRUFBRSxNQUFPLEdBQ3BCOztBQUVEOzs7R0FHRztBQUVILEFBQUEsRUFBRSxDQUFDO0VBQ0QsU0FBUyxFQUFFLEdBQUk7RUFDZixNQUFNLEVBQUUsUUFBUyxHQUNsQjs7QUE2QkQ7O0dBRUc7QUFFSCxBQUFBLElBQUksQ0FBQztFQUNILFVBQVUsRUFBRSxJQUFLO0VBQ2pCLEtBQUssRUFBRSxJQUFLLEdBQ2I7O0FBZ0NEOztHQUVHO0FBRUgsQUFBQSxLQUFLLENBQUM7RUFDSixTQUFTLEVBQUUsR0FBSSxHQUNoQjs7QUFFRDs7R0FFRztBQUVILEFBQUEsR0FBRztBQUNILEFBQUEsR0FBRyxDQUFDO0VBQ0YsU0FBUyxFQUFFLEdBQUk7RUFDZixXQUFXLEVBQUUsQ0FBRTtFQUNmLFFBQVEsRUFBRSxRQUFTO0VBQ25CLGNBQWMsRUFBRSxRQUFTLEdBQzFCOztBQUVELEFBQUEsR0FBRyxDQUFDO0VBQ0YsR0FBRyxFQUFFLE1BQU8sR0FDYjs7QUFFRCxBQUFBLEdBQUcsQ0FBQztFQUNGLE1BQU0sRUFBRSxPQUFRLEdBQ2pCOztBQTZDRDtnRkFDZ0Y7QUFFaEY7OztHQUdHO0FBRUgsQUFBQSxHQUFHLENBQUM7RUFDRixNQUFNLEVBQUUsQ0FBRSxHQUlYOztBQUVEOztHQUVHO0FBRUgsQUFBYSxHQUFWLEFBQUEsSUFBSyxDQUFBLEFBQUEsS0FBSyxFQUFFO0VBQ2IsUUFBUSxFQUFFLE1BQU8sR0FDbEI7O0FBRUQ7Z0ZBQ2dGO0FBRWhGOztHQUVHO0FBRUgsQUFBQSxNQUFNLENBQUM7RUFDTCxNQUFNLEVBQUUsUUFBUyxHQUNsQjs7QUFFRDs7R0FFRztBQUVILEFBQUEsRUFBRSxDQUFDO0VBQ0QsVUFBVSxFQUFFLFdBQVk7RUFDeEIsTUFBTSxFQUFFLENBQUUsR0FDWDs7QUFFRDs7R0FFRztBQUVILEFBQUEsR0FBRyxDQUFDO0VBQ0YsUUFBUSxFQUFFLElBQUssR0FDaEI7O0FBRUQ7OztHQUdHO0FBRUgsQUFBQSxJQUFJO0FBQ0osQUFBQSxHQUFHO0FBQ0gsQUFBQSxHQUFHO0FBQ0gsQUFBQSxJQUFJLENBQUM7RUFDSCxXQUFXLEVBQUUsb0JBQXFCO0VBSWxDLFNBQVMsRUFBRSxHQUFJLEdBQ2hCOztBQUVEO2dGQUNnRjtBQUVoRjs7O0dBR0c7QUFFSDs7Ozs7O0dBTUc7QUFFSCxBQUFBLE1BQU07QUFDTixBQUFBLEtBQUs7QUFDTCxBQUFBLFFBQVE7QUFDUixBQUFBLE1BQU07QUFDTixBQUFBLFFBQVEsQ0FBQztFQUNQLEtBQUssRUFBRSxPQUFRO0VBQUUsT0FBTztFQUN4QixJQUFJLEVBQUUsT0FBUTtFQUFFLE9BQU87RUFDdkIsTUFBTSxFQUFFLENBQUU7RUFBRSxPQUFPLEVBS3BCOztBQUVEOztHQUVHO0FBRUgsQUFBQSxNQUFNLENBQUM7RUFDTCxRQUFRLEVBQUUsT0FBUSxHQUNuQjs7QUFFRDs7Ozs7R0FLRztBQUVILEFBQUEsTUFBTTtBQUNOLEFBQUEsTUFBTSxDQUFDO0VBQ0wsY0FBYyxFQUFFLElBQUssR0FDdEI7O0FBRUQ7Ozs7Ozs7O0dBUUc7QUFFSCxBQUFBLE1BQU07QUFDTixBQUF3QixJQUFwQixDQUFDLEtBQUssQ0FBQSxBQUFBLElBQUMsQ0FBSyxRQUFRLEFBQWI7QUFDWCxBQUFrQixLQUFiLENBQUEsQUFBQSxJQUFDLENBQUssT0FBTyxBQUFaO0FBQ04sQUFBbUIsS0FBZCxDQUFBLEFBQUEsSUFBQyxDQUFLLFFBQVEsQUFBYixFQUFlO0VBQ25CLGtCQUFrQixFQUFFLE1BQU87RUFBRSxPQUFPO0VBQ3BDLE1BQU0sRUFBRSxPQUFRO0VBQUUsT0FBTyxFQUkxQjs7QUFFRDs7R0FFRztBQUVILEFBQWUsTUFBVCxDQUFBLEFBQUEsUUFBQyxBQUFBO0FBQ1AsQUFBbUIsSUFBZixDQUFDLEtBQUssQ0FBQSxBQUFBLFFBQUMsQUFBQSxFQUFVO0VBQ25CLE1BQU0sRUFBRSxPQUFRLEdBQ2pCOztBQUVEOztHQUVHO0FBRUgsQUFBTSxNQUFBLEFBQUEsa0JBQWtCO0FBQ3hCLEFBQUssS0FBQSxBQUFBLGtCQUFrQixDQUFDO0VBQ3RCLE1BQU0sRUFBRSxDQUFFO0VBQ1YsT0FBTyxFQUFFLENBQUUsR0FDWjs7QUFFRDs7O0dBR0c7QUFFSCxBQUFBLEtBQUssQ0FBQztFQUNKLFdBQVcsRUFBRSxNQUFPLEdBQ3JCOztBQUVEOzs7O0dBSUc7QUFFSCxBQUFxQixLQUFoQixDQUFBLEFBQUEsSUFBQyxDQUFLLFVBQVUsQUFBZjtBQUNOLEFBQWtCLEtBQWIsQ0FBQSxBQUFBLElBQUMsQ0FBSyxPQUFPLEFBQVosRUFBYztFQUNsQixVQUFVLEVBQUUsVUFBVztFQUFFLE9BQU87RUFDaEMsT0FBTyxFQUFFLENBQUU7RUFBRSxPQUFPLEVBS3JCOztBQUVEOzs7O0dBSUc7QUFFSCxBQUFvQixLQUFmLENBQUEsQUFBQSxJQUFDLENBQUssUUFBUSxBQUFiLENBQWMsMkJBQTJCO0FBQy9DLEFBQW9CLEtBQWYsQ0FBQSxBQUFBLElBQUMsQ0FBSyxRQUFRLEFBQWIsQ0FBYywyQkFBMkIsQ0FBQztFQUM5QyxNQUFNLEVBQUUsSUFBSyxHQUNkOztBQUVEOzs7R0FHRztBQUVILEFBQW1CLEtBQWQsQ0FBQSxBQUFBLElBQUMsQ0FBSyxRQUFRLEFBQWIsRUFBZTtFQUNuQixrQkFBa0IsRUFBRSxTQUFVO0VBQUUsT0FBTztFQUN2QyxVQUFVLEVBQUUsV0FBWTtFQUFFLE9BQU8sRUFDbEM7O0FBRUQ7Ozs7R0FJRztBQUVILEFBQW9CLEtBQWYsQ0FBQSxBQUFBLElBQUMsQ0FBSyxRQUFRLEFBQWIsQ0FBYyw4QkFBOEI7QUFDbEQsQUFBb0IsS0FBZixDQUFBLEFBQUEsSUFBQyxDQUFLLFFBQVEsQUFBYixDQUFjLDJCQUEyQixDQUFDO0VBQzlDLGtCQUFrQixFQUFFLElBQUssR0FDMUI7O0FBRUQ7O0dBRUc7QUFFSCxBQUFBLFFBQVEsQ0FBQztFQUNQLE1BQU0sRUFBRSxpQkFBa0I7RUFDMUIsTUFBTSxFQUFFLEtBQU07RUFDZCxPQUFPLEVBQUUscUJBQXNCLEdBQ2hDOztBQUVEOzs7OztHQUtHO0FBRUgsQUFBQSxNQUFNLENBQUM7RUFDTCxNQUFNLEVBQUUsQ0FBRTtFQUFFLE9BQU87RUFDbkIsT0FBTyxFQUFFLENBQUU7RUFBRSxPQUFPLEVBS3JCOztBQUVEOztHQUVHO0FBRUgsQUFBQSxRQUFRLENBQUM7RUFDUCxRQUFRLEVBQUUsSUFBSyxHQUNoQjs7QUFFRDs7O0dBR0c7QUFFSCxBQUFBLFFBQVEsQ0FBQztFQUNQLFdBQVcsRUFBRSxJQUFLLEdBQ25COztBQUVEO2dGQUNnRjtBQUVoRjs7R0FFRztBQUVILEFBQUEsS0FBSyxDQUFDO0VBQ0osZUFBZSxFQUFFLFFBQVM7RUFDMUIsY0FBYyxFQUFFLENBQUUsR0FDbkI7O0FBRUQsQUFBQSxFQUFFO0FBQ0YsQUFBQSxFQUFFLENBQUM7RUFDRCxPQUFPLEVBQUUsQ0FBRSxHQUNaOztBQzVqQkQsTUFBTSxDQUFOLEtBQUs7RUFDSCxBQUFBLENBQUMsQ0FBQztJQUNBLFVBQVUsRUFBRSxzQkFBdUI7SUFDbkMsS0FBSyxFQUFFLGVBQWdCO0lBQ3ZCLFVBQVUsRUFBRSxlQUFnQjtJQUM1QixXQUFXLEVBQUUsZUFBZ0IsR0FBRztFQUNsQyxBQUFBLENBQUM7RUFDRCxBQUFDLENBQUEsQUFBQSxRQUFRLENBQUM7SUFDUixlQUFlLEVBQUUsU0FBVSxHQUFHO0VBQ2hDLEFBQU8sQ0FBTixDQUFBLEFBQUEsSUFBQyxBQUFBLENBQUssTUFBTSxDQUFDO0lBQ1osT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFJLENBQU8sR0FBRyxHQUFHO0VBQ2pDLEFBQVcsSUFBUCxDQUFBLEFBQUEsS0FBQyxBQUFBLENBQU0sTUFBTSxDQUFDO0lBQ2hCLE9BQU8sRUFBRSxJQUFJLENBQUMsV0FBSSxDQUFRLEdBQUcsR0FBRztFQUdsQyxBQUFLLEdBQUYsQ0FBQyxDQUFDLEFBQUEsTUFBTTtFQUNYLEFBQXNCLENBQXJCLENBQUEsQUFBQSxJQUFDLEVBQU0sYUFBYSxBQUFuQixDQUFvQixNQUFNO0VBQzVCLEFBQVksQ0FBWCxDQUFBLEFBQUEsSUFBQyxFQUFNLEdBQUcsQUFBVCxDQUFVLE1BQU0sQ0FBQztJQUNqQixPQUFPLEVBQUUsRUFBRyxHQUFHO0VBQ2pCLEFBQUEsR0FBRztFQUNILEFBQUEsVUFBVSxDQUFDO0lBQ1QsTUFBTSxFQUFFLGNBQWU7SUFDdkIsaUJBQWlCLEVBQUUsS0FBTSxHQUFHO0VBQzlCLEFBQUEsS0FBSyxDQUFDO0lBQ0osT0FBTyxFQUFFLGtCQUFtQixHQUFHO0VBRWpDLEFBQUEsRUFBRTtFQUNGLEFBQUEsR0FBRyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsS0FBTSxHQUFHO0VBQzlCLEFBQUEsR0FBRyxDQUFDO0lBQ0YsU0FBUyxFQUFFLGVBQWdCLEdBQUc7RUFFaEMsS0FBSztJQUNILE1BQU0sRUFBRSxLQUFNO0VBRWhCLEFBQUEsQ0FBQztFQUNELEFBQUEsRUFBRTtFQUNGLEFBQUEsRUFBRSxDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUU7SUFDWCxNQUFNLEVBQUUsQ0FBRSxHQUFHO0VBQ2YsQUFBQSxFQUFFO0VBQ0YsQUFBQSxFQUFFLENBQUM7SUFDRCxnQkFBZ0IsRUFBRSxLQUFNLEdBQUciLCJuYW1lcyI6W119 */
/*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
html {
  box-sizing: border-box; }

*,
*:before,
*:after {
  box-sizing: inherit; }

embed,
img,
object,
video {
  max-width: 100%;
  height: auto; }

html {
  font-family: HelveticaNeue-Light, "Helvetica Neue Light", "Helvetica Neue", Helvetica, "Heiti TC", "LiHei Pro", "Microsoft JhengHei", "\5FAE\8EDF\6B63\9ED1\9AD4", Arial, sans-serif;
  color: #333333;
  line-height: 1.5;
  font-size: 14px;
  -webkit-font-smoothing: antialiased; }

html:after {
  display: none;
  content: "mobile: (max-width: 414px) | tablet-portrait: (max-width: 768px) and (orientation: portrait) | tablet-landscape: (max-width: 1024px) and (orientation: landscape) | tablet: (min-width: 768px) | tablet-portrait-min: (min-width: 768px) and (orientation: portrait) | tablet-landscape-min: (min-width: 768px) and (orientation: landscape) | desktop: (min-width: 1200px) | category-menu: (min-width: 1024px)"; }

body {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: column nowrap;
  flex-flow: column nowrap;
  background-color: #fff;
  height: 100vh; }

body.drawer-enabled {
  overflow: hidden; }

.main-wrapper {
  -webkit-box-flex: 1;
  -ms-flex: 1 0 auto;
  flex: 1 0 auto; }

.main-wrapper .container {
  padding-top: 8px; }

@media (min-width: 768px) {
  .main-wrapper .container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between;
    overflow: visible;
    padding-top: 48px; } }
@media (min-width: 768px) {
  main[role="main"] {
    width: 66.66667%; } }
@media (min-width: 1200px) {
  main[role="main"] {
    width: 80%; } }
html.turbolinks-progress-bar::before {
  background-color: #3e82bd !important; }

textarea {
  resize: vertical; }

img,
svg {
  vertical-align: middle;
  object-fit: cover;
}

img[data-sizes="auto"]:not(.slick-slide) {
  display: block;
  width: 100%;
  height: auto; }

hr {
  border-style: dotted;
  border-color: rgba(0, 0, 0, 0.3); }

.cf:after {
  content: '';
  display: block;
  clear: both; }

.clr {
  clear: both; }

.text-center {
  text-align: center; }

.hidden {
  display: none !important;
  visibility: hidden; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2Jhc2UvX3Jvb3Quc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2Jhc2UvX3Jvb3Quc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19raWNrc3RhcnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tIHZlbmRvciBtaXhpbiBsaWJyYXJpZXMgLS0tLVxuQGltcG9ydCBcIm1peGluc1wiLFxuICAgICAgICBcImNsYXNzZXNcIixcbiAgICAgICAgXCJ+c3VzeVwiLFxuICAgICAgICBcIn5zY3V0XCIsXG4gICAgICAgIFwifnNhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0XCI7XG5cbi8vIC0tLS0gdmFyaWFibGVzIGFuZCBjb25maWcgLS0tLVxuQGltcG9ydCBcInNldHRpbmdzL3NjYWxlXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZ3JpZFwiLFxuICAgICAgICBcInNldHRpbmdzL2NvbG9yc1wiLFxuICAgICAgICBcInNldHRpbmdzL2ZvbnRcIjsvLyAgUm9vdFxuLy8gID09PT1cblxuQGltcG9ydCBcIn5zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9raWNrc3RhcnRcIjtcblxuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiAkYmFzZS1mb250LWZhbWlseTtcbiAgdGV4dDogJHRleHQtY29sb3IgMS41ICRiYXNlLWZvbnQtc2l6ZTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICY6YWZ0ZXIgeyBAaW5jbHVkZSBzaGFyZS1icmVha3BvaW50cygkc3VzeS1tZWRpYSk7IH1cbn1cblxuYm9keSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgJi5kcmF3ZXItZW5hYmxlZCB7IG92ZXJmbG93OiBoaWRkZW47IH1cbn1cblxuLm1haW4td3JhcHBlciB7XG4gIGZsZXg6IDEgMCBhdXRvO1xuICAuY29udGFpbmVyIHtcbiAgICBwYWRkaW5nLXRvcDogcigxKTtcbiAgICBAaW5jbHVkZSBzdXN5KCR0YWJsZXQpIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgIHBhZGRpbmctdG9wOiByKDYpO1xuICAgIH1cbiAgfVxufVxubWFpbltyb2xlPVwibWFpblwiXSB7XG4gIEBpbmNsdWRlIHN1c3koJHRhYmxldCkgeyB3aWR0aDogc3Bhbig2IG9mIDkgMCk7IH1cbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkgeyB3aWR0aDogc3BhbigxMiBvZiAxNSAwKTsgfVxufVxuXG4vLyBUdXJib2xpbmtzXG5odG1sLnR1cmJvbGlua3MtcHJvZ3Jlc3MtYmFyOjpiZWZvcmUge2JhY2tncm91bmQtY29sb3I6ICRucHJvZ3Jlc3MtY29sb3IgIWltcG9ydGFudDt9XG5cbi8vIEFsbG93IG9ubHkgdmVydGljYWwgcmVzaXppbmcgb2YgdGV4dGFyZWFzLlxudGV4dGFyZWEge3Jlc2l6ZTogdmVydGljYWw7fVxuaW1nLCBzdmcge3ZlcnRpY2FsLWFsaWduOiBtaWRkbGU7fVxuaW1nW2RhdGEtc2l6ZXM9XCJhdXRvXCJdOm5vdCguc2xpY2stc2xpZGUpIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHNpemU6IDEwMCUgYXV0bztcbn1cblxuaHIge1xuICBib3JkZXItc3R5bGU6IGRvdHRlZDtcbiAgYm9yZGVyLWNvbG9yOiByZ2JhKCMwMDAsIC4zKTtcbn1cblxuLmNmIHtjbGVhcjogZml4O31cbi5jbHJ7Y2xlYXI6IGJvdGg7fVxuXG4udGV4dC1jZW50ZXIge3RleHQtYWxpZ246IGNlbnRlcjt9XG5cbi8vIEhpZGUgZnJvbSBib3RoIHNjcmVlbnJlYWRlcnMgYW5kIGJyb3dzZXJzOiBoNWJwLmNvbS91XG4uaGlkZGVuIHsgQGluY2x1ZGUgSGlkZGVuOyB9IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7IiwiaHRtbCB7XG4gIEBpZiBtaXhpbi1leGlzdHMoJ2JveC1zaXppbmcnKSB7XG4gICAgQGluY2x1ZGUgYm94LXNpemluZygnYm9yZGVyLWJveCcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxufVxuXG4qLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gIGJveC1zaXppbmc6IGluaGVyaXQ7XG59XG5cbmVtYmVkLFxuaW1nLFxub2JqZWN0LFxudmlkZW8ge1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogYXV0bztcbn1cbiJdLCJtYXBwaW5ncyI6IjtBOENBQTs7Ozs7RUFLRTtBc0JMRixBQUFBLElBQUksQ0FBQztFQUtELGVBQWUsRUFBRSxVQUFXO0VBQzVCLFVBQVUsRUFBRSxVQUFXLEdBRTFCOztBQUVELEFBQUEsQ0FBQyxFQUFFLEFBQUMsQ0FBQSxBQUFBLE9BQU8sRUFBRSxBQUFDLENBQUEsQUFBQSxNQUFNLENBQUM7RUFDbkIsVUFBVSxFQUFFLE9BQVEsR0FDckI7O0FBRUQsQUFBQSxLQUFLO0FBQ0wsQUFBQSxHQUFHO0FBQ0gsQUFBQSxNQUFNO0FBQ04sQUFBQSxLQUFLLENBQUM7RUFDSixTQUFTLEVBQUUsSUFBSztFQUNoQixNQUFNLEVBQUUsSUFBSyxHQUNkOztBcEVKRCxBQUFBLElBQUksQ0FBQztFQUNILFdBQVcsRW1FTkgsbUJBQW1CLEVBQ3BCLHNCQUFzQixFQUN0QixnQkFBZ0IsRUFDZixTQUFTLEVBQ1YsVUFBVSxFQUNWLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsaUJBQWlCLEVBQ2hCLEtBQUssRUFDTCxVQUFVO0VuRUZsQixJQUFJLEVtRFZJLE9BQUcsQ25EVU8sR0FBRyxDZ0VmSixJQUFJO0VoRWdCckIsc0JBQXNCLEVBQUUsV0FBWSxHQUVyQztFQUxELEFBQUEsSUFBSSxBQUlELE1BQU0sQ0FBQztJQ1lSLE9BQU8sRUFBRSxJQUFLO0lBQ2QsT0FBVyxFQVhHLGtaQUFFLEdERnFDOztBQUd2RCxBQUFBLElBQUksQ0FBQztFQUNILE9BQU8sRUFBRSxJQUFLO0VBQ2QsU0FBUyxFQUFFLGFBQWM7RUFDekIsZ0JBQWdCLEVBQUUsSUFBSztFQUN2QixNQUFNLEVBQUUsS0FBTSxHQUVmO0VBTkQsQUFBQSxJQUFJLEFBS0QsZUFBZSxDQUFDO0lBQUUsUUFBUSxFQUFFLE1BQU8sR0FBSTs7QUFHMUMsQUFBQSxhQUFhLENBQUM7RUFDWixJQUFJLEVBQUUsUUFBUyxHQVVoQjtFQVhELEFBRUUsYUFGVyxDQUVYLFVBQVUsQ0FBQztJQUNULFdBQVcsRUMvQmtCLEdBQVcsR0RzQ3pDO0k2Q1NDLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztNN0NuQnJCLEFBRUUsYUFGVyxDQUVYLFVBQVUsQ0FBQztRQUdQLE9BQU8sRUFBRSxJQUFLO1FBQ2QsZUFBZSxFQUFFLGFBQWM7UUFDL0IsUUFBUSxFQUFFLE9BQVE7UUFDbEIsV0FBVyxFQ3BDZ0IsSUFBVyxHRHNDekM7O0E2Q1NDLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztFN0NQckIsQUFBZ0IsSUFBWixDQUFBLEFBQUEsSUFBQyxDQUFLLE1BQU0sQUFBWCxFQUFhO0lBQ1MsS0FBSyxFcUMrR2xCLFNBQVUsR3JDN0d2Qjs7QTZDSUcsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO0U3Q1B0QixBQUFnQixJQUFaLENBQUEsQUFBQSxJQUFDLENBQUssTUFBTSxBQUFYLEVBQWE7SUFFVSxLQUFLLEVxQzhHbkIsR0FBVSxHckM3R3ZCOztBQUdELEFBQTRCLElBQXhCLEFBQUEsd0JBQXdCLEFBQUEsUUFBUSxDQUFDO0VBQUMsZ0JBQWdCLEVtRHJDNUMsT0FBRyxDbkRxQzRELFVBQVUsR0FBRzs7QUFHdEYsQUFBQSxRQUFRLENBQUM7RUFBQyxNQUFNLEVBQUUsUUFBUyxHQUFHOztBQUM5QixBQUFBLEdBQUcsRUFBRSxBQUFBLEdBQUcsQ0FBQztFQUFDLGNBQWMsRUFBRSxNQUFPLEdBQUc7O0FBQ3BDLEFBQXVDLEdBQXBDLENBQUEsQUFBQSxVQUFDLENBQVcsTUFBTSxBQUFqQixDQUFrQixJQUFLLENBQUEsQUFBQSxZQUFZLEVBQUU7RUFDdkMsT0FBTyxFQUFFLEtBQU07RUFDZixJQUFJLEVBQUUsU0FBVSxHQUNqQjs7QUFFRCxBQUFBLEVBQUUsQ0FBQztFQUNELFlBQVksRUFBRSxNQUFPO0VBQ3JCLFlBQVksRUFBTyxrQkFBSSxHQUN4Qjs7QUFFRCxBQUFBLEdBQUcsQ0FBQztFQUFDLEtBQUssRUFBRSxHQUFJLEdBQUc7O0FBQ25CLEFBQUEsSUFBSSxDQUFBO0VBQUMsS0FBSyxFQUFFLElBQUssR0FBRzs7QUFFcEIsQUFBQSxZQUFZLENBQUM7RUFBQyxVQUFVLEVBQUUsTUFBTyxHQUFHOztBQUdwQyxBQUFBLE9BQU8sQ0FBQztFRXJFTixPQUFPLEVBQUUsZUFBZ0I7RUFBRSxVQUFVLEVBQUUsTUFBTyxHRnFFbkIiLCJuYW1lcyI6W119 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.container:after {
  content: '';
  display: block;
  clear: both; }

.container {
  margin: 0 auto;
  padding-right: 8px;
  padding-left: 8px;
  width: 100%;
  max-width: 414px; }

@media (min-width: 768px) {
  .container {
    max-width: 1040px; } }
@media (min-width: 1200px) {
  .container {
    max-width: 1200px;
    padding-right: 16px;
    padding-left: 16px; } }
.visible-tablet {
  display: none; }

@media (min-width: 768px) {
  .visible-tablet {
    display: block; } }
.visible-desktop {
  display: none; }

@media (min-width: 1200px) {
  .visible-desktop {
    display: block; } }
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2Jhc2UvX2xheW91dC5zY3NzIiwic291cmNlcyI6WyIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvYmFzZS9fbGF5b3V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX21peGlucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19jbGFzc2VzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2N1dC9kaXN0L19zY3V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL190b29sa2l0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BsYWNlaG9sZGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fZm9udHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9faW50cmluc2ljLXJhdGlvLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX25lc3RlZC1jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BhcmFsbGF4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3J0bC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190YXJnZXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdHJpYW5nbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2VudGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3ZpZXdwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3VuZGVybGluZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19hcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0LW11bHRpcGxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3NjYWxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2ZvbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tIHZlbmRvciBtaXhpbiBsaWJyYXJpZXMgLS0tLVxuQGltcG9ydCBcIm1peGluc1wiLFxuICAgICAgICBcImNsYXNzZXNcIixcbiAgICAgICAgXCJ+c3VzeVwiLFxuICAgICAgICBcIn5zY3V0XCIsXG4gICAgICAgIFwifnNhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0XCI7XG5cbi8vIC0tLS0gdmFyaWFibGVzIGFuZCBjb25maWcgLS0tLVxuQGltcG9ydCBcInNldHRpbmdzL3NjYWxlXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZ3JpZFwiLFxuICAgICAgICBcInNldHRpbmdzL2NvbG9yc1wiLFxuICAgICAgICBcInNldHRpbmdzL2ZvbnRcIjsvLyB7e0NvbnRhaW5lciAtLS0tLX19XG4uY29udGFpbmVyIHtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIHBhZGRpbmc6IG4oKSByKDEpO1xuICBjbGVhcjogZml4O1xuICB3aWR0aDogMTAwJTtcbiAgbWF4LXdpZHRoOiA0MTRweDtcblxuICBAaW5jbHVkZSBzdXN5KCR0YWJsZXQpIHtcbiAgICBtYXgtd2lkdGg6IGNvbnRhaW5lcig5KTtcbiAgfSBcbiBcbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkge1xuICAgIG1heC13aWR0aDogY29udGFpbmVyKDYpO1xuICAgIHBhZGRpbmc6IG4oKSByKDIpO1xuICB9IFxufVxuXG4vLyB7e1JXRCBUcmlnZ2VyIHBvaW50cyAtLS19fVxuLnZpc2libGUtdGFibGV0IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7IGRpc3BsYXk6IGJsb2NrOyB9ICBcbn1cbi52aXNpYmxlLWRlc2t0b3Age1xuICBkaXNwbGF5OiBub25lO1xuICBAaW5jbHVkZSBzdXN5KCRkZXNrdG9wKSB7IGRpc3BsYXk6IGJsb2NrOyB9XG59IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiQThDQUE7Ozs7O0VBS0U7QTlDT0YsQUFBQSxVQUFVLENBQUM7RUFDVCxNQUFNLEVBQUUsTUFBTztFQUNmLE9BQU8sRUNiZSxDQUFPLENBRUUsR0FBVztFRFkxQyxLQUFLLEVBQUUsR0FBSTtFQUNYLEtBQUssRUFBRSxJQUFLO0VBQ1osU0FBUyxFQUFFLEtBQU0sR0FVbEI7RTZDdUJHLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztJN0N0Q3JCLEFBQUEsVUFBVSxDQUFDO01BUVAsU0FBUyxFb0NvQ08sTUFBUSxHcEM3QjNCO0U2Q3VCRyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07STdDdEN0QixBQUFBLFVBQVUsQ0FBQztNQVlQLFNBQVMsRW9DZ0NPLE1BQVE7TXBDL0J4QixPQUFPLEVDeEJhLENBQU8sQ0FFRSxJQUFXLEdEd0IzQzs7QUFHRCxBQUFBLGVBQWUsQ0FBQztFQUNkLE9BQU8sRUFBRSxJQUFLLEdBRWY7RTZDaUJHLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztJN0NwQnJCLEFBQUEsZUFBZSxDQUFDO01BRVcsT0FBTyxFQUFFLEtBQU0sR0FDekM7O0FBQ0QsQUFBQSxnQkFBZ0IsQ0FBQztFQUNmLE9BQU8sRUFBRSxJQUFLLEdBRWY7RTZDYUcsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO0k3Q2hCdEIsQUFBQSxnQkFBZ0IsQ0FBQztNQUVXLE9BQU8sRUFBRSxLQUFNLEdBQzFDIiwibmFtZXMiOltdfQ== */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
a {
  text-decoration: none;
  color: #000; }

a:hover,
a:focus {
  color: black; }

::-moz-selection {
  text-shadow: none;
  background-color: #eeeeee; }

::selection {
  text-shadow: none;
  background-color: #eeeeee; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2Jhc2UvX3R5cGUuc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2Jhc2UvX3R5cGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy8vIHt7IExpbmtzIH19XG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBAaW5jbHVkZSBzY3V0LWNvbG9yLXN3YXAoJGxpbmstY29sb3IsICRsaW5rLWhvdmVyLWNvbG9yKTtcbn1cblxuLy8ge3sgU2VsZWN0aW9uIHN0eWxlIH19XG46OnNlbGVjdGlvbiB7XG4gIHRleHQtc2hhZG93OiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS1saWdodGVyO1xufSIsIi8vIHt7U2FzcyBtaXhpbnMgLS0tLS0tLS19fVxuQGZ1bmN0aW9uIG4oKSB7IEByZXR1cm4gdW5xdW90ZShcIipcIik7IH1cblxuQGZ1bmN0aW9uIHIoJHRpbWVzOiAxKSB7IEByZXR1cm4gJHJoeXRobS1nYXAgKiAkdGltZXM7IH1cblxuQG1peGluIHN1c3koJG1hcCkge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkbWFwLCBxdWVyeSksIG1hcC1nZXQoJG1hcCwgbGF5b3V0KSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiByZXZlcnNlLWhpZGUtdmlzdWFsbHkoKSB7XG4gIGJvcmRlcjogMDtcbiAgY2xpcDogYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogYXV0bztcbn1cblxuQG1peGluIHNoYXJlLWJyZWFrcG9pbnRzKCRtYXAsICRjc3Nwcm9wOiBjb250ZW50KSB7XG4gICRkZXNjcmlwdGlvbjogJyc7XG5cbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgQGlmICRkZXNjcmlwdGlvbiAhPSAgJycge1xuICAgICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAnIHwgJztcbiAgICB9XG4gICAgXG4gICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAkcHJvcGVydHkgKyc6ICcrIGluc3BlY3QoJHZhbHVlKTtcbiAgfVxuXG4gIGRpc3BsYXk6IG5vbmU7XG4gICN7JGNzc3Byb3B9OiAgJGRlc2NyaXB0aW9uO1xufVxuXG5AbWl4aW4gdG9nZ2xlLWZhZGUoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIH1cbn1cblxuQG1peGluIHRvZ2dsZS1zaG93KCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IDA7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9ICBcbn1cblxuQG1peGluIHNob3coKSB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICBoZWlnaHQ6IGF1dG87ICBcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyKCkge1xuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCBcbiAgJjo6LW1vei1wbGFjZWhvbGRlcixcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxufVxuXG5AbWl4aW4gZGVidWcoJGNvbG9yOiAjZmZmIHJnYmEodG9tYXRvLCAuMykpIHtcbiAgY29sb3I6ICRjb2xvclxufVxuXG5AbWl4aW4gbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSk7XG4gID4gbGkgKyBsaTpiZWZvcmUgeyBtYXJnaW4tbGVmdDogJHNwYWNlICsgNHB4OyB9XG59XG4iLCJAbWl4aW4gSGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBTZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBwYWRkaW5nOiAwIHIoMikgMCByKDEpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAvLyBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIC8vIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gIC8vIGJhY2tncm91bmQ6IHVybChcImltYWdlcy9hcnJvdy1kb3duLnN2Z1wiKVxuICAvLyAgICAgICAgICAgOTIlIDUwJSAvIDhweCAxMHB4XG4gIC8vICAgICAgICAgICBuby1yZXBlYXRcbiAgLy8gICAgICAgICAgIHRyYW5zcGFyZW50O1xuICAubm8tY3NzLWFwcGVhcmFuY2UgJiB7XG4gICAgQGluY2x1ZGUgc2N1dC1wYWRkaW5nKG4gMCk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gTm9ybWFsaXplKCkge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmUgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDA7XG59IiwiLy8gU3VzeVxuLy8gPT09PVxuXG5AaW1wb3J0ICdzdXN5L2xhbmd1YWdlL3N1c3knO1xuIiwiLy8gU3VzeSBOZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4kc3VzeS12ZXJzaW9uOiAyLjE7XG5cbkBpbXBvcnQgXCIuLi9zdVwiO1xuQGltcG9ydCBcIi4uL291dHB1dC9mbG9hdFwiO1xuXG5AaW1wb3J0IFwic3VzeS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1c3kvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1c3kvZ3JpZHNcIjtcbkBpbXBvcnQgXCJzdXN5L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRleHRcIjtcbkBpbXBvcnQgXCJzdXN5L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInN1c3kvc3BhblwiO1xuQGltcG9ydCBcInN1c3kvZ3V0dGVyc1wiO1xuQGltcG9ydCBcInN1c3kvaXNvbGF0ZVwiO1xuQGltcG9ydCBcInN1c3kvZ2FsbGVyeVwiO1xuQGltcG9ydCBcInN1c3kvcm93c1wiO1xuQGltcG9ydCBcInN1c3kvbWFyZ2luc1wiO1xuQGltcG9ydCBcInN1c3kvcGFkZGluZ1wiO1xuQGltcG9ydCBcInN1c3kvYmxlZWRcIjtcbkBpbXBvcnQgXCJzdXN5L2JyZWFrcG9pbnQtcGx1Z2luXCI7XG4iLCIvLyBTdVxuLy8gPT1cblxuQGltcG9ydCBcInN1L3V0aWxpdGllc1wiO1xuQGltcG9ydCBcInN1L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3UvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1L2dyaWRcIjtcbiIsIi8vIE1hcCBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBUcnVuY2F0ZSBMaXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiBhIGxpc3QsIHRydW5jYXRlZCB0byBhIGdpdmVuIGxlbmd0aFxuQGZ1bmN0aW9uIF9zdXN5LXRydW5jYXRlLWxpc3QoXG4gICRsaXN0LFxuICAkbGVuZ3RoXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgJF9yZXR1cm46IGlmKCRpIDw9ICRsZW5ndGgsIGFwcGVuZCgkX3JldHVybiwgbnRoKCRsaXN0LCAkaSkpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgR2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1nZXQoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46ICRtYXA7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIHR5cGUtb2YoJF9yZXR1cm4pID09IG1hcCB7XG4gICAgICAkX3JldHVybjogbWFwLWdldCgkX3JldHVybiwgJGtleSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIFNldFxuLy8gLS0tLS0tLS1cbi8vIC0gU2V0IGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtc2V0KFxuICAkbWFwLFxuICAka2V5cy12YWx1ZS4uLlxuKSB7XG4gICRfdmFsdWU6IG50aCgka2V5cy12YWx1ZSwgLTEpO1xuICAkX2tleXM6IF9zdXN5LXRydW5jYXRlLWxpc3QoJGtleXMtdmFsdWUsIGxlbmd0aCgka2V5cy12YWx1ZSkgLSAxKTtcbiAgJF9sZW5ndGg6IGxlbmd0aCgkX2tleXMpO1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkX2xlbmd0aCB7XG4gICAgJF9uOiAwIC0gJGk7XG4gICAgJF9sZXZlbDogX3N1c3ktdHJ1bmNhdGUtbGlzdCgkX2tleXMsICRfbGVuZ3RoICsgJF9uKTtcbiAgICAkX2xldmVsOiBfc3VzeS1kZWVwLWdldCgkbWFwLCAkX2xldmVsLi4uKTtcbiAgICAkX21lcmdlOiBudGgoJF9rZXlzLCAkX24pO1xuICAgICRfbWVyZ2U6ICgkX21lcmdlOiAkX3ZhbHVlKTtcbiAgICAkX3JldHVybjogaWYoJF9sZXZlbCwgbWFwLW1lcmdlKCRfbGV2ZWwsICRfbWVyZ2UpLCAkX21lcmdlKTtcbiAgICAkX3ZhbHVlOiAkX3JldHVybjtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBNZXJnZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIDIgb2JqZWN0cyBvZiBhbnkgZGVwdGgsIG1lcmdlZFxuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtbWVyZ2UoXG4gICRtYXAxLFxuICAkbWFwMlxuKSB7XG5cbiAgQGlmIHR5cGUtb2YoJG1hcDEpICE9IG1hcCBvciB0eXBlLW9mKCRtYXAyKSAhPSBtYXAge1xuICAgICRtYXAxOiAkbWFwMjtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAyIHtcbiAgICAgICRfbmV3OiAoJGtleTogX3N1c3lfZGVlcC1tZXJnZShtYXAtZ2V0KCRtYXAxLCAka2V5KSwgJHZhbHVlKSk7XG4gICAgICAkbWFwMTogbWFwLW1lcmdlKCRtYXAxLCAkX25ldyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbWFwMTtcbn1cblxuXG4vLyBEZWVwIEhhcy1LZXlcbi8vIC0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gdHJ1ZSBpZiBhIGRlZXAga2V5IGV4aXN0c1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtaGFzLWtleShcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogbnVsbDtcbiAgJF9zdG9wOiBmYWxzZTtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgbm90KCRfc3RvcCkge1xuICAgICAgJF9yZXR1cm46IG1hcC1oYXMta2V5KCRtYXAsICRrZXkpO1xuICAgIH1cblxuICAgIEBpZiAkX3JldHVybiB7XG4gICAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9zdG9wOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTZXR0aW5nc1xuLy8gPT09PT09PT1cblxuLy8gVmVyc2lvblxuLy8gLS0tLS0tLVxuJHN1LXZlcnNpb246IDEuMTtcblxuXG4vLyBEZWZhdWx0IFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBUaGUgYmFzaWMgc2V0dGluZ3NcbiRzdXN5LWRlZmF1bHRzOiAoXG4gIGNvbHVtbnM6IDQsXG4gIGd1dHRlcnM6IC4yNSxcbik7XG5cblxuLy8gVXNlciBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBEZWZpbmUgdGhlICRzdXN5IHZhcmlhYmxlIHdpdGggYSBtYXAgb2YgeW91ciBvd24gc2V0dGluZ3MuXG4vLyAtIFNldCBFSVRIRVIgJGNvbHVtbi13aWR0aCBPUiAkY29udGFpbmVyXG4vLyAtIFVzZSAkY29sdW1uLXdpZHRoIGZvciBzdGF0aWMgbGF5b3V0c1xuJHN1c3k6ICgpICFkZWZhdWx0O1xuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IEFkZCBkZWZhdWx0cyB0byBTdXN5XG5AbWl4aW4gc3VzeS1kZWZhdWx0cyhcbiAgJGRlZmF1bHRzXG4pIHtcbiAgJHN1c3ktZGVmYXVsdHM6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJGRlZmF1bHRzKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgU2V0XG4vLyAtLS0tLS0tLVxuLy8gQ2hhbmdlIG9uZSBzZXR0aW5nXG4vLyAtICRrZXkgICA6IHNldHRpbmcgbmFtZVxuLy8gLSAkdmFsdWUgOiBzZXR0aW5nIHZhbHVlXG5AbWl4aW4gc3VzeS1zZXQoXG4gICRrZXktdmFsdWUuLi5cbikge1xuICAkc3VzeTogX3N1c3ktZGVlcC1zZXQoJHN1c3ksICRrZXktdmFsdWUuLi4pICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm4gb25lIHNldHRpbmcgZnJvbSBhIGdyaWRcbi8vIC0gJGtleSAgICAgOiA8a2V5d29yZD5cbi8vIC0gJGxheW91dCAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gc3VzeS1nZXQoXG4gICRrZXksXG4gICRsYXlvdXQ6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJHN1c3kpXG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF9vcHRpb25zOiAkbGF5b3V0ICRzdXN5ICRzdXN5LWRlZmF1bHRzO1xuICAkX2JyZWFrOiBmYWxzZTtcbiAgJF9yZXR1cm46IG51bGw7XG5cbiAgQGVhY2ggJG9wdCBpbiAkX29wdGlvbnMge1xuICAgIEBpZiB0eXBlLW9mKCRvcHQpID09IG1hcCBhbmQgbm90KCRfYnJlYWspIHtcbiAgICAgICRfa2V5c2V0OiBfc3VzeS1kZWVwLWhhcy1rZXkoJG9wdCwgJGtleS4uLik7XG4gICAgICBAaWYgJF9rZXlzZXQge1xuICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1nZXQoJG9wdCwgJGtleS4uLik7XG4gICAgICAgICRfYnJlYWs6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIE1hdGggVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09XG5cblxuLy8gVmFsaWQgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGNvbHVtbiBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRjb2x1bW5zKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkY29sdW1ucykge1xuICAgICRyZXR1cm46ICRjb2x1bW5zO1xuICB9IEBlbHNlIGlmICR0eXBlID09IGxpc3Qge1xuICAgICRmYWlsOiBudWxsO1xuICAgIEBlYWNoICRjb2wgaW4gJGNvbHVtbnMge1xuICAgICAgQGlmIHR5cGUtb2YoJGNvbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgJGZhaWw6ICRmYWlsIG9yIGlmKHVuaXRsZXNzKCRjb2wpLCBudWxsLCB0cnVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHJldHVybjogaWYoJGZhaWwsICRyZXR1cm4sICRjb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiAkcmV0dXJuICE9ICRjb2x1bW5zIGFuZCBub3QoJHNpbGVudCkge1xuICAgICRyZXR1cm46IG51bGw7XG4gICAgJHdhcm46ICckY29sdW1ucyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyIG9yIGxpc3Qgb2YgdW5pdGxlc3MgbnVtYmVycy4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGNvbHVtbnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG4vLyBWYWxpZCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgZ3V0dGVyIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtZ3V0dGVycyhcbiAgJGd1dHRlcnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXJzKSB7XG4gICAgJHJldHVybjogJGd1dHRlcnM7XG4gIH0gQGVsc2UgaWYgbm90KCRzaWxlbnQpIHtcbiAgICAkd2FybjogJyRndXR0ZXJzIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRndXR0ZXJzfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBDb2x1bW4gbWF0aFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBJcyBTeW1tZXRyaWNhbFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIGdyaWQgaXMgc3ltbWV0cmljYWwuXG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gaXMtc3ltbWV0cmljYWwoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpZih0eXBlLW9mKCRjb2x1bW5zKSA9PSBudW1iZXIsICRjb2x1bW5zLCBudWxsKTtcbn1cblxuXG4vLyBTdXN5IENvdW50XG4vLyAtLS0tLS0tLS0tXG4vLyBGaW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiBhIGdpdmVuIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktY291bnQoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykgb3IgbGVuZ3RoKCRjb2x1bW5zKTtcbn1cblxuXG4vLyBTdXN5IFN1bVxuLy8gLS0tLS0tLS1cbi8vIEZpbmQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5LXN1bShcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuXG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQgPT0gd2lkZSwgMCwgaWYoJHNwcmVhZCA9PSB3aWRlciwgMSwgLTEpKTtcbiAgJGd1dHRlci1zdW06IChzdXN5LWNvdW50KCRjb2x1bW5zKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICRjb2x1bW4tc3VtOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgQGlmIG5vdCgkY29sdW1uLXN1bSkge1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGNvbHVtbnMge1xuICAgICAgJGNvbHVtbi1zdW06ICgkY29sdW1uLXN1bSBvciAwKSArICRjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtO1xufVxuXG5cbi8vIFN1c3kgU2xpY2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBvZiBjb2x1bW5zIGF0IGEgZ2l2ZW4gbG9jYXRpb24uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkc3ViLWNvbHVtbnM6ICRzcGFuO1xuXG4gIEBpZiBub3QoaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpKSB7XG4gICAgJGxvY2F0aW9uOiAkbG9jYXRpb24gb3IgMTtcbiAgICAkc3ViLWNvbHVtbnM6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRzcGFuKSB7XG4gICAgICAkc3ViLWNvbHVtbnM6IGFwcGVuZCgkc3ViLWNvbHVtbnMsIG50aCgkY29sdW1ucywgJGkpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG4vLyBTdXN5XG4vLyAtLS0tXG4vLyBGaW5kIHRoZSBzdW0gb2YgYSBjb2x1bW4tc3Bhbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5KFxuICAkc3BhbixcbiAgJGxvY2F0aW9uICAgICA6IGZhbHNlLFxuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICAgICAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgICAgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG4gICRzcGFuOiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcblxuICBAcmV0dXJuIHN1c3ktc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCk7XG59XG4iLCIvLyBGbG9hdCBBUElcbi8vID09PT09PT09PVxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbkBpbXBvcnQgXCJmbG9hdC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJmbG9hdC9zcGFuXCI7XG5AaW1wb3J0IFwiZmxvYXQvZW5kXCI7XG5AaW1wb3J0IFwiZmxvYXQvaXNvbGF0ZVwiO1xuIiwiLy8gU2hhcmVkIEFQSVxuLy8gPT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydFwiO1xuXG5AaW1wb3J0IFwic2hhcmVkL2luc3BlY3RcIjtcbkBpbXBvcnQgXCJzaGFyZWQvb3V0cHV0XCI7XG5AaW1wb3J0IFwic2hhcmVkL2RpcmVjdGlvblwiO1xuQGltcG9ydCBcInNoYXJlZC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic2hhcmVkL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNoYXJlZC9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic2hhcmVkL3BhZGRpbmdcIjtcblxuXG5cbiIsIi8vIFN1c3kgQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydC9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9wcmVmaXhcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3JlbVwiO1xuQGltcG9ydCBcInN1cHBvcnQvY2xlYXJmaXhcIjtcbiIsIi8vIEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgU3VwcG9ydCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgYnJlYWtwb2ludDogdHJ1ZSxcbiAgICBib3gtc2l6aW5nOiB0cnVlLFxuICAgIHJlbTogdHJ1ZSxcbiAgKSxcbikpO1xuXG5cbi8vIFN1c3kgU3VwcG9ydCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VuZCBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0byB0aGUgcHJvcGVyIHN1cHBvcnQgbW9kdWxlcy5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXN1cHBvcnQoXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgLy8gQmFja2dyb3VuZCBTdXBwb3J0XG4gIEBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtaW1hZ2UoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1zaXplIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtc2l6ZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLW9yaWdpbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbigkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWNsaXAge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1jbGlwKCR2YWwpO1xuICB9XG5cbiAgLy8gQm94LVNpemluZyBTdXBwb3J0XG4gIEBlbHNlIGlmICRwcm9wID09IGJveC1zaXppbmcge1xuICAgIEBpbmNsdWRlIHN1c3ktYm94LXNpemluZygkdmFsKTtcbiAgfVxuXG4gIC8vIFJlbSBTdXBwb3J0XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cblxuXG4vLyBTdXN5IFN1cHBvcnQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBzdXBwb3J0IG9mIGEgZmVhdHVyZS5cbi8vIC0gJGZlYXR1cmUgICAgICAgOiA8c3RyaW5nPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nIFwicmVtXCIgb3IgXCJib3gtc2l6aW5nXCJcbi8vIC0gJHJlcXVpcmVtZW50cyAgOiA8bWFwPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nICh2YXJpYWJsZTogcmVtLXdpdGgtcHgtZmFsbGJhY2ssIG1peGluOiByZW0pXG4vLyAtICR3YXJuICAgICAgICAgIDogPGJvb2w+XG5AZnVuY3Rpb24gc3VzeS1zdXBwb3J0KFxuICAkZmVhdHVyZSxcbiAgJHJlcXVpcmVtZW50czogKCksXG4gICR3YXJuOiB0cnVlXG4pIHtcbiAgJF9zdXBwb3J0OiBzdXN5LWdldCh1c2UtY3VzdG9tICRmZWF0dXJlKTtcblxuICBAaWYgJF9zdXBwb3J0IHtcbiAgICAkX2ZhaWw6IGZhbHNlO1xuXG4gICAgQGVhY2ggJF90eXBlLCAkX3JlcSBpbiAkcmVxdWlyZW1lbnRzIHtcbiAgICAgIEBlYWNoICRfaSBpbiAkX3JlcSB7XG4gICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcblxuICAgICAgICBAaWYgbm90KCRfcGFzcykge1xuICAgICAgICAgICRfZmFpbDogdHJ1ZTtcbiAgICAgICAgICBAaWYgJHdhcm4ge1xuICAgICAgICAgICAgQHdhcm4gXCJZb3UgcmVxdWVzdGVkIGN1c3RvbSBzdXBwb3J0IG9mICN7JGZlYXR1cmV9LCBidXQgdGhlICN7JF9pfSAjeyRfdHlwZX0gaXMgbm90IGF2YWlsYWJsZS5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3N1cHBvcnQ6IGlmKCRfZmFpbCwgZmFsc2UsICRfc3VwcG9ydCk7XG4gIH1cblxuICBAcmV0dXJuICRfc3VwcG9ydDtcbn1cbiIsIi8vIFN1c3kgUHJlZml4XG4vLyA9PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IHNpbXBsZSBwcmVmaXhlZCBwcm9wZXJ0aWVzLlxuLy8gLSAkcHJvcCAgICAgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgICAgICA6IDxjc3MgdmFsdWU+XG4vLyAtIFskcHJlZml4XSAgOiA8YnJvd3NlciBwcmVmaXggbGlzdD5cbkBtaXhpbiBzdXN5LXByZWZpeChcbiAgJHByb3AsXG4gICR2YWwsXG4gICRwcmVmaXg6IG9mZmljaWFsXG4pIHtcbiAgQGVhY2ggJGZpeCBpbiAkcHJlZml4IHtcbiAgICAkZml4OiBpZigkZml4ID09IG9mZmljaWFsIG9yIG5vdCgkZml4KSwgJHByb3AsICctI3skZml4fS0jeyRwcm9wfScpO1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRmaXgsICR2YWwpO1xuICB9XG59XG4iLCIvLyBCYWNrZ3JvdW5kIFByb3BlcnRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEJhY2tncm91bmQgSW1hZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtaW1hZ2U+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2Vcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtaW1hZ2UsIChtaXhpbjogYmFja2dyb3VuZC1pbWFnZSksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLi4uKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBTaXplXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLXNpemU+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1zaXplKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgkc2l6ZSk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemU7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIE9yaWdpblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtb3JpZ2luPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oXG4gICRvcmlnaW5cbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLW9yaWdpbikpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRvcmlnaW47XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIENsaXBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1jbGlwPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1jbGlwKFxuICAkY2xpcFxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtY2xpcCkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNsaXAoJGNsaXApO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwO1xuICB9XG59XG4iLCIvLyBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09XG5cbi8vIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkbW9kZWw6IDxib3gtc2l6aW5nPlxuQG1peGluIHN1c3ktYm94LXNpemluZyhcbiAgJG1vZGVsOiBjb250ZW50LWJveFxuKSB7XG4gIEBpZiAkbW9kZWwge1xuICAgIEBpZiBzdXN5LXN1cHBvcnQoYm94LXNpemluZywgKG1peGluOiBib3gtc2l6aW5nKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKCRtb2RlbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJlZml4OiAobW96LCB3ZWJraXQsIG9mZmljaWFsKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktcHJlZml4KGJveC1zaXppbmcsICRtb2RlbCwgJHByZWZpeCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBEZWJ1Z2dpbmdcbi8vID09PT09PT09PVxuXG4vLyBTdXN5IEluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8gT3V0cHV0IGFyZ3VtZW50cyBwYXNzZWQgdG8gYSBpbnNwZWN0LlxuLy8gLSAkbWl4aW4gIDogPHN1c3kgbWl4aW4+XG4vLyAtICRpbnNwZWMgICA6IDxtaXhpbiBhcmd1bWVudHM+XG5cbkBtaXhpbiBzdXN5LWluc3BlY3QoXG4gICRtaXhpbixcbiAgJGluc3BlY3Rcbikge1xuICAkc2hvdzogZmFsc2U7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGluc3BlY3Qge1xuICAgIEBpZiBpbmRleCgkaXRlbSwgaW5zcGVjdCkge1xuICAgICAgJHNob3c6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzaG93IG9yIHN1c3ktZ2V0KGRlYnVnIGluc3BlY3QpIHtcbiAgICAtc3VzeS0jeyRtaXhpbn06IGluc3BlY3QoJGluc3BlY3QpO1xuICB9XG59XG4iLCIvLyBPdXRwdXRcbi8vID09PT09PVxuXG4vLyBPdXRwdXRcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IENTUyB3aXRoIHByb3BlciBicm93c2VyIHN1cHBvcnQuXG4vLyAtICRzdHlsZXMgIDogPG1hcCBvZiBjc3MgcHJvcGVydHktdmFsdWUgcGFpcnM+XG5AbWl4aW4gb3V0cHV0KFxuICAkc3R5bGVzXG4pIHtcbiAgQGVhY2ggJHByb3AsICR2YWwgaW4gJHN0eWxlcyB7XG4gICAgQGluY2x1ZGUgc3VzeS1zdXBwb3J0KCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gR3JpZCBCYWNrZ3JvdW5kIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuLy8gLSBTdWItcGl4ZWwgcm91bmRpbmcgY2FuIGxlYWQgdG8gc2V2ZXJhbCBwaXhlbHMgdmFyaWF0aW9uIGJldHdlZW4gYnJvd3NlcnMuXG5cbi8vIEdyaWQgQmFja2dyb3VuZCBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGltYWdlOiBiYWNrZ3JvdW5kLWltYWdlXG4vLyAtICRzaXplOiBiYWNrZ3JvdW5kLXNpemVcbi8vIC0gJGNsaXA6IGJhY2tncm91bmQtY2xpcFxuLy8gLSBbJGZsb3ddOiBsdHIgfCBydGxcbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0IChcbiAgJGltYWdlLFxuICAkc2l6ZTogbnVsbCxcbiAgJGNsaXA6IG51bGwsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2UsXG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZSxcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBmcm9tKCRmbG93KSB0b3AsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBNYXJnaW5zIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gTWFyZ2luIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBtYXJnaW4tb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUGFkZGluZyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIFBhZGRpbmcgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBwYWRkaW5nLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBDb250YWluZXJcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGZsb2F0LWNvbnRhaW5lcihcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gIEBpbmNsdWRlIHN1c3ktY2xlYXJmaXg7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1vdXRwdXQoJHdpZHRoLCAkanVzdGlmeSwgJHByb3BlcnR5KTtcbn1cbiIsIi8vIEZsb2F0IFNwYW4gQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBTcGFuIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHdpZHRoICAgICAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG9hdF0gICAgICAgICAgIDogZnJvbSB8IHRvXG4vLyAtIFskbWFyZ2luLWJlZm9yZV0gICA6IDxsZW5ndGg+XG4vLyAtIFskbWFyZ2luLWFmdGVyXSAgICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1iZWZvcmVdICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1hZnRlcl0gICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gICAgICAgICAgICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LXNwYW4tb3V0cHV0KFxuICAkd2lkdGgsXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbSxcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsLFxuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGwsXG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbCxcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsLFxuICAkZmxvdyAgICAgICAgICAgICA6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvICAgICA6IHRvKCRmbG93KTtcbiAgJGZyb20gICA6IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aDogJHdpZHRoLFxuICAgIGZsb2F0OiBpZigkZmxvYXQgPT0gdG8sICR0bywgbnVsbCkgb3IgaWYoJGZsb2F0ID09IGZyb20sICRmcm9tLCBudWxsKSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkcGFkZGluZy1hZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IElzb2xhdGlvbiBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gSXNvbGF0ZSBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRwdXNoICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBpc29sYXRlLW91dHB1dChcbiAgJHB1c2gsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiAkZnJvbSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRwdXNoLFxuICAgIG1hcmdpbi0jeyR0b306IC0xMDAlLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFN1c3kgU2V0dGluZ3Ncbi8vID09PT09PT09PT09PT1cblxuLy8gU3VzeSBMYW5ndWFnZSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBjZW50ZXIsXG4gIGd1dHRlci1wb3NpdGlvbjogYWZ0ZXIsXG4gIGdsb2JhbC1ib3gtc2l6aW5nOiBjb250ZW50LWJveCxcbiAgZGVidWc6IChcbiAgICBpbWFnZTogaGlkZSxcbiAgICBjb2xvcjogcmdiYSgjNjZmLCAuMjUpLFxuICAgIG91dHB1dDogYmFja2dyb3VuZCxcbiAgICB0b2dnbGU6IHRvcCByaWdodCxcbiAgKSxcbikpO1xuXG5cbi8vIFZhbGlkIEtleXdvcmQgVmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFOiBET05UJ1QgVE9VQ0hcbiRzdXN5LWtleXdvcmRzOiAoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogc3RhdGljIGZsdWlkLFxuICBvdXRwdXQ6IGlzb2xhdGUgZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogbGVmdCBjZW50ZXIgcmlnaHQsXG4gIGZsb3c6IGx0ciBydGwsXG4gIGd1dHRlci1wb3NpdGlvbjogYmVmb3JlIGFmdGVyIHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljLFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94IGNvbnRlbnQtYm94LFxuICBzcGFuOiBmdWxsLFxuICBlZGdlOiBmaXJzdCBhbHBoYSBsYXN0IG9tZWdhIGZ1bGwsXG4gIHNwcmVhZDogbmFycm93IHdpZGUgd2lkZXIsXG4gIGd1dHRlci1vdmVycmlkZTogbm8tZ3V0dGVycyBuby1ndXR0ZXIsXG4gIHJvbGU6IG5lc3QsXG4gIGNsZWFyOiBicmVhayBub2JyZWFrLFxuICBkZWJ1ZyBpbWFnZTogc2hvdyBoaWRlIHNob3ctY29sdW1ucyBzaG93LWJhc2VsaW5lLFxuICBkZWJ1ZyBvdXRwdXQ6IGJhY2tncm91bmQgb3ZlcmxheSxcbik7XG5cblxuLy8gUGFyc2UgU3VzeSBLZXl3b3JkcyBhbmQgTWFwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNldHRpbmdzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gc3RyaW5nc1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IHN0cmluZyB7XG4gICAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkc3VzeS1rZXl3b3JkcyB7XG4gICAgICAgICAgQGlmIGluZGV4KCR2YWx1ZSwgJGl0ZW0pIHtcbiAgICAgICAgICAgICRfa2V5LXZhbHVlOiBhcHBlbmQoJGtleSwgJGl0ZW0pO1xuICAgICAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtc2V0KCRfcmV0dXJuLCAkX2tleS12YWx1ZS4uLik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAvLyBtYXBzXG4gICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IG1hcCB7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIENvbHVtbnMgJiBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWxheW91dChcbiAgJHNob3J0XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuICAkX2NvbHVtbnM6ICgpO1xuICAkX2d1dHRlcnM6IG51bGw7XG5cbiAgQGlmIG5vdCh1bml0bGVzcyhudGgobnRoKCRzaG9ydCwgMSksIDEpKSkge1xuICAgICRfZ3V0dGVyczogbnRoKCRzaG9ydCwgMSk7XG4gIH0gQGVsc2Uge1xuICAgICRfY29sdW1uczogKGNvbHVtbnM6IG50aCgkc2hvcnQsIDEpKTtcbiAgICAkX2d1dHRlcnM6IGlmKGxlbmd0aCgkc2hvcnQpID4gMSwgbnRoKCRzaG9ydCwgMiksICRfZ3V0dGVycyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkX2d1dHRlcnMpID09IGxpc3QgYW5kIGxlbmd0aCgkX2d1dHRlcnMpID4gMCB7XG4gICAgJF9ndXR0ZXJzOiAoXG4gICAgICBndXR0ZXJzOiBudGgoJF9ndXR0ZXJzLCAyKSAvIG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICAgY29sdW1uLXdpZHRoOiBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlcnM6IGlmKCRfZ3V0dGVycywgKGd1dHRlcnM6ICRfZ3V0dGVycyksICgpKTtcbiAgfVxuXG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfY29sdW1ucyk7XG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfZ3V0dGVycyk7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHcmlkL0NvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWdyaWQoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogcGFyc2Utc2V0dGluZ3MoJHNob3J0KTtcbiAgJF9sYXlvdXQ6ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gbnVtYmVyIG9yIGxpc3RcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IG9yIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICAgJF9sYXlvdXQ6IGFwcGVuZCgkX2xheW91dCwgJGl0ZW0pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY29udGFpbmVyOiAkaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9sYXlvdXQ6IGlmKGxlbmd0aCgkX2xheW91dCkgPiAwLCBwYXJzZS1sYXlvdXQoJF9sYXlvdXQpLCAkX2xheW91dCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkX3JldHVybiwgJF9sYXlvdXQpO1xufVxuXG5cbi8vIFBhcnNlIFNwYW5cbi8vIC0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zcGFuKFxuICAkc2hvcnQsXG4gICRrZXk6IHNwYW5cbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgICRfYXQ6IGluZGV4KCRzaG9ydCwgYXQpO1xuXG4gICAgQGlmICRfYXQge1xuICAgICAgJF9sb2NpOiAkX2F0ICsgMTtcbiAgICAgICRfbG9jYXRpb246IG50aCgkc2hvcnQsICRfbG9jaSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAobG9jYXRpb246ICRfbG9jYXRpb24pKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfYXQsIG51bGwpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9sb2NpLCBudWxsKTtcbiAgICB9XG5cbiAgICAkX2k6IDE7XG4gICAgJF9zcGFuOiAoKTtcblxuICAgIEB3aGlsZSAkX2kgPD0gbGVuZ3RoKCRzaG9ydCkge1xuICAgICAgJF90aGlzOiBudGgoJHNob3J0LCAkX2kpO1xuXG4gICAgICBAaWYgdHlwZS1vZigkX3RoaXMpID09IG51bWJlciB7XG4gICAgICAgICRfc3BhbjogYXBwZW5kKCRfc3BhbiwgJF90aGlzKTtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgIH0gQGVsc2UgaWYgJF90aGlzID09IG9mIHtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgICAgJF9pOiBsZW5ndGgoJHNob3J0KSArIDE7XG4gICAgICB9XG5cbiAgICAgICRfaTogJF9pICsgMTtcbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCRfc3BhbikgPiAwIHtcbiAgICAgICRfc3BhbjogaWYobGVuZ3RoKCRfc3BhbikgPT0gMSwgbnRoKCRfc3BhbiwgMSksICRfc3Bhbik7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJGtleTogJF9zcGFuKSk7XG4gICAgfVxuXG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgcGFyc2UtZ3JpZCgkc2hvcnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWd1dHRlcnMoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX2d1dHRlcnM6IHBhcnNlLXNwYW4oJHNob3J0LCBndXR0ZXItb3ZlcnJpZGUpO1xuICAkX3NwYW46IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJF9ndXR0ZXJzKTtcblxuICBAaWYgJF9zcGFuIGFuZCBub3QobWFwLWdldCgkX2d1dHRlcnMsIGNvbHVtbnMpKSB7XG4gICAgJF9jb250ZXh0OiAoKTtcbiAgICAkX25ldzogKCk7XG5cbiAgICBAZWFjaCAkaXRlbSBpbiAkX3NwYW4ge1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgJF9jb250ZXh0OiBhcHBlbmQoJF9jb250ZXh0LCAkaXRlbSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJF9uZXc6IGFwcGVuZCgkX25ldywgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICRfY29udGV4dDogcGFyc2UtZ3JpZCgkX2NvbnRleHQpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDAsIG51bGwsICRfbmV3KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAxLCBudGgoJF9uZXcsIDEpLCAkX25ldyk7XG4gICAgJF9uZXc6IChndXR0ZXItb3ZlcnJpZGU6IGlmKCRfbmV3ICE9ICRfc3BhbiwgJF9uZXcsICRfc3BhbikpO1xuXG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX25ldyk7XG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX2NvbnRleHQpO1xuICB9XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG4iLCIvLyBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09XG5cblxuLy8gVmFsaWRhdGUgQ29sdW1uIE1hdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1uLW1hdGgoXG4gICRtYXRoLFxuICAkY29sdW1uLXdpZHRoXG4pIHtcbiAgQGlmICRtYXRoID09IHN0YXRpYyBhbmQgbm90KCRjb2x1bW4td2lkdGgpIHtcbiAgICBAZXJyb3IgJ1N0YXRpYyBtYXRoIHJlcXVpcmVzIGEgdmFsaWQgY29sdW1uLXdpZHRoIHNldHRpbmcuJztcbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi13aWR0aDtcbn1cbiIsIi8vIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBTZXQgYSBuZXcgbGF5b3V0IHVzaW5nIGEgc2hvcnRoYW5kXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXlvdXQsICRpbnNwZWN0KTtcbn1cblxuXG4vLyBVc2UgR3JpZFxuLy8gLS0tLS0tLS1cbi8vIFVzZSBhbiBhcmJpdHJhcnkgbGF5b3V0IGZvciBhIHNlY3Rpb24gb2YgY29kZVxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIHdpdGgtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJG9sZCAgICAgIDogJHN1c3k7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qod2l0aC1sYXlvdXQsICRpbnNwZWN0KTtcblxuICBAY29udGVudDtcblxuICAkc3VzeTogJG9sZCAhZ2xvYmFsO1xufVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gYSBwYXJzZWQgbGF5b3V0IG1hcCBiYXNlZCBvbiBzaG9ydGhhbmQgc3ludGF4XG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBsYXlvdXQoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgQHJldHVybiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xufVxuXG5cbi8vIEdldCBMYXlvdXRcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIG5ldyBsYXlvdXQgYmFzZWQgb24gY3VycmVudCBhbmQgZ2l2ZW4gc2V0dGluZ3Ncbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBmdW5jdGlvbiBfZ2V0LWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRsYXlvdXQ6IGxheW91dCgkbGF5b3V0KTtcbiAgQHJldHVybiBpZigkY2xlYW4sICRsYXlvdXQsIF9zdXN5LWRlZXAtbWVyZ2UoJHN1c3ksICRsYXlvdXQpKTtcbn1cbiIsIi8vIFN1c3kgQm94IFNpemluZ1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBib3ggbW9kZWwgZ2xvYmFsbHkgb24gYWxsIGVsZW1lbnRzLlxuLy8gLSBbJGJveF06IGJvcmRlci1ib3ggfCBjb250ZW50LWJveFxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBnbG9iYWwtYm94LXNpemluZyhcbiAgJGJveDogc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpLFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdDogJGJveDtcblxuICBAaWYgJGluaGVyaXQge1xuICAgIEBhdC1yb290IHtcbiAgICAgICBodG1sIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgICAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cbiAgICAgfVxuICB9IEBlbHNlIHtcbiAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2xvYmFsLWJveC1zaXppbmcsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgdXBkYXRlLWJveC1tb2RlbCgkYm94KTtcbn1cblxuLy8gQm9yZGVyIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBIGxlZ2FjeSBzaG9ydGN1dC4uLlxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBib3JkZXItYm94LXNpemluZyhcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCwgJGluaGVyaXQpO1xufVxuXG4vLyBVcGRhdGUgQm94IE1vZGVsXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBVcGRhdGVzIGdsb2JhbCBib3ggbW9kZWwgc2V0dGluZ1xuQG1peGluIHVwZGF0ZS1ib3gtbW9kZWwoXG4gICRib3hcbikge1xuICBAaWYgJGJveCAhPSBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykge1xuICBAaW5jbHVkZSBzdXN5LXNldChnbG9iYWwtYm94LXNpemluZywgJGJveCk7XG4gIH1cbn1cbiIsIi8vIENvbnRleHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBOZXN0ZWQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBncmlkIGZvciBuZXN0ZWQgY29udGV4dC5cbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuQGZ1bmN0aW9uIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkY29udGV4dCAgICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkc3BhbiAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRjb250ZXh0KTtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGNvbnRleHQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcblxuICBAcmV0dXJuIHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xufVxuXG4vLyBOZXN0ZWQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFVzZSBhIHN1YnNldCBncmlkIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbi8vIC0gQGNvbnRlbnQgICA6IDxjb250ZW50PlxuQG1peGluIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRvbGQgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpO1xuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiBuZXN0ZWQoJGNvbnRleHQpKSkgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobmVzdGVkLCAkaW5zcGVjdCk7XG4gIEBjb250ZW50O1xuXG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6ICRvbGQpKSAhZ2xvYmFsO1xufVxuIiwiLy8gQmFja2dyb3VuZCBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IGZhbHNlO1xuXG5cbi8vIFNob3cgR3JpZC9zXG4vLyAtLS0tLS0tLS0tLVxuLy8gU2hvdyBncmlkIG9uIGFueSBlbGVtZW50IHVzaW5nIGVpdGhlciBiYWNrZ3JvdW5kIG9yIG92ZXJsYXkuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIHNob3ctZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3Q6ICRncmlkO1xuICAkX291dHB1dDogZGVidWctZ2V0KG91dHB1dCwgJGdyaWQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzaG93LWdyaWQsICRpbnNwZWN0KTtcbiAgQGlmICRfb3V0cHV0ID09IG92ZXJsYXkgYW5kIHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCkgIT0gaGlkZSB7XG4gICAgQGluY2x1ZGUgb3ZlcmxheS1ncmlkKCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvdy1ncmlkcyhcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRncmlkKTtcbn1cblxuLy8gQmFja2dyb3VuZCBHcmlkXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNob3cgYSBncmlkIGJhY2tncm91bmQgb24gYW55IGVsZW1lbnQuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIGJhY2tncm91bmQtZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGdyaWQ7XG4gICRfb3V0cHV0ICA6IGdldC1iYWNrZ3JvdW5kKCRncmlkKTtcblxuICBAaWYgbGVuZ3RoKCRfb3V0cHV0KSA+IDAge1xuICAgICRfZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpO1xuXG4gICAgJF9pbWFnZTogKCk7XG4gICAgQGVhY2ggJG5hbWUsICRsYXllciBpbiBtYXAtZ2V0KCRfb3V0cHV0LCBpbWFnZSkge1xuICAgICAgJF9kaXJlY3Rpb246IGlmKCRuYW1lID09IGJhc2VsaW5lLCB0byBib3R0b20sIHRvIHRvKCRfZmxvdykpO1xuICAgICAgJF9pbWFnZTogYXBwZW5kKCRfaW1hZ2UsIGxpbmVhci1ncmFkaWVudCgkX2RpcmVjdGlvbiwgJGxheWVyKSwgY29tbWEpO1xuICAgIH1cbiAgICAkX291dHB1dDogbWFwLW1lcmdlKCRfb3V0cHV0LCAoaW1hZ2U6ICRfaW1hZ2UpKTtcblxuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICAgIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChiYWNrZ3JvdW5kLWdyaWQsICRpbnNwZWN0KTtcbiAgfVxufVxuXG5cbi8vIE92ZXJsYXkgR3JpZFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBHZW5lcmF0ZSBhbiBpY29uIHRvIHRyaWdnZXIgZ3JpZC1vdmVybGF5cyBvbiBhbnkgZ2l2ZW4gZWxlbWVudHMuXG4vLyAkZ3JpZHMuLi4gIDogPHNlbGVjdG9yPiBbPHNldHRpbmdzPl0gWywgPHNlbGVjdG9yPl0qXG5AbWl4aW4gb3ZlcmxheS1ncmlkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGlmIG5vdCgkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHMpIHtcbiAgICBAYXQtcm9vdCBoZWFkIHsgQGluY2x1ZGUgb3ZlcmxheS1oZWFkKCRncmlkKTsgfVxuICAgIEBhdC1yb290IGhlYWQ6YmVmb3JlIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpob3ZlciB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlci1ob3ZlcjsgfVxuICAgICRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgaGVhZDpob3ZlciB+ICYsXG4gIGhlYWQ6aG92ZXIgfiBib2R5ICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLW92ZXJsYXktYmFzZTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlciB7XG4gIGNvbnRlbnQ6IFwifHx8XCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udDoge1xuICAgIGZhbWlseTogc2Fucy1zZXJpZjtcbiAgICBzaXplOiAxNnB4O1xuICAgIHdlaWdodDogYm9sZDtcbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXIgSG92ZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXItaG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuNSk7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgSGVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGhlYWQ+IHN0eWxlcyB0byBjcmVhdGUgZ3JpZCBvdmVybGF5IHRvZ2dsZVxuQG1peGluIG92ZXJsYXktaGVhZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRfdG9nZ2xlOiBkZWJ1Zy1nZXQodG9nZ2xlLCAkZ3JpZCk7XG4gICRfaG9yejogbnVsbDtcbiAgJF92ZXJ0OiBudWxsO1xuXG4gIEBlYWNoICRzaWRlIGluICRfdG9nZ2xlIHtcbiAgICAkX2hvcno6IGlmKCRzaWRlID09IGxlZnQgb3IgJHNpZGUgPT0gcmlnaHQsICRzaWRlLCAkX2hvcnopO1xuICAgICRfdmVydDogaWYoJHNpZGUgPT0gdG9wIG9yICRzaWRlID09IGJvdHRvbSwgJHNpZGUsICRfdmVydCk7XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICAjeyRfaG9yen06IDEwcHg7XG4gICN7JF92ZXJ0fTogMTBweDtcbiAgei1pbmRleDogOTk5O1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjI1KTtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gR3JpZCBPdmVybGF5IEJhc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmFzZSBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIG92ZXJsYXlcbkBtaXhpbiBncmlkLW92ZXJsYXktYmFzZSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICB6LWluZGV4OiA5OTg7XG59XG5cblxuLy8gR2V0IFN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLXN5bShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgICAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9ndXR0ZXJzICAgICAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGdyaWQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRncmlkKTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGdyaWQpO1xuXG4gICRfY29sb3IgICAgICAgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfdHJhbnMgICAgICAgICA6IHRyYW5zcGFyZW50O1xuICAkX2xpZ2h0ICAgICAgICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG5cbiAgJF9lbmQgICAgICAgICAgIDogMSArICRfZ3V0dGVycztcbiAgJF9hZnRlciAgICAgICAgIDogcGVyY2VudGFnZSgxLyRfZW5kKTtcbiAgJF9zdG9wcyAgICAgICAgIDogKCk7XG4gICRfc2l6ZSAgICAgICAgICA6IHNwYW4oMSAkZ3JpZCB3aWRlKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodDtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3BsaXQ6ICRfZ3V0dGVycy8yO1xuICAgICRfYmVmb3JlOiBwZXJjZW50YWdlKCRfc3BsaXQvJF9lbmQpO1xuICAgICRfYWZ0ZXI6IHBlcmNlbnRhZ2UoKDEgKyAkX3NwbGl0KS8kX2VuZCk7XG4gICAgJF9zdG9wczogJF90cmFucyAkX2JlZm9yZSwgJF9jb2xvciAkX2JlZm9yZSwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9XG5cbiAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICRfc2l6ZTogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkgKiAkX2VuZDtcbiAgfVxuXG4gICRfb3V0cHV0OiAoXG4gICAgaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSxcbiAgICBzaXplOiAkX3NpemUsXG4gICk7XG5cbiAgQHJldHVybiAkX291dHB1dDtcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEluc2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1pbnNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgU3BsaXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1zcGxpdChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRzdGFydCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuXG4gICAgJF9lbmQ6ICRzdGFydCArIHNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRfZW5kLCBjb21tYSk7XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIE91dHNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLW91dHNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfdHJhbnMgICA6IHRyYW5zcGFyZW50O1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGd1dHRlcjogZ2V0LXNwYW4td2lkdGgoZmlyc3QgJGxvY2F0aW9uICRncmlkKTtcblxuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuXG4gICAgICAkZ3V0dGVyOiAkX2xpZ2h0ICRndXR0ZXIsICRfdHJhbnMgJGd1dHRlciwgJF90cmFucyAkX2VuZDtcbiAgICAgICR0aGlzLXN0b3A6IGpvaW4oJHRoaXMtc3RvcCwgJGd1dHRlciwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtYXN5bShcbiAgJGdyaWRcbikge1xuICAkX3N0b3BzOiAoKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0taW5zaWRlKCRncmlkKTtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLXNwbGl0KCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tb3V0c2lkZSgkZ3JpZCk7XG4gIH1cblxuICBAcmV0dXJuIChpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpKTtcbn1cblxuXG4vLyBHZXQgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9zaG93ICAgIDogc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKTtcbiAgJF9yZXR1cm4gIDogKCk7XG5cbiAgQGlmICRfc2hvdyBhbmQgJF9zaG93ICE9ICdoaWRlJyB7XG4gICAgJF9jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICAkX3N5bTogaXMtc3ltbWV0cmljYWwoJF9jb2x1bW5zKTtcbiAgICAgICRfcmV0dXJuOiBpZigkX3N5bSwgZ2V0LWJhY2tncm91bmQtc3ltKCRncmlkKSwgZ2V0LWJhY2tncm91bmQtYXN5bSgkZ3JpZCkpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGNvbnRlbnQtYm94KSk7XG4gICAgfVxuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1jb2x1bW5zJ1xuICAgICAgYW5kIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoYmFzZS1saW5lLWhlaWdodClcbiAgICAgIGFuZCB0eXBlLW9mKCRiYXNlLWxpbmUtaGVpZ2h0KSA9PSAnbnVtYmVyJ1xuICAgICAgYW5kIG5vdCB1bml0bGVzcygkYmFzZS1saW5lLWhlaWdodCkge1xuICAgICAgJF9jb2xvcjogdmFyaWFibGUtZXhpc3RzKCdncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3InKTtcbiAgICAgICRfY29sb3I6IGlmKCRfY29sb3IsICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICMwMDApO1xuXG4gICAgICAkX2ltYWdlOiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSk7XG4gICAgICAkX3NpemU6IG1hcC1nZXQoJF9yZXR1cm4sIHNpemUpO1xuICAgICAgJF9iYXNlbGluZTogKGJhc2VsaW5lOiAoJF9jb2xvciAxcHgsIHRyYW5zcGFyZW50IDFweCkpO1xuICAgICAgJF9iYXNlbGluZS1zaXplOiAxMDAlICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoXG4gICAgICAgIGltYWdlOiBpZigkX2ltYWdlLCBtYXAtbWVyZ2UoJF9pbWFnZSwgJF9iYXNlbGluZSksICRfYmFzZWxpbmUpLFxuICAgICAgICBzaXplOiBpZigkX3NpemUsICgkX3NpemUsICRfYmFzZWxpbmUtc2l6ZSksICRfYmFzZWxpbmUtc2l6ZSksXG4gICAgICApKTtcblxuICAgICAgQGlmICRfc2hvdyA9PSAnc2hvdycge1xuICAgICAgICAkX2NsaXA6IG1hcC1nZXQoJF9yZXR1cm4sIGNsaXApO1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogam9pbigkX2NsaXAsIGJvcmRlci1ib3gsIGNvbW1hKSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJF9zaG93ID09ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICBAd2FybiAnUGxlYXNlIHByb3ZpZGUgYSAkYmFzZS1saW5lLWhlaWdodCB3aXRoIHRoZSBkZXNpcmVkIGhlaWdodCBhbmQgdW5pdHMnO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSkge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChmbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gR2V0IERlYnVnXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgdmFsdWUgb2YgYSBkZWJ1ZyBzZXR0aW5nXG4vLyAtICRrZXk6IDxzZXR0aW5nPlxuQGZ1bmN0aW9uIGRlYnVnLWdldChcbiAgJGtleSxcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGtleTogam9pbihkZWJ1ZywgJGtleSwgc3BhY2UpO1xuICBAcmV0dXJuIHN1c3ktZ2V0KCRrZXksICRncmlkKTtcbn1cbiIsIi8vIENvbnRhaW5lciBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBjb250YWluZXIgZWxlbWVudFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQG1peGluIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgICA6ICRsYXlvdXQ7XG4gICRsYXlvdXQgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcblxuICAkX3dpZHRoICAgICA6IGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG4gICRfanVzdGlmeSAgIDogcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKHN1c3ktZ2V0KGNvbnRhaW5lci1wb3NpdGlvbiwgJGxheW91dCkpO1xuICAkX3Byb3BlcnR5ICA6IGlmKHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpID09IHN0YXRpYywgd2lkdGgsIG1heC13aWR0aCk7XG5cbiAgJF9ib3ggICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkbGF5b3V0KTtcblxuICBAaWYgJF9ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJF9ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChjb250YWluZXIsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgZmxvYXQtY29udGFpbmVyKCRfd2lkdGgsICRfanVzdGlmeSwgJF9wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0KTtcbn1cblxuLy8gQ29udGFpbmVyIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gIEByZXR1cm4gZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbn1cblxuLy8gR2V0IENvbnRhaW5lciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIHRoZSBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWNvbnRhaW5lci13aWR0aChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0ICAgICAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX3dpZHRoICAgICAgICAgOiBzdXN5LWdldChjb250YWluZXIsICRsYXlvdXQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRsYXlvdXQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkbGF5b3V0KTtcblxuICBAaWYgbm90KCRfd2lkdGgpIG9yICRfd2lkdGggPT0gYXV0byB7XG4gICAgQGlmIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpIHtcbiAgICAgICRfY29sdW1ucyAgIDogc3VzeS1nZXQoY29sdW1ucywgJGxheW91dCk7XG4gICAgICAkX2d1dHRlcnMgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRsYXlvdXQpO1xuICAgICAgJF9zcHJlYWQgICAgOiBpZihpcy1zcGxpdCgkbGF5b3V0KSwgd2lkZSwgbmFycm93KTtcbiAgICAgICRfd2lkdGggICAgIDogc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSAqICRfY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF93aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfd2lkdGg7XG59XG5cbi8vIFBhcnNlIENvbnRhaW5lciBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZSB0aGUgJGNvbnRhaW5lci1wb3NpdGlvbiBpbnRvIG1hcmdpbiB2YWx1ZXMuXG4vLyAtIFskanVzdGlmeV0gICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IDxsZW5ndGg+IFs8bGVuZ3RoPl1cbkBmdW5jdGlvbiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oXG4gICRqdXN0aWZ5OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBjb250YWluZXItcG9zaXRpb24pXG4pIHtcbiAgJF9yZXR1cm46IGlmKCRqdXN0aWZ5ID09IGxlZnQsIDAsIGF1dG8pIGlmKCRqdXN0aWZ5ID09IHJpZ2h0LCAwLCBhdXRvKTtcblxuICBAaWYgbm90KGluZGV4KGxlZnQgcmlnaHQgY2VudGVyLCAkanVzdGlmeSkpIHtcbiAgICAkX3JldHVybjogbnRoKCRqdXN0aWZ5LCAxKTtcbiAgICAkX3JldHVybjogJF9yZXR1cm4gaWYobGVuZ3RoKCRqdXN0aWZ5KSA+IDEsIG50aCgkanVzdGlmeSwgMiksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIElzb2xhdGlvbiBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuXG4vLyBJc29sYXRlIFtNaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGlzb2xhdGlvbiBhcyBhbiBvdmVycmlkZS5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBtaXhpbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpbnNwZWN0OiAkaXNvbGF0ZTtcblxuICAkb3V0cHV0OiAoXG4gICAgcHVzaDogaXNvbGF0ZSgkaXNvbGF0ZSksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGlzb2xhdGUpLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChpc29sYXRlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGlzb2xhdGUtb3V0cHV0KCRvdXRwdXQuLi4pO1xufVxuXG5cbi8vIElzb2xhdGUgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYW4gaXNvbGF0aW9uIG9mZnNldCB3aWR0aC5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBmdW5jdGlvbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpc29sYXRlOiBwYXJzZS1zcGFuKCRpc29sYXRlKTtcbiAgJGlzb2xhdGlvbjogc3VzeS1nZXQoc3BhbiwgJGlzb2xhdGUpO1xuXG4gIEBpZiAkaXNvbGF0aW9uIGFuZCBub3QoZ2V0LWxvY2F0aW9uKCRpc29sYXRlKSkge1xuICAgICRuZXc6IChcbiAgICAgIHNwYW46IG51bGwsXG4gICAgICBsb2NhdGlvbjogJGlzb2xhdGlvbixcbiAgICApO1xuICAgICRpc29sYXRlOiBtYXAtbWVyZ2UoJGlzb2xhdGUsICRuZXcpO1xuICB9XG5cbiAgQHJldHVybiBnZXQtaXNvbGF0aW9uKCRpc29sYXRlKTtcbn1cblxuXG4vLyBHZXQgSXNvbGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGhcbi8vIC0gJGlucHV0OiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1pc29sYXRpb24oXG4gICRpbnB1dFxuKSB7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRpbnB1dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGlucHV0KTtcbiAgJHdpZHRoICAgICAgOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyIGFuZCBub3QodW5pdGxlc3MoJGxvY2F0aW9uKSkge1xuICAgICR3aWR0aDogJGxvY2F0aW9uO1xuICB9IEBlbHNlIGlmICRsb2NhdGlvbiB7XG4gICAgJHB1c2g6ICRsb2NhdGlvbiAtIDE7XG4gICAgQGlmICRwdXNoID4gMCB7XG4gICAgICAkcHVzaDogbWFwLW1lcmdlKCRpbnB1dCwgKFxuICAgICAgICBzcGFuOiAkcHVzaCxcbiAgICAgICAgbG9jYXRpb246IDEsXG4gICAgICAgIHNwcmVhZDogd2lkZSxcbiAgICAgICkpO1xuICAgICAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkcHVzaCk7XG4gICAgfVxuICB9XG5cbiAgQGlmIHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGlucHV0KSA9PSBzcGxpdFxuICAgICAgYW5kIHN1c3ktZ2V0KGd1dHRlcnMsICRpbnB1dCkgPiAwIHtcbiAgICAkd2lkdGg6IGlmKCR3aWR0aCA9PSBudWxsLCBndXR0ZXJzKCRpbnB1dCksICR3aWR0aCArIGd1dHRlcnMoJGlucHV0KSk7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aCBvciAwO1xufVxuIiwiLy8gR2FsbGVyeSBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIEdhbGxlcnlcbi8vIC0tLS0tLS1cbi8vIENyZWF0ZSBhbiBpc29sYXRlZCBnYWxsZXJ5XG4vLyAtICRzcGFuICAgICAgICA6IDxzcGFuPlxuLy8gLSBbJHNlbGVjdG9yXSAgOiBjaGlsZCB8IG9mLXR5cGVcbkBtaXhpbiBnYWxsZXJ5KFxuICAkc3BhbixcbiAgJHNlbGVjdG9yOiBjaGlsZFxuKSB7XG4gICRpbnNwZWN0ICAgIDogJHNwYW47XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRzcGFuICAgICAgIDogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246IDEpKTtcblxuICAkbiAgICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkY29udGV4dCAgICAgIDogc3VzeS1jb3VudCgkY29sdW1ucyk7XG4gICRmbG93ICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG5cbiAgJGluc2lkZSAgICAgICA6IGlzLWluc2lkZSgkc3Bhbik7XG4gICRmcm9tICAgICAgICAgOiBmcm9tKCRmbG93KTtcbiAgJGxpbmUgICAgICAgICA6IGZsb29yKCRjb250ZXh0IC8gJG4pO1xuICAkc3ltbWV0cmljYWwgIDogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aCAgICAgICAgICAgICA6IG51bGwsXG4gICAgZmxvYXQgICAgICAgICAgICAgOiBmcm9tLFxuICAgIG1hcmdpbi1iZWZvcmUgICAgIDogbnVsbCxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IG51bGwsXG4gICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICApO1xuXG4gIEBpZiAkaW5zaWRlIHtcbiAgICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAoXG4gICAgICBwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKSxcbiAgICAgIHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKSxcbiAgICApKTtcbiAgfVxuXG4gIEBpZiAkc3ltbWV0cmljYWwge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAod2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKSkpO1xuICB9XG5cbiAgJGJveCAgICAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGdsb2JhbC1ib3ggICA6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSA9PSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2FsbGVyeSwgJGluc3BlY3QpO1xuXG4gIC8vIENvbGxlY3RpdmUgT3V0cHV0XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggb3IgKCRpbnNpZGUgYW5kIG5vdCgkYm94KSBhbmQgbm90KCRnbG9iYWwtYm94KSkge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogYm9yZGVyLWJveCkpO1xuICB9IEBlbHNlIGlmICRib3ggPT0gY29udGVudC1ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogY29udGVudC1ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIC8vIEluZGl2aWR1YWwgTG9vcFxuICBAZm9yICRpdGVtIGZyb20gMSB0aHJvdWdoICRsaW5lIHtcbiAgICAkbnRoOiAnI3skbGluZX1uICsgI3skaXRlbX0nO1xuICAgICY6bnRoLSN7JHNlbGVjdG9yfSgjeyRudGh9KSB7XG4gICAgICAvLyBJbmRpdmlkdWFsIFByZXBcbiAgICAgICRvdXRwdXQ6IChcbiAgICAgICAgd2lkdGggICAgICAgICAgICAgOiBpZigkc3ltbWV0cmljYWwsIG51bGwsIGdldC1zcGFuLXdpZHRoKCRzcGFuKSksXG4gICAgICAgIGZsb2F0ICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgbWFyZ2luLWJlZm9yZSAgICAgOiBnZXQtaXNvbGF0aW9uKCRzcGFuKSxcbiAgICAgICAgbWFyZ2luLWFmdGVyICAgICAgOiAtMTAwJSxcbiAgICAgICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgICAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICAgICApO1xuXG4gICAgICAvLyBJbmRpdmlkdWFsIE91dHB1dFxuICAgICAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgICAgIEBpZiBnZXQtZWRnZSgkc3BhbikgPT0gZmlyc3Qge1xuICAgICAgICBAaW5jbHVkZSBicmVhaztcbiAgICAgICAgQGluY2x1ZGUgZmlyc3QoJHNwYW4pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgTG9jYXRpb24gSW5jcmVtZW50XG4gICAgICAkbG9jYXRpb246IGdldC1sb2NhdGlvbigkc3BhbikgKyAkbjtcbiAgICAgICRsb2NhdGlvbjogaWYoJGxvY2F0aW9uID4gJGNvbnRleHQsIDEsICRsb2NhdGlvbik7XG4gICAgICAkc3BhbjogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246ICRsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZ3V0dGVyIDogZ3V0dGVyKCRzcGFuKTtcbiAgJHNwYW4gICA6IHNwYW4oJHNwYW4pO1xuICAkd2lkdGggIDogaWYoJHNwbGl0IGFuZCAkZ3V0dGVyLCAkc3BhbiArICRndXR0ZXIsICRzcGFuKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNxdWlzaCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmUoJHByZSk7XG4gIEBpbmNsdWRlIHBvc3QoJHBvc3QpO1xufVxuIiwiLy8gUGFkZGluZyBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmVmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFN1ZmZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzdWZmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHN1ZmZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUGFkXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBwYWQoXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocGFkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZWZpeCgkcHJlKTtcbiAgQGluY2x1ZGUgc3VmZml4KCRwb3N0KTtcblxufVxuIiwiLy8gQmxlZWQgU3ludGF4XG4vLyA9PT09PT09PT09PT1cblxuLy8gQmxlZWRcbi8vIC0tLS0tXG4vLyBBZGQgbmVnYXRpdmUgbWFyZ2lucywgYW5kIGVxdWFsIHBvc2l0aXZlIHBhZGRpbmcgdG8gY3JlYXRlIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQoXG4gICRibGVlZDogMCBndXR0ZXIoKVxuKSB7XG4gICRpbnNwZWN0ICA6ICRibGVlZDtcbiAgJG91dHB1dCAgIDogZ2V0LWJsZWVkKCRibGVlZCk7XG5cbiAgQGlmIHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSBjb250ZW50LWJveCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKChib3gtc2l6aW5nOiBjb250ZW50LWJveCksICRvdXRwdXQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJsZWVkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuXG4vLyBCbGVlZC14XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgaG9yaXpvbnRhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXgoXG4gICRibGVlZDogZ3V0dGVyKClcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAyKSAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXggb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEJsZWVkLXlcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciB2ZXJ0aWNhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXkoXG4gICRibGVlZDogaWYoZnVuY3Rpb24tZXhpc3RzKHJoeXRobSksIHJoeXRobSgxKSwgMWVtKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwIG50aCgkdHJibCwgMikgMCkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteSBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gR2V0IEJsZWVkXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBibGVlZCBvdXRwdXQgdmFsdWVzXG4vLyAtICRibGVlZDogPHNwYW4+XG5AZnVuY3Rpb24gZ2V0LWJsZWVkKFxuICAkYmxlZWRcbikge1xuICAkYmxlZWQgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJGJsZWVkKSk7XG4gICR0cmJsICAgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG4gICRzaG9ydCAgICA6IG51bGw7XG4gICRvdXRwdXQgICA6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR0cmJsKSB7XG4gICAgJHRoaXM6IG50aCgkdHJibCwgJGkpO1xuICAgICRuZXc6ICgpO1xuICAgICRtYXJnaW46IG51bGw7XG4gICAgJHBhZGRpbmc6IG51bGw7XG4gICAgJHBhZGRpbmcteDogbnVsbDtcblxuICAgIEBpZiAkdGhpcyA+IDAge1xuICAgICAgJHRoaXM6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAkdGhpcykpO1xuICAgICAgJG1hcmdpbjogc3BhbigkdGhpcyk7XG4gICAgICAkcGFkZGluZzogJG1hcmdpbjtcbiAgICAgICRwYWRkaW5nLXg6ICRwYWRkaW5nO1xuICAgIH1cblxuICAgIEBpZiAkbWFyZ2luIGFuZCAkbWFyZ2luID4gMCB7XG4gICAgICAkbWFyZ2luOiAtICRtYXJnaW47XG5cbiAgICAgIEBpZiBpcy1pbnNpZGUoJHRoaXMpIHtcbiAgICAgICAgJGd1dHRlcjogZ3V0dGVyKCR0aGlzKTtcbiAgICAgICAgJGpvaW46IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHBhZGRpbmcsICRndXR0ZXIpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICRwYWRkaW5nLXg6IGlmKCRqb2luIGFuZCAkcGFkZGluZyA+IDAsICRwYWRkaW5nICsgJGd1dHRlciwgJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAyIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDMge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gNCB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAkbmV3KTtcbiAgfVxuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG91dHB1dCB7XG4gICAgJG91dHB1dDogaWYoJHZhbHVlID09IDAsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJHByb3A6IG51bGwpKSwgJG91dHB1dCk7XG4gIH1cblxuICBAcmV0dXJuIGJsZWVkLXNob3J0aGFuZCgkb3V0cHV0KTtcbn1cblxuLy8gQmxlZWQgU2hvcnRoYW5kXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENvbnZlcnQgYmxlZWQgb3V0cHV0IGludG8gc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuXG4vLyAtICRibGVlZDogPG91dHB1dCBtYXA+XG5AZnVuY3Rpb24gYmxlZWQtc2hvcnRoYW5kKFxuICAkYmxlZWRcbikge1xuICAkbWFyZ2luOiAoKTtcbiAgJHBhZGRpbmc6ICgpO1xuICAkcmV0dXJuOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJsZWVkIHtcbiAgICBAaWYgc3RyLWluZGV4KCRrZXksIG1hcmdpbikge1xuICAgICAgJG1hcmdpbjogbWFwLW1lcmdlKCRtYXJnaW4sICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIGlmIHN0ci1pbmRleCgka2V5LCBwYWRkaW5nKSA+IDAge1xuICAgICAgJHBhZGRpbmc6IG1hcC1tZXJnZSgkcGFkZGluZywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICRwcm9wczogKFxuICAgIG1hcmdpbjogJG1hcmdpbixcbiAgICBwYWRkaW5nOiAkcGFkZGluZyxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJG1hcCBpbiAkcHJvcHMge1xuICAgICRmb3VyOiBpZihsZW5ndGgobWFwLWtleXMoJG1hcCkpID09IDQsIHRydWUsIGZhbHNlKTtcbiAgICAkbnVsbDogaWYoaW5kZXgobWFwLXZhbHVlcygkbWFwKSwgbnVsbCksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkZm91ciBhbmQgbm90KCRudWxsKSB7XG4gICAgICAkdG9wOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS10b3AnKTtcbiAgICAgICRyaWdodDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tcmlnaHQnKTtcbiAgICAgICRib3R0b206IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWJvdHRvbScpO1xuICAgICAgJGxlZnQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWxlZnQnKTtcblxuICAgICAgJHRiOiBpZigkdG9wID09ICRib3R0b20sICR0b3AsIG51bGwpO1xuICAgICAgJHJsOiBpZigkcmlnaHQgPT0gJGxlZnQsICRyaWdodCwgbnVsbCk7XG4gICAgICAkYWxsOiBpZigkdGIgPT0gJHJsLCAkdGIsIG51bGwpO1xuXG4gICAgICAkbmV3OiBpZigkYWxsLCAkYWxsLCBudWxsKTtcblxuICAgICAgQGlmIG5vdCgkbmV3KSB7XG4gICAgICAgIEBpZiAkdGIgYW5kICRybCB7XG4gICAgICAgICAgJG5ldzogJHRiICRybDtcbiAgICAgICAgfSBAZWxzZSBpZiAkcmwge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJsICRib3R0b207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJpZ2h0ICRib3R0b20gJGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmFtZTogJG5ldykpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICRtYXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cbiIsIi8qXG4qIFNjdXQsIGEgY29sbGVjdGlvbiBvZiBTYXNzIHV0aWxpdGllc1xuKiB0byBlYXNlIGFuZCBpbXByb3ZlIG91ciBpbXBsZW1lbnRhdGlvbnMgb2YgY29tbW9uIHN0eWxlLWNvZGUgcGF0dGVybnMuXG4qIHYxLjQuMFxuKiBEb2NzIGF0IGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0XG4qL1xuXG5AbWl4aW4gc2N1dC1jbGVhcmZpeCB7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNsZWFyZml4IHtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtdW5zdHlsZWQoXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCk7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1mbG9hdGVkIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJGRpcjogbGVmdCxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xuXG4gICYgPiBsaSB7XG4gICAgZmxvYXQ6ICRkaXI7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tI3skZGlyfTogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtZmxvYXRlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkO1xufVxuXG5AZnVuY3Rpb24gc2N1dC1hdXRvT3JWYWx1ZSAoJHZhbCkge1xuICBAaWYgJHZhbCA9PSBhIG9yICR2YWwgPT0gYXV0byB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtY29vcmRzIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICAkdG9wOiBudGgoJGNvb3JkaW5hdGVzLCAxKTtcbiAgJHJpZ2h0OiBudGgoJGNvb3JkaW5hdGVzLCAyKTtcbiAgJGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyk7XG4gICRsZWZ0OiBudGgoJGNvb3JkaW5hdGVzLCA0KTtcblxuICBAaWYgJHRvcCAhPSBuIHtcbiAgICB0b3A6IHNjdXQtYXV0b09yVmFsdWUoJHRvcCk7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBuIHtcbiAgICByaWdodDogc2N1dC1hdXRvT3JWYWx1ZSgkcmlnaHQpO1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG4ge1xuICAgIGJvdHRvbTogc2N1dC1hdXRvT3JWYWx1ZSgkYm90dG9tKTtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbiB7XG4gICAgbGVmdDogc2N1dC1hdXRvT3JWYWx1ZSgkbGVmdCk7XG4gIH1cblxufVxuQGZ1bmN0aW9uIHNjdXQtc3RyaXAtdW5pdCAoXG4gICRudW1cbikge1xuXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1lbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtZW0gKFxuICAkcGl4ZWxzLFxuICAkYmFzZTogJHNjdXQtZW0tYmFzZVxuKSB7XG5cbiAgLy8gJGJhc2UgY291bGQgYmUgaW4gZW0gb3IgcHggKG5vIHVuaXQgPSBweCkuXG4gIC8vIEFkanVzdCBhY2NvcmRpbmdseSB0byBjcmVhdGUgYSAkZGl2aXNvciB0aGF0XG4gIC8vIHNlcnZlcyBhcyBjb250ZXh0IGZvciAkcGl4ZWxzLlxuICAkbXVsdGlwbGllcjogaWYodW5pdCgkYmFzZSkgPT0gZW0sIDE2LCAxKTtcbiAgJGRpdmlzb3I6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZSkgKiAkbXVsdGlwbGllcjtcblxuICAkZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1lbXM6IChzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkZGl2aXNvcikgKiAxZW07XG4gICAgJGVtLXZhbHM6IGFwcGVuZCgkZW0tdmFscywgJHZhbC1pbi1lbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZW0tdmFscztcbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1yZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LXJlbSAoXG4gICRwaXhlbHNcbikge1xuXG4gICRyZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1yZW1zOiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkc2N1dC1yZW0tYmFzZSAqIDFyZW07XG4gICAgJHJlbS12YWxzOiBhcHBlbmQoJHJlbS12YWxzLCAkdmFsLWluLXJlbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcmVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkcmVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRyZW0tdmFscztcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1ib3JkZXIgKFxuICAkc3R5bGUsXG4gICRzaWRlczogbiB5XG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaWRlcykgPT0gMiB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaWRlcykgPT0gNCB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDMpICE9IG4ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgNCkgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlNjdXQtYm9yZGVyIHJlcXVpcmVzIGEgJHNpZGVzIGFyZ3VtZW50IG9mIDIgb3IgNCB2YWx1ZXMuXCJcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jaXJjbGUgKFxuICAkc2l6ZSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBAaWYgJGNvbG9yID09IGluaGVyaXQge1xuICAgIC8vIElmIHVzZXIgd2FudHMgdG8gaW5oZXJpdCB0aGUgY29sb3IsXG4gICAgLy8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBib3JkZXJcbiAgICAvLyBjb2xvciBkZWZhdWx0cyB0byB0aGUgdGV4dCBjb2xvciBvZiB0aGUgZWxlbWVudC5cbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGhlaWdodDogMDtcbiAgICB3aWR0aDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHVzZSBiYWNrZ3JvdW5kLWNvbG9yLlxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jb2xvci1zd2FwIChcbiAgJG9mZixcbiAgJG9uLFxuICAkZHVyYXRpb246IDAsXG4gICRiZzogZmFsc2Vcbikge1xuXG4gICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IG51bGw7XG4gICRvZmYtaXMtbGlzdDogdHlwZS1vZigkb2ZmKSA9PSBsaXN0O1xuICAkb24taXMtbGlzdDogdHlwZS1vZigkb24pID09IGxpc3Q7XG5cbiAgLy8gSWYgJG9mZiBJUyBhIGxpc3QsXG4gIC8vIGFzc2lnbiBjb2xvciBhbmQgYmFja2dyb3VuZC1jb2xvci5cbiAgQGlmICRvZmYtaXMtbGlzdCB7XG4gICAgY29sb3I6IG50aCgkb2ZmLCAxKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9mZiwgMik7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvciwgY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBUUlVFLFxuICAvLyBhc3NpZ24gYmFja2dyb3VuZC1jb2xvci5cbiAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9mZi1pcy1saXN0KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgRkFMU0UsXG4gIC8vIGFzc2lnbiBjb2xvci5cbiAgQGVsc2Uge1xuICAgIGNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGNvbG9yO1xuICB9XG5cbiAgLy8gT25seSBzZXQtdXAgdHJhbnNpdGlvbiBpZiAkZHVyYXRpb24gIT0gMC5cbiAgQGlmICRkdXJhdGlvbiAhPSAwIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzO1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuXG4gICAgLy8gJG9uIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgJG9mZiwgYWJvdmUuXG4gICAgQGlmICRvbi1pcy1saXN0IHtcbiAgICAgIGNvbG9yOiBudGgoJG9uLCAxKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb24sIDIpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvbi1pcy1saXN0KSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb247XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgY29sb3I6ICRvbjtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtaGQtYnAgKFxuICAkcmF0aW86IDEuM1xuKSB7XG5cbiAgQG1lZGlhICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAoJHJhdGlvIC8gMSkpLFxuICAgICAgICAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgICAgICAgIChtaW4tcmVzb2x1dGlvbjogKHJvdW5kKDk2ICogJHJhdGlvKSAqIDFkcGkpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oaWRlLXZpc3VhbGx5IHtcblxuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcblxufVxuXG4lc2N1dC1oaWRlLXZpc3VhbGx5IHtcbiAgQGluY2x1ZGUgc2N1dC1oaWRlLXZpc3VhbGx5O1xufVxuQG1peGluIHNjdXQtaW1hZ2UtcmVwbGFjZSB7XG5cbiAgdGV4dC1pbmRlbnQ6IDEwMiU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG5cbn1cblxuJXNjdXQtaW1hZ2UtcmVwbGFjZSB7XG4gIEBpbmNsdWRlIHNjdXQtaW1hZ2UtcmVwbGFjZTtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LXJlbSBhbmQgc2N1dC1zdHJpcC11bml0XG5cbkBtaXhpbiBzY3V0LXJlbS1mYWxsYmFjayAoXG4gICRwaXhlbHMsXG4gICRwcm9wZXJ0eTogZm9udC1zaXplXG4pIHtcblxuICAkcHgtdmFsczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXB4OiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgKiAxcHg7XG4gICAgJHB4LXZhbHM6IGFwcGVuZCgkcHgtdmFscywgJHZhbC1pbi1weCk7XG4gIH1cbiAgJHJlbS12YWxzOiBzY3V0LXJlbSgkcGl4ZWxzKTtcblxuICAjeyRwcm9wZXJ0eX06ICRweC12YWxzO1xuICAjeyRwcm9wZXJ0eX06ICRyZW0tdmFscztcblxufVxuQG1peGluIHNjdXQtcmVzZXQtYm9yZGVyLWJveCB7XG4gIC8vIE1ha2UgZXZlcnl0aGluZyBhIGJvcmRlci1ib3gsIGJlY2F1c2Ugd2h5IG5vdD9cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1hbnRpYWxpYXMge1xuICAvLyBBbnRpYWxpYXMhXG4gIGJvZHkge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXNlbWFudGljaXplIHtcbiAgLy8gTWFrZSBoZWFkZXJzIGFuZCA8Yj4gc2VtYW50aWMsIG5vdCBwcmVzZW50YXRpb25hbC5cbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wb2ludGVyIHtcbiAgLy8gQ2xpY2thYmxlIGZvcm0gZWxlbWVudHMgc2hvdWxkIGhhdmUgYSBwb2ludGVyLlxuICBsYWJlbCxcbiAgc2VsZWN0LFxuICBvcHRpb24sXG4gIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZvcm0ge1xuICBmaWVsZHNldCB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWJ1dHRvbiB7XG4gIC8vIFJlc2V0IGRlZmF1bHQgYnV0dG9uIHN0eWxlcywgd2hpY2ggYXJlIG5ldmVyIHVzZWQuXG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdLFxuICBbdHlwZT1cInJlc2V0XCJdIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogYXV0bztcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBhcmFncmFwaCB7XG4gIC8vIFNvbWUgcGFyYWdyYXBoIG1hcmdpbnMganVzdCBnZXQgaW4gdGhlIHdheS5cbiAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LW1lZGlhIHtcbiAgLy8gWW91IHdhbnQgdGhlc2UgZWxlbWVudHMgZmx1aWQsIHByb2JhYmx5LlxuICBpbWcsXG4gIHZpZGVvIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZpZ3VyZSB7XG4gIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbnMuXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8vIENhbGwgdGhlbSBhbGwsIG1pbnVzIGV4Y2x1c2lvbnMhXG5AbWl4aW4gc2N1dC1yZXNldCAoJGV4Y2x1ZGU6IGZhbHNlKSB7XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJvcmRlci1ib3gpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1ib3JkZXItYm94O1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGFudGlhbGlhcykpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWFudGlhbGlhcztcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBzZW1hbnRpY2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXNlbWFudGljaXplO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBvaW50ZXIpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wb2ludGVyO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZvcm0pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1mb3JtO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJ1dHRvbikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJ1dHRvbjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwYXJhZ3JhcGgpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wYXJhZ3JhcGg7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgbWVkaWEpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1tZWRpYTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmaWd1cmUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1maWd1cmU7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtc2VsZWN0ZWQgKFxuICAkYWN0aXZlOiBmYWxzZVxuKSB7XG5cbiAgQGlmICRhY3RpdmUge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtdHJpYW5nbGUgKFxuICAkZGlyZWN0aW9uOiByaWdodCxcbiAgJHNpemU6IDAuNzVlbSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIC8vIEZvciBpbXByb3ZlZCBhcHBlYXJhbmNlIGluIHNvbWUgV2Via2l0IGJyb3dzZXJzXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcblxuICAvLyBTZXQgdXAgc29tZSB2YXJpYWJsZXNcbiAgJHdpZHRoOiBudWxsO1xuICAkaGVpZ2h0OiBudWxsO1xuICAkYm9yZGVyLXdpZHRoczogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gbGlzdCB7XG4gICAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR3aWR0aDogJHNpemU7XG4gICAgJGhlaWdodDogJHNpemU7XG4gIH1cblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICAvLyBGb3IgdXAgYW5kIGRvd24sIHdpZHRoIGdldHMgdHdvIGJvcmRlcnMgYnV0IGhlaWdodCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgc2Vjb25kIGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICRoZWlnaHQgKCR3aWR0aCAvIDIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgLy8gRm9yIHJpZ2h0IGFuZCBsZWZ0LCBoZWlnaHQgZ2V0cyB0d28gYm9yZGVycyBidXQgd2lkdGggb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIGZpcnN0IGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgJHdpZHRoO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBGb3IgcmlnaHQgdHJpYW5nbGVzICh0aGUgcmVzdCksIGJvdGggc2lkZXMgZ2V0IHR3byBib3JkZXJzLFxuICAgIC8vIHNvIGRpdmlkZSBib3RoIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAoJHdpZHRoIC8gMik7XG4gIH1cblxuICBib3JkZXItd2lkdGg6ICRib3JkZXItd2lkdGhzO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG5cbiAgLy8gU1RBTkRBUkQgVFJJQU5HTEVTXG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cblxuICAvLyBDT1JORVIgVFJJQU5HTEVTXG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdG9wLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdHJpYW5nbGUge1xuICBAaW5jbHVkZSBzY3V0LXRyaWFuZ2xlO1xufVxuQG1peGluIHNjdXQtY2VudGVyLWFic29sdXRlbHkgKFxuICAkZGltZW5zaW9uc1xuKSB7XG5cbiAgJHdpZHRoOiBudGgoJGRpbWVuc2lvbnMsIDEpO1xuICAkaGVpZ2h0OiBudGgoJGRpbWVuc2lvbnMsIDIpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJHdpZHRoICE9IG4ge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAoLSR3aWR0aCAvIDIpO1xuICB9XG5cbiAgQGlmICRoZWlnaHQgIT0gbiB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6ICgtJGhlaWdodCAvIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1ibG9jayAoXG4gICRtYXgtd2lkdGg6IGZhbHNlXG4pIHtcblxuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBAaWYgJG1heC13aWR0aCB7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICB9XG5cbn1cblxuJXNjdXQtY2VudGVyLWJsb2NrIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItYmxvY2s7XG59XG5cbkBtaXhpbiBzY3V0LWNlbnRlci10cmFuc2Zvcm0gKFxuICAkYXhpczogZmFsc2UgLy8gb3IgeCBvciB5XG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICRheGlzICE9IHgge1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgfVxuXG4gIEBpZiAkYXhpcyAhPSB5IHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgJHRyYW5zbGF0ZS12YWw6IG51bGw7XG5cbiAgQGlmIG5vdCgkYXhpcykge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geCB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIC1tcy10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICB0cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXgge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeCk7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuQG1peGluIHNjdXQtZmlsbCAoXG4gICR3aWR0aC1oZWlnaHQ6IGZhbHNlXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgQGlmICR3aWR0aC1oZWlnaHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtZmlsbCB7XG4gIEBpbmNsdWRlIHNjdXQtZmlsbDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtY3VzdG9tIChcbiAgJGNvbnRlbnQ6IFwiXFwyMDIyXCIsXG4gICRtYXJrZXItd2lkdGg6IDAuNzVlbSxcbiAgJHBhZDogMCxcbiAgJG5vLW1hcmdpbjogZmFsc2Vcbikge1xuXG4gICRjb250ZW50LXZhbDogbnVsbDtcbiAgJGNvdW50ZXI6IGluZGV4KCRjb250ZW50LCBjb3VudCk7XG4gIEBpZiAkY291bnRlciB7XG4gICAgQGlmIGxlbmd0aCgkY29udGVudCkgPT0gMyB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyLCBudGgoJGNvbnRlbnQsIDMpKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAyIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICRjb250ZW50LXZhbDogJGNvbnRlbnQ7XG4gIH1cblxuICBwYWRkaW5nLWxlZnQ6ICRtYXJrZXItd2lkdGggKyAkcGFkO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gICYgPiBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiAkY291bnRlciB7XG4gICAgICBjb3VudGVyLWluY3JlbWVudDogc2N1dGxpc3Rjb3VudGVyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkY29udGVudC12YWw7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IC0kbWFya2VyLXdpZHRoO1xuICAgICAgd2lkdGg6ICRtYXJrZXItd2lkdGg7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC1mbG9hdGVkYCwgd2hpY2ggZGVwZW5kcyBpbiB0dXJuIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1kaXZpZGVkIChcbiAgJGRpdmlkZXI6IFwifFwiLFxuICAkc3BhY2U6IDAuNWVtLFxuICAkZGlyOiBsZWZ0LFxuICAkaGVpZ2h0OiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQoJGRpcjogJGRpciwgJG5vLW1hcmdpbjogJG5vLW1hcmdpbik7XG5cbiAgJHBzZXVkbzogaWYoJGRpciA9PSBsZWZ0LCAnYmVmb3JlJywgJ2FmdGVyJyk7XG5cbiAgLy8gSWYgYW4gZXhwbGljaXQgaGVpZ2h0IGlzIHBhc3NlZCxcbiAgLy8gdGhpbmdzIGFyZSBkaWZmZXJlbnQ6IEFsbCA8bGk+c1xuICAvLyBuZWVkIHRoZSBwc2V1ZG8tZWxlbWVudCAodG8gZm9yY2UgaGVpZ2h0KSxcbiAgLy8gYnV0IHRoZSBmaXJzdCdzIG11c3QgYmUgaGlkZGVuLlxuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICAmID4gbGkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICAmID4gbGk6I3skcHNldWRvfSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgJiA+IGxpOmZpcnN0LWNoaWxkOiN7JHBzZXVkb30ge1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gICYgPiBsaSArIGxpOiN7JHBzZXVkb30ge1xuICAgIEBpZiBub3QoJGhlaWdodCkge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjZTtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtYmFyIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQ7XG59XG5cbiVzY3V0LWxpc3QtYnJlYWRjcnVtYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKFwiL1wiKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWlubGluZSAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtaW5saW5lO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtcHVuY3R1YXRlZCAoXG4gICRkaXZpZGVyOiBcIiwgXCIsXG4gICRkaXNwbGF5OiBpbmxpbmUsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6ICRkaXNwbGF5O1xuICAgICY6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWNvbW1hIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXB1bmN0dWF0ZWQ7XG59XG5AbWl4aW4gc2N1dC1tYXJnaW4gKFxuICAkbWFyZ2luXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDEgYW5kICRtYXJnaW4gIT0gbiB7XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMiB7XG4gICAgJG1hcmdpbi15OiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgQGlmICRtYXJnaW4teSAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDMge1xuICAgICRtYXJnaW4teS10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLXktYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgQGlmICRtYXJnaW4teS10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi15LWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSA0IHtcbiAgICAkbWFyZ2luLXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4tcmlnaHQ6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgICRtYXJnaW4tbGVmdDogbnRoKCRtYXJnaW4sIDQpO1xuICAgIEBpZiAkbWFyZ2luLXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1yaWdodCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi1yaWdodDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWxlZnQgIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi1sZWZ0O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1wYWRkaW5nIChcbiAgJHBhZGRpbmdcbikge1xuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDEgYW5kICRwYWRkaW5nICE9IG4ge1xuICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDIge1xuICAgICRwYWRkaW5nLXk6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICBAaWYgJHBhZGRpbmcteSAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15O1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXk7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAzIHtcbiAgICAkcGFkZGluZy15LXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLXktYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgIEBpZiAkcGFkZGluZy15LXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15LXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteS1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gNCB7XG4gICAgJHBhZGRpbmctdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXJpZ2h0OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICAkcGFkZGluZy1sZWZ0OiBudGgoJHBhZGRpbmcsIDQpO1xuICAgIEBpZiAkcGFkZGluZy10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmctdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctcmlnaHQgIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy1yaWdodDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1sZWZ0ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy1sZWZ0O1xuICAgIH1cbiAgfVxufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1hYnNvbHV0ZSAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWFic29sdXRlIHtcbiAgQGluY2x1ZGUgc2N1dC1hYnNvbHV0ZTtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtZml4ZWQgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1maXhlZCB7XG4gIEBpbmNsdWRlIHNjdXQtZml4ZWQ7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LXJlbGF0aXZlIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cbkBtaXhpbiBzY3V0LXJhdGlvLWJveCAoXG4gICRyYXRpbzogMS8xXG4pIHtcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVGhlIGNvbnRhaW5lcidzIGhlaWdodCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZVxuICAvLyBjb250YWluZXIncyB3aWR0aCwgaXMgc2V0IGJ5IGFzc2lnbmluZ1xuICAvLyBwYWRkaW5nLXRvcCB0byBhIHBzZXVkby1lbGVtZW50LlxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgcGFkZGluZy10b3A6ICgxIC8gJHJhdGlvKSAqIDEwMCU7XG4gIH1cblxufVxuXG4lc2N1dC1yYXRpby1ib3gge1xuICBAaW5jbHVkZSBzY3V0LXJhdGlvLWJveDtcbn1cbkBtaXhpbiBzY3V0LXNpemUoXG4gICRzaXplXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAxIHtcbiAgICB3aWR0aDogICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICB3aWR0aDogIG50aCgkc2l6ZSwgMSk7XG4gICAgaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAtJGhlaWdodDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAjeyR3cmFwcGVyfTphZnRlcixcbiAgI3skZm9vdGVyfSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG5cbn1cblxuLy8gZGVwcmVjYXRlZFxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3RlciAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbil7XG4gIEBpbmNsdWRlIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCgkaGVpZ2h0LCAkd3JhcHBlciwgJGZvb3Rlcik7XG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZsdWlkIChcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICN7JGZvb3Rlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcbiAgICBoZWlnaHQ6IDFweDtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLWliIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICAvLyBUaGUgaW5uZXIgZWxlbWVudCBpcyB2ZXJ0aWNhbGx5IGNlbnRlcmVkXG4gIC8vIGJ5IG1pZGRsZS1hbGlnbmluZyBpdCB3aXRoIGFuIGlubGluZSBwc2V1ZG8tZWxlbWVudFxuICAvLyB3aG9zZSBoZWlnaHQgaXMgMTAwJS5cblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgLy8gQSBzbWFsbCBuZWdhdGl2ZSByaWdodCBtYXJnaW4gaXMgc2V0XG4gICAgLy8gdG8gYWNjb3VudCBmb3IgdGhlIGRlZmF1bHRcbiAgICAvLyB3b3JkLXNwYWNpbmcgb2YgaW5saW5lLWJsb2NrLlxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVlbTtcbiAgfVxuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC12Y2VudGVyLWliIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLWliO1xufVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLWxoIChcbiAgJGhlaWdodFxuKSB7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJGhlaWdodDtcblxufVxuQG1peGluIHNjdXQtdmNlbnRlci10ZCAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgZGlzcGxheTogdGFibGU7XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG5cbiVzY3V0LXZjZW50ZXItdGQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdGQ7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1jZW50ZXItdHJhbnNmb3JtXG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItdHQgKCkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbiVzY3V0LXZjZW50ZXItdHQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdHQ7XG59XG4vLyBzcGFjZVxuJHNjdXQtc3BhY2U6IFwiXFwwMDIwXCI7XG4vLyBub24tYnJlYWtpbmcgc3BhY2VcbiRzY3V0LW5ic3A6IFwiXFwwMGEwXCI7XG5cbi8vIHF1b3RhdGlvbiBtYXJrXG4kc2N1dC1xdW90OiBcIlxcMDAyMlwiO1xuLy8gbGVmdCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LWxzcXVvOiBcIlxcMjAxOFwiO1xuLy8gcmlnaHQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1yc3F1bzogXCJcXDIwMTlcIjtcbi8vIGxlZnQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1sZHF1bzogXCJcXDIwMUNcIjtcbi8vIHJpZ2h0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtcmRxdW86IFwiXFwyMDFEXCI7XG4vLyBsZWZ0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbHNhcXVvOiBcIlxcMjAzOVwiO1xuLy8gcmlnaHQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yc2FxdW86IFwiXFwyMDNBXCI7XG4vLyBsZWZ0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbGFxdW86IFwiXFwwMGFiXCI7XG4vLyByaWdodCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJhcXVvOiBcIlxcMDBiYlwiO1xuXG4vLyBlbSBkYXNoIChtdXR0b24pXG4kc2N1dC1tZGFzaDogXCJcXDIwMTRcIjtcbi8vIGVuIGRhc2ggKG51dClcbiRzY3V0LW5kYXNoOiBcIlxcMjAxM1wiO1xuLy8gaHlwaGVuXG4kc2N1dC1oeXBoZW46IFwiXFwyMDEwXCI7XG5cbi8vIGFtcGVyc2FuZFxuJHNjdXQtYW1wOiBcIlxcMDAyNlwiO1xuLy8gZ3JlYXRlciB0aGFuXG4kc2N1dC1ndDogXCJcXDAwM2VcIjtcbi8vIGxlc3MgdGhhblxuJHNjdXQtbHQ6IFwiXFwwMDNjXCI7XG4vLyB0aW1lc1xuJHNjdXQtdGltZXM6IFwiXFwwMEQ3XCI7XG4vLyBiaWcgdGltZXNcbiRzY3V0LWJpZ3RpbWVzOiBcIlxcMjcxNVwiO1xuLy8gY2hlY2ttYXJrXG4kc2N1dC1jaGVja21hcms6IFwiXFwyNzEzXCI7XG5cbi8vIHNlY3Rpb24gc2lnbiAoZG91YmxlIFMsIGh1cnJpY2FuZSwgc2VjdGlvbmFsIHN5bWJvbCwgdGhlIGxlZ2FsIGRvdWdobnV0LCBzaWdudW0gc2VjdGlvbmlzKVxuJHNjdXQtc2VjdDogXCJcXDAwYTdcIjtcbi8vIHBhcmFncmFwaCBzeW1ib2wgKHBpbGNyb3cpXG4kc2N1dC1wYXJhOiBcIlxcMDBiNlwiO1xuXG4vLyBtaWRkb3QgKGludGVycHVuY3QsIGludGVycG9pbnQpXG4kc2N1dC1taWRkb3Q6IFwiXFwwMGI3XCI7XG4vLyBvLXNsYXNoIChzbGFzaGVkIG8pXG4kc2N1dC1vc2xhc2g6IFwiXFwwMGY4XCI7XG4vLyBidWxsZXRcbiRzY3V0LWJ1bGw6IFwiXFwyMDIyXCI7XG4vLyB3aGl0ZSBidWxsZXRcbiRzY3V0LXdoaWJ1bGw6IFwiXFwyNUU2XCI7XG4vLyBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1oZWxsaXA6IFwiXFwyMDI2XCI7XG4vLyB2ZXJ0aWNhbCBlbGxpcHNpc1xuJHNjdXQtdmVsbGlwOiBcIlxcMjJFRVwiO1xuLy8gbWlkbGluZSBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1taWRoZWxsaXA6IFwiXFwyMkVGXCI7XG5cbi8vIHVwLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC11dHJpOiBcIlxcMjViMlwiO1xuLy8gZG93bi1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtZHRyaTogXCJcXDI1YmNcIjtcbi8vIGxlZnQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWx0cmk6IFwiXFwyNWMwXCI7XG4vLyByaWdodC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtcnRyaTogXCJcXDI1YjZcIjtcbi8vIHVwLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC11c3RyaTogXCJcXDI1YjRcIjtcbi8vIGRvd24tcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWRzdHJpOiBcIlxcMjViZVwiO1xuLy8gbGVmdC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtbHN0cmk6IFwiXFwyNWMyXCI7XG4vLyByaWdodC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtcnN0cmk6IFwiXFwyNWI4XCI7XG4vLyBkaWFtb25kXG4kc2N1dC1kaWFtb25kOiBcIlxcMjVjNlwiO1xuLy8gZmlzaGV5ZVxuJHNjdXQtZmlzaGV5ZTogXCJcXDI1YzlcIjtcbi8vIGJ1bGxzZXllXG4kc2N1dC1idWxsc2V5ZTogXCJcXDI1Y2VcIjtcbi8vIGNpcmNsZVxuJHNjdXQtY2lyY2xlOiBcIlxcMjVjZlwiO1xuLy8gd2hpdGUgY2lyY2xlXG4kc2N1dC13aGl0ZWNpcmNsZTogXCJcXDI1Y2JcIjtcbi8vIHNxdWFyZVxuJHNjdXQtc3F1YXJlOiBcIlxcMjVhMFwiO1xuLy8gd2hpdGUgc3F1YXJlXG4kc2N1dC13aGl0ZXNxdWFyZTogXCJcXDI1YTFcIjtcbi8vIHNtYWxsIHNxdWFyZVxuJHNjdXQtc3NxdWFyZTogXCJcXDI1YWFcIjtcbi8vIHNtYWxsIHdoaXRlIHNxdWFyZVxuJHNjdXQtc3doaXRlc3F1YXJlOiBcIlxcMjVhYlwiO1xuXG4vLyBnZW5lcmFsIGN1cnJlbmN5XG4kc2N1dC1jdXJyZW5jeTogXCJcXDAwYTRcIjtcbi8vIGNlbnRcbiRzY3V0LWNlbnQ6IFwiXFwwMGEyXCI7XG4vLyBkb2xsYXJcbiRzY3V0LWRvbGxhcjogXCJcXDAwMjRcIjtcbi8vIHBvdW5kXG4kc2N1dC1wb3VuZDogXCJcXDAwYTNcIjtcbi8vIGV1cm9cbiRzY3V0LWV1cm86IFwiXFwyMGFjXCI7XG4vLyB5ZW5cbiRzY3V0LXllbjogXCJcXDAwYTVcIjtcbi8vIHJ1cGVlXG4kc2N1dC1ydXBlZTogXCJcXDIwQjlcIjtcbkBmdW5jdGlvbiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KSB7XG4gIC8vIFJldHVybiB0aGUgbGlzdCBvZiBgc3JjYCB2YWx1ZXMsIGluIG9yZGVyLCB0aGF0XG4gIC8vIGEgZ29vZCBgQGZvbnQtZmFjZWAgd2lsbCBuZWVkLCBpbmNsdWRpbmcgb25seVxuICAvLyB0aG9zZSBmb3JtYXRzIHNwZWNpZmllZCBpbiB0aGUgbGlzdCBgJGZvcm1hdHNgLlxuICAkcmVzdWx0OiAoKTtcbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAkZW90LXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRlb3QtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmMikge1xuICAgICR3b2ZmMi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYyLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZikge1xuICAgICR3b2ZmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB0dGYpIHtcbiAgICAkdHRmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHR0Zi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHN2Zykge1xuICAgICRzdmctdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fScpIGZvcm1hdCgnc3ZnJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRzdmctdmFsLCBjb21tYSk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AbWl4aW4gc2N1dC1mb250LWZhY2UgKFxuICAkZm9udC1mYW1pbHksXG4gICRmaWxlLXBhdGgsXG4gICR3ZWlnaHQ6IG5vcm1hbCxcbiAgJHN0eWxlOiBub3JtYWwsXG4gICRmb3JtYXRzOiBlb3Qgd29mZjIgd29mZiB0dGYgc3ZnXG4pIHtcblxuICBAaWYgaW5kZXgoJ2l0YWxpYycgJ29ibGlxdWUnLCAkd2VpZ2h0KSB7XG4gICAgJHN0eWxlOiAkd2VpZ2h0O1xuICAgICR3ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuXG4gICAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAgIHNyYzogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgIH1cbiAgICBzcmM6IG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpO1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGFuZ2luZy1pbmRlbnQgKFxuICAkaW5kZW50OiAxZW1cbikge1xuXG4gIC8vIHBhZGRpbmctbGVmdCBjcmVhdGVzIHRoZSBpbmRlbnQsXG4gIC8vIHdoaWxlIHRleHQtaW5kZW50IHB1bGxzIHRoZSBmaXJzdCBsaW5lXG4gIC8vIGJhY2sgdG8gdGhlIGVkZ2UuXG5cbiAgcGFkZGluZy1sZWZ0OiAkaW5kZW50O1xuICB0ZXh0LWluZGVudDogLSRpbmRlbnQ7XG5cbn1cblxuJXNjdXQtaGFuZ2luZy1pbmRlbnQge1xuICBAaW5jbHVkZSBzY3V0LWhhbmdpbmctaW5kZW50O1xufVxuQG1peGluIHNjdXQtaW5kZW50ZWQtcHMgKFxuICAkaW5kZW50OiAxLjVlbSxcbiAgJG5vLWZpcnN0LWluZGVudDogdHJ1ZVxuKSB7XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtaW5kZW50OiAkaW5kZW50O1xuICB9XG5cbiAgQGlmICRuby1maXJzdC1pbmRlbnQge1xuICAgIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB0ZXh0LWluZGVudDogMDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1pbmRlbnRlZC1wcyB7XG4gIEBpbmNsdWRlIHNjdXQtaW5kZW50ZWQtcHM7XG59XG5AbWl4aW4gc2N1dC1rZXktdmFsIChcbiAgJGRpdmlkZXI6IFwiOlwiLFxuICAkcGFkOiAwLjI1ZW0sXG4gICRpbmRlbnQ6IDFlbSxcbiAgJHNwYWNpbmc6IDAsXG4gICRwYWQtbGVmdDogMFxuKSB7XG5cbiAgJiA+IGR0IHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkcGFkO1xuICAgICAgQGlmICRwYWQtbGVmdCAhPSAwIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRwYWQtbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmID4gZGQge1xuICAgIG1hcmdpbi1sZWZ0OiAkaW5kZW50O1xuICAgIEBpZiAkc3BhY2luZyAhPSAwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWtleS12YWwge1xuICBAaW5jbHVkZSBzY3V0LWtleS12YWw7XG59XG5AbWl4aW4gc2N1dC1saW5rLWJiIChcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkd2lkdGg6IDFweFxuKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gIGJvcmRlci1ib3R0b20td2lkdGg6ICR3aWR0aDtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgfVxuXG59XG5cbiVzY3V0LWxpbmstYmIge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstYmI7XG59XG4vLyBTQ1VUIExJTksgVU5TVFlMRURcbi8vIGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0LyNsaW5rLXVuc3R5bGVkXG5cbkBtaXhpbiBzY3V0LWxpbmstdW5zdHlsZWQoKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcblxufVxuXG4lc2N1dC1saW5rLXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLXVuc3R5bGVkKCk7XG59XG5cbkBtaXhpbiBzY3V0LXJldmVyc2UtaXRhbGljcyAoXG4gICRlbGVtZW50czogbnVsbFxuKSB7XG5cbiAgJGVsZW1lbnQtbGlzdDogZW0sIGNpdGUsIGk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgI3tqb2luKCRlbGVtZW50LWxpc3QsICRlbGVtZW50cyl9IHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cblxufVxuXG4lc2N1dC1yZXZlcnNlLWl0YWxpY3Mge1xuICBAaW5jbHVkZSBzY3V0LXJldmVyc2UtaXRhbGljcztcbn1cblxuQG1peGluIHNjdXQtc2lkZS1saW5lZCAoXG4gICRoZWlnaHQ6IDFweCxcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkdi1hZGp1c3Q6IGZhbHNlLFxuICAkZG91YmxlOiBmYWxzZVxuKSB7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDUwJTtcblxuICAgIGJvcmRlci10b3Atc3R5bGU6ICRzdHlsZTtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAkaGVpZ2h0O1xuXG4gICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgJHYtYWRqdXN0ICE9IGZhbHNlIHtcbiAgICAgIGJvdHRvbTogJHYtYWRqdXN0O1xuICAgIH1cblxuICAgIEBpZiAkZG91YmxlICE9IGZhbHNlIHtcbiAgICAgIGhlaWdodDogJGRvdWJsZTtcbiAgICAgIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6ICRoZWlnaHQ7XG4gICAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0OiAkc3BhY2U7XG4gICAgbWFyZ2luLWxlZnQ6IC01MCU7XG4gIH1cbiAgJjphZnRlciB7XG4gICAgbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXNpZGUtbGluZWQge1xuICBAaW5jbHVkZSBzY3V0LXNpZGUtbGluZWQ7XG59XG5AbWl4aW4gc2N1dC10cnVuY2F0ZSB7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbn1cblxuJXNjdXQtdHJ1bmNhdGUge1xuICBAaW5jbHVkZSBzY3V0LXRydW5jYXRlO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInRvb2xraXQvcGxhY2Vob2xkZXJzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcInRvb2xraXQvY29sb3JzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9mb250c1wiO1xuQGltcG9ydCBcInRvb2xraXQvaW50cmluc2ljLXJhdGlvXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9uZXN0ZWQtY29udGV4dFwiO1xuQGltcG9ydCBcInRvb2xraXQvcGFyYWxsYXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3J0bFwiO1xuQGltcG9ydCBcInRvb2xraXQvdGFyZ2V0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC90cmlhbmdsZVwiO1xuQGltcG9ydCBcInRvb2xraXQvY2VudGVyXCI7XG5AaW1wb3J0IFwidG9vbGtpdC92aWV3cG9ydFwiO1xuQGltcG9ydCBcInRvb2xraXQvdW5kZXJsaW5lXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9hcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3NldC1tdWx0aXBsZVwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRUb29sa2l0LVNldHRpbmdzOiAoXG4gICdjbGVhcmZpeCBleHRlbmQnOiBmYWxzZSxcbiAgJ2NvbG9yIHN0YWNrIGFtb3VudHMnOiAyNSUgNTAlIDc1JSA4NSUgOTAlLFxuICAndGludCBzaGFkZSBhbW91bnRzJzogNzUlIDUwJSAyNSUsXG4gICd0aW50IGNvbG9yJzogI2ZmZixcbiAgJ3NoYWRlIGNvbG9yJzogIzAwMCxcbiAgJ2NvbG9yIHNjYWxlIHN0ZXBzJzogNixcbiAgJ2xpZ2F0dXJlIGV4dGVuZCc6IGZhbHNlLFxuICAnZm9udCBmYWNlIHdlaWdodCc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBzdHlsZSc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZic6IGZhbHNlLFxuICAnaWNvbiBmb250IGV4dGVuZCc6IGZhbHNlLFxuICAnaWNvbiBmb250IHNwZWFrJzogZmFsc2UsXG4gICdmYWRlIGluIGR1cmF0aW9uJzogMXMsXG4gICdmYWRlIGluIGxvYWRpbmcgY2xhc3MnOiAnLndmLWxvYWRpbmcnLFxuICAnZmFkZSBpbiBleHRlbmQnOiBmYWxzZSxcbiAgJ2ludHJpbnNpYyByYXRpbyc6IDE2LzksXG4gICdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnOiAxMDAlLFxuICAnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJzogJz4gKicsXG4gICdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nOiB0b3AsXG4gICdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJzogZmFsc2UsXG4gICduZXN0ZWQgY29udGV4dCBjb250ZXh0cyc6IDEwMCUsXG4gICduZXN0ZWQgY29udGV4dCBwb3NpdGlvbic6IGxlZnQsXG4gICd0cmlhbmdsZSBjb2xvcic6ICMwMDAsXG4gICd0cmlhbmdsZSBoZWlnaHQnOiAxZW0sXG4gICd0cmlhbmdsZSB3aWR0aCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIGFuZ2xlJzogMCxcbiAgJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJzogMSxcbiAgJ3BhcmFsbGF4IGVsZW1lbnQnOiAnYm9keScsXG4gICdwYXJhbGxheCBpb3MnOiB0cnVlLFxuICAncGFyYWxsYXggZGlzdGFuY2UnOiAwLFxuICAndmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICd2ZXJ0aWNhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnOiA1MCUsXG4gICdob3Jpem9udGFsIGZpeGVkJzogZmFsc2UsXG4gICdob3Jpem9udGFsIGV4dGVuZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJzogZmFsc2UsXG4gICd1bmRlcmxpbmUgYmFja2dyb3VuZCc6ICNmZmYsXG4gICd1bmRlcmxpbmUgY29sb3InOiAjMDBlLFxuICAndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnOiB0cnVlLFxuICAndW5kZXJsaW5lIGRpc3RhbmNlJzogMSxcbiAgJ3VuZGVybGluZSB3aWR0aCc6IDIsXG4gICd1bmRlcmxpbmUgZXh0ZW5kJzogZmFsc2UsXG4gICdhcnQgcGl4ZWwgc2l6ZSc6IDFweCxcbiAgJ2FydCBjb2xvcic6IGJsYWNrLFxuICAnYXJ0IGJvcmRlciByYWRpdXMnOiAwJVxuKTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBOZXcgU2V0dGluZ3MgbW9kdWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdsb2JhbFxuJEdsb2JhbFNldHRpbmdzOiAkVG9vbGtpdC1TZXR0aW5ncyAhZGVmYXVsdDtcbi8vIFVzZXJcbiRVc2VyU2V0dGluZ3M6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVzZXIgU2V0dGluZyBFeGlzdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJFJldHVybjtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1oYXMoJHNldHRpbmcpIHtcbiAgQHJldHVybiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIEdldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEdsb2JhbFNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctZ2V0LW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkdmFsdWVzOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkdmFsdWVzOiBtYXAtbWVyZ2UoJHZhbHVlcywgKCRzZXR0aW5nOiBzZXR0aW5nLWdldCgkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICR2YWx1ZXM7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtZ2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1nZXQoJHNldHRpbmcpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZ3MgU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgJHNldHRpbmdzKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZS1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJFJldHVybjogKCk7XG5cbiAgQGVhY2ggJEtleSwgJFZhbHVlIGluICRVc2VyU2V0dGluZ3Mge1xuICAgICRSZXR1cm46IGlmKCRzZXR0aW5nID09ICRLZXksICRSZXR1cm4sIG1hcC1tZXJnZSgkUmV0dXJuLCAoJEtleTogJFZhbHVlKSkpO1xuICB9XG5cbiAgJFVzZXJTZXR0aW5nczogJFJldHVybiAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRjbGVhci10aGUtc2V0dGluZ3M6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcmVzZXQoKSB7XG4gICRVc2VyU2V0dGluZ3M6ICgpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLXJlc2V0KCk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBQaWNrXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2soJHNldHRpbmcsICRpbnB1dCkge1xuICBAcmV0dXJuIGlmKCRpbnB1dCAhPSBudWxsLCAkaW5wdXQsIHNldHRpbmctZ2V0KCRzZXR0aW5nKSk7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2stbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZywgJGlucHV0IGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogc2V0dGluZy1waWNrKCRpbnB1dCwgJHNldHRpbmcpKSk7XG4gIH1cblxuICBAcmV0dXJuICRSZXR1cm47XG59IiwiJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFBsYWNlaG9sZGVyIEdldC9TZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCkge1xuICAkdW5pcXVlLWlkOiB1bmlxdWUtaWQoKTtcbiAgJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6IG1hcC1tZXJnZSgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgKCRpZDogJHVuaXF1ZS1pZCkpICFnbG9iYWw7XG4gIEByZXR1cm4gJHVuaXF1ZS1pZDtcbn1cblxuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCkge1xuICBAcmV0dXJuIG1hcC1nZXQoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICRpZCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhdGUgUGxhY2Vob2xkZXIgQ2xhc3MgYW5kIEV4dGVuZFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKTtcblxuICBAaWYgJHBsYWNlaG9sZGVyLWlkID09IG51bGwge1xuICAgICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKTtcbiAgICBAYXQtcm9vdCAlI3skcGxhY2Vob2xkZXItaWR9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZXh0ZW5kICUjeyRwbGFjZWhvbGRlci1pZH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU3RhdGljIE1peGluIEhlbHBlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gbWl4aW4tZHJ5ZXIoJGlkLCAkZXh0ZW5kOiB0cnVlKSB7XG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNb2Rlcm4gQ2xlYXJmaXggTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNsZWFyZml4KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnY2xlYXJmaXggZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjbGVhcmZpeCcpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb21wYXNzIEV4dGVuc2lvbiBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUaW50IGFuZCBTaGFkZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMdW1hXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBsdW1hKCRjb2xvcikge1xuICBAcmV0dXJuIChyZWQoJGNvbG9yKSAqIC4yOTkpICsgKGdyZWVuKCRjb2xvcikgKiAuNTg3KSArIChibHVlKCRjb2xvcikgKiAuMTE0KTtcbn1cblxuQGZ1bmN0aW9uIGx1bWEtZ3RlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPj0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWx0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpIDw9IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1kaWZmKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQHJldHVybiBsdW1hKCRjb2xvcjEpIC0gbHVtYSgkY29sb3IyKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTdGFja3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXN0YWNrKCRtYWluLCAkc2Vjb25kYXJ5LCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ2NvbG9yIHN0YWNrIGFtb3VudHMnKTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJGFtb3VudHMpID09IDEge1xuICAgICRhbW91bnRzOiBudGgoJGFtb3VudHMsIDEpO1xuICB9XG5cbiAgJHN0YWNrOiAkbWFpbjtcblxuICBAZWFjaCAkYW1vdW50IGluICRhbW91bnRzIHtcbiAgICAkc3RhY2s6IGpvaW4oJHN0YWNrLCBtaXgoJHNlY29uZGFyeSwgbnRoKCRzdGFjaywgMSksICRhbW91bnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0YWNrO1xufVxuXG4vLyBUaW50IFN0YWNrXG5AZnVuY3Rpb24gdGludC1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFNoYWRlIFN0YWNrXG5AZnVuY3Rpb24gc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFRpbnQvU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgJGNvbG9yczogKCk7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgndGludCBzaGFkZSBhbW91bnRzJyk7XG4gIH1cbiAgJGxlbmd0aDogbGVuZ3RoKCRhbW91bnRzKTtcblxuICAvLyBTaGFkZXNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgc2hhZGUoJGNvbG9yLCBudGgoJGFtb3VudHMsICRpKSkpO1xuICB9XG5cbiAgLy8gQmFzZVxuICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgJGNvbG9yKTtcblxuICAvLyBUaW50c1xuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRsZW5ndGggLSAxIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgdGludCgkY29sb3IsIG50aCgkYW1vdW50cywgJGxlbmd0aCAtICRpKSkpO1xuICB9XG5cbiAgQHJldHVybiAkY29sb3JzO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFNjYWxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc2NhbGUoJG1haW4sICRzZWNvbmRhcnksICRzdGVwczogbnVsbCkge1xuICAkc3RlcHM6IGlmKCRzdGVwcyAhPSBudWxsLCAkc3RlcHMsIHRvb2xraXQtZ2V0KCdjb2xvciBzY2FsZSBzdGVwcycpKTtcblxuICAkbGlzdDogJG1haW47XG5cbiAgJHJlZDE6IHJlZCgkbWFpbik7XG4gICRyZWQyOiByZWQoJHNlY29uZGFyeSk7XG4gICRyZWQtZGlmZjogKCgkcmVkMSAtICRyZWQyKSAvICgoJHN0ZXBzIC0gMSkpKTtcblxuICAkaHVlMTogaHVlKCRtYWluKTtcbiAgJGh1ZTI6IGh1ZSgkc2Vjb25kYXJ5KTtcbiAgQGlmICgkaHVlMiArIDM1OSAtICRodWUxKSA8IGFicygkaHVlMSAtICRodWUyKSB7XG4gICAgJGh1ZTI6ICRodWUyICsgMzU5O1xuICB9XG4gICRodWUtZGlmZjogKCRodWUyIC0gJGh1ZTEpIC8gKCRzdGVwcyAtIDEpO1xuXG4gICRzYXQxOiBzYXR1cmF0aW9uKCRtYWluKTtcbiAgJHNhdDI6IHNhdHVyYXRpb24oJHNlY29uZGFyeSk7XG4gICRzYXQtZGlmZjogMDtcbiAgQGlmICRzYXQxID4gJHNhdDIge1xuICAgICRzYXQtZGlmZjogKCRzYXQyIC0gJHNhdDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MSAtICRzYXQyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRsdGUxOiBsaWdodG5lc3MoJG1haW4pO1xuICAkbHRlMjogbGlnaHRuZXNzKCRzZWNvbmRhcnkpO1xuICAkbHRlLWRpZmY6IDA7XG4gIEBpZiAkbHRlMSA+ICRsdGUyIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMiAtICRsdGUxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTEgLSAkbHRlMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkYWxwMTogYWxwaGEoJG1haW4pO1xuICAkYWxwMjogYWxwaGEoJHNlY29uZGFyeSk7XG4gICRhbHAtZGlmZjogMDtcbiAgQGlmICRhbHAxID4gJGFscDIge1xuICAgICRhbHAtZGlmZjogKCRhbHAyIC0gJGFscDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMSAtICRhbHAyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRodWUtaG9sZDogJGh1ZTE7XG4gICRzYXQtaG9sZDogJHNhdDE7XG4gICRsdGUtaG9sZDogJGx0ZTE7XG4gICRhbHAtaG9sZDogJGFscDE7XG4gICRjb2xvci1ob2xkOiAwO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJHN0ZXBzIHtcbiAgICAkaHVlLWhvbGQ6ICRodWUtaG9sZCArICRodWUtZGlmZjtcbiAgICAkc2F0LWhvbGQ6ICRzYXQtaG9sZCArICRzYXQtZGlmZjtcbiAgICAkbHRlLWhvbGQ6ICRsdGUtaG9sZCArICRsdGUtZGlmZjtcbiAgICAkYWxwLWhvbGQ6ICRhbHAtaG9sZCArICRhbHAtZGlmZjtcblxuICAgICRjb2xvci1ob2xkOiBoc2xhKCRodWUtaG9sZCwgJHNhdC1ob2xkLCAkbHRlLWhvbGQsICRhbHAtaG9sZCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGNvbG9yLWhvbGQpO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFbmFibGUgbGlnYXR1cmVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnbGlnYXR1cmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnZW5hYmxlIGxpZ2F0dXJlcycpIHtcbiAgICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXM7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2E9MSwgZGxpZz0xXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1zLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtby1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIixcImRsaWdcIjtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFjZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZm9udC1mYWNlKCRuYW1lLCAkZmlsZXMsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGlubGluZS13b2ZmOiBudWxsKSB7XG4gICR3ZWlnaHQ6IGlmKCR3ZWlnaHQgIT0gbnVsbCwgJHdlaWdodCwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSB3ZWlnaHQnKSk7XG4gICRzdHlsZTogaWYoJHN0eWxlICE9IG51bGwsICRzdHlsZSwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBzdHlsZScpKTtcbiAgJGlubGluZS13b2ZmOiBpZigkaW5saW5lLXdvZmYgIT0gbnVsbCwgJGlubGluZS13b2ZmLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIGlubGluZSB3b2ZmJykpO1xuXG4gICRmb250LXN0YWNrOiAoKTtcbiAgJGZvbnQtc3JjOiAnJztcbiAgJGVvdDogZmFsc2U7XG4gICRmb250LWV4dGVuc2lvbnM6ICgnZW90JzogJ2VtYmVkZGVkLW9wZW50eXBlJywgJ3dvZmYyJzogJ3dvZmYyJywgJ3dvZmYnOiAnd29mZicsICd0dGYnOiAndHJ1ZXR5cGUnLCAnc3ZnJzogJ3N2ZycpO1xuXG4gIEBlYWNoICRleHQsICRmb3JtYXQgaW4gJGZvbnQtZXh0ZW5zaW9ucyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRmaWxlcywgJGV4dCkge1xuICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhpbmxpbmUtZm9udC1maWxlcykgYW5kICRpbmxpbmUtd29mZiA9PSB0cnVlIGFuZCAoJGV4dCA9PSAnd29mZicgb3IgJGV4dCA9PSAnd29mZjInKSB7XG4gICAgICAgICRmb250LXNyYzogaW5saW5lLWZvbnQtZmlsZXMobWFwLWdldCgkZmlsZXMsICRleHQpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIGZ1bmN0aW9uLWV4aXN0cyhmb250LXVybCkge1xuICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkZm9udC1zdGFjazogYXBwZW5kKCRmb250LXN0YWNrLCAkZm9udC1zcmMsICdjb21tYScpO1xuICAgIH1cblxuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRuYW1lO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6ICRlb3Q7XG4gICAgfVxuICAgIEBpZiBsZW5ndGgoJGZvbnQtc3RhY2spID4gMCB7XG4gICAgICBzcmM6ICRmb250LXN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEljb24gRm9udFxuLy8gRnJvbSBodHRwOi8vaWNvbW9vbi5pb1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaWNvbi1mb250KCRmb250LXN0YWNrLCAkc3BlYWs6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHNwZWFrOiBpZigkc3BlYWsgIT0gbnVsbCwgJHNwZWFrLCB0b29sa2l0LWdldCgnaWNvbiBmb250IHNwZWFrJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjaztcbiAgQGlmICRzcGVhayA9PSBmYWxzZSB7XG4gICAgc3BlYWs6IG5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gaWNvbi1mb250LS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCAge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpY29uIGZvbnQgY29yZScpIHtcbiAgICAgIEBpbmNsdWRlIGljb24tZm9udC0tY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZCk7XG5cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWRlIEluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjb250ZW50LWZhZGUtaW4oJGR1cmF0aW9uOiBudWxsLCAkbG9hZGluZzogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZHVyYXRpb246IGlmKCRkdXJhdGlvbiAhPSBudWxsLCAkZHVyYXRpb24sIHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykpO1xuICAkbG9hZGluZzogaWYoJGxvYWRpbmcgIT0gbnVsbCwgJGxvYWRpbmcsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUgYW5kICRkdXJhdGlvbiA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpIGFuZCAkbG9hZGluZyA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjb250ZW50IGZhZGUgaW4nKSB7XG4gICAgICBAaW5jbHVkZSBjb250ZW50LWZhZGUtaW4oJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaWYgbm90IG1peGluLWV4aXN0cygnc2luZ2xlLXRyYW5zaXRpb24nKSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG9wYWNpdHkgJGR1cmF0aW9uKTtcbiAgICB9XG5cbiAgICAjeyRsb2FkaW5nfSAmIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZsdWlkIEVtYmVkcyBhbmQgd2hhdGV2ZXIgV0lUSCBOTyBKQVZBU0NJUFQhXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBwYXJlbnQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gY2hpbGQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICB0b3A6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG5cbiAgcGFkZGluZy0jeyRwb3NpdGlvbn06ICgxIC8gJHJhdGlvKSAqICR3aWR0aDtcbiAgd2lkdGg6ICR3aWR0aDtcbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRlbGVtZW50czogaWYoJGVsZW1lbnRzICE9IG51bGwsICRlbGVtZW50cywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZCk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xuXG4gIEBlYWNoICRlbGVtZW50IGluICRlbGVtZW50cyB7XG4gICAgI3skZWxlbWVudH0ge1xuICAgIFx0QGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXIoJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpbygkcmF0aW8sICR3aWR0aCwgJGVsZW1lbnRzLCAkZXh0ZW5kLCAkcG9zaXRpb24pO1xufVxuXG5AbWl4aW4gaXItcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG59IiwiLy8gc2ltcGxlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbnRleHQgb2YgYSBuZXN0ZWQgcGVyY2VudGFnZS5cbkBmdW5jdGlvbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG5cbiAgLy8gRmlyc3QgbGV2ZWwgZGVlcCBpcyBhbHdheXMgMTAwJVxuICAkcGVyY2VudGFnZTogMTAwJTtcblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBsZXZlbFxuICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgIC8vIEludmVydCB0aGUgcGVyY2VudGFnZSB0byBmaW5kIGNvbnRleHRcbiAgICAkcGVyY2VudGFnZTogcGVyY2VudGFnZSgkcGVyY2VudGFnZSAvICRjb250ZXh0KTtcbiAgfVxuICAvLyBSZXR1cm4gZmluYWwgcGVyY2VudGFnZVxuICBAcmV0dXJuICRwZXJjZW50YWdlO1xufVxuXG4vLyBtaXhpbiB0byBtYWtlIHRoaW5ncyBlYXNpZXJcbkBtaXhpbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nKSk7XG5cbiAgd2lkdGg6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cyk7XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJjZW50ZXJcIiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0uNTtcbiAgfVxuICBAaWYgJHBvc2l0aW9uID09IFwicmlnaHRcIiB7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtMSArIDEwMCU7XG4gIH1cbn0iLCIvLyBNYWdpYyBwYXJhbGxheCBtaXhpbnNcbkBtaXhpbiBwYXJhbGxheC1pbml0KCRwZXJzcGVjdGl2ZTogbnVsbCwgJGVsZW1lbnQ6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcblxuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJGVsZW1lbnQ6IGlmKCRlbGVtZW50ICE9IG51bGwsICRlbGVtZW50LCB0b29sa2l0LWdldCgncGFyYWxsYXggZWxlbWVudCcpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIEBpZiAkZWxlbWVudCA9PSAnYm9keScge1xuICAgIEBhdC1yb290IHtcbiAgICAgIGh0bWwsIGJvZHkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICBib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGVsZW1lbnQgPT0gdGhpcyB7XG4gICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGF0LXJvb3QgI3skZWxlbWVudH0ge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmU6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBvdmVyZmxvdzogYXV0bztcbiAgQGlmIG1peGluLWV4aXN0cyhwZXJzcGVjdGl2ZSkge1xuICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSAqIDFweCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgICBwZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICB9XG4gIC8vIEFsbG93cyBmb3Igc21vb3RoIHNjcm9sbGluZyBidXQgZGlzYWJsZXMgcGFyYWxsYXggZWZmZWN0cy5cbiAgQGlmICRwYXJhbGxheC1pb3MgPT0gZmFsc2Uge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAvLyBNYWtlIHN1cmUgM0QgcGVyc3BlY3RpdmUgaXMgcHJlc2VydmVkXG4gICYsICYgKiB7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0tc3R5bGUpIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZShwcmVzZXJ2ZS0zZCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheCgkZGlzdGFuY2U6IG51bGwsICRwZXJzcGVjdGl2ZTogbnVsbCkge1xuXG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGRpc3RhbmNlJykpO1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcblxuICAkdHJhbnNmb3JtOiB0cmFuc2xhdGVaKCRkaXN0YW5jZSAqICRwZXJzcGVjdGl2ZSAqIDFweCkgc2NhbGUoYWJzKCRkaXN0YW5jZSAtIDEpKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnNmb3JtKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gICAgdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICB9XG5cbiAgei1pbmRleDogJGRpc3RhbmNlICogMTAwO1xufVxuIiwiQG1peGluIHJ0bCgkcHJvcGVydHksICR2YWx1ZSkge1xuICAkX3Byb3BlcnR5OiAkcHJvcGVydHk7XG4gICN7JHByb3BlcnR5fTogJHZhbHVlO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA9PSA0IHtcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgI3skcHJvcGVydHl9OiBudGgoJHZhbHVlLCAxKSBudGgoJHZhbHVlLCA0KSBudGgoJHZhbHVlLCAzKSBudGgoJHZhbHVlLCAyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpIC0gMSkgKyAncmlnaHQnO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykgLSAxKSArICdsZWZ0JztcbiAgICB9XG5cbiAgICBAaWYgJHByb3BlcnR5ICE9ICRfcHJvcGVydHkge1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiQG1peGluIHRhcmdldCgkdGFyZ2V0KSB7XG4gIEBhdC1yb290IHtcbiAgICAvKiEgQHt0YXJnZXQ6ICN7JHRhcmdldH19ICovXG4gICAgJiB7XG4gICAgICBAY29udGVudDsgIFxuICAgIH1cbiAgICAvKiEge3RhcmdldDogI3skdGFyZ2V0fX1AICovICBcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRHJhdyB0cmlhbmdsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gdHJpYW5nbGUoJGNvbG9yOiBudWxsLCAkaGVpZ2h0OiBudWxsLCAkd2lkdGg6IG51bGwsICRhbmdsZTogbnVsbCkge1xuXG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGNvbG9yJykpO1xuICAkaGVpZ2h0OiBpZigkaGVpZ2h0ICE9IG51bGwsICRoZWlnaHQsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBoZWlnaHQnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIHdpZHRoJykpO1xuICAkYW5nbGU6IGlmKCRhbmdsZSAhPSBudWxsLCAkYW5nbGUsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBhbmdsZScpKTtcblxuICBAaWYgbnRoKCRhbmdsZSwgMSkgPT0gXCJ0b3BcIiBvciBudGgoJGFuZ2xlLCAxKSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IFwiI3skYW5nbGV9XCI7XG4gIH1cblxuICBAaWYgJGFuZ2xlID09IFwidG9wXCIge1xuICAgICRhbmdsZTogMDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiA3O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJyaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAxO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDQ7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiAzO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA2O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNTtcbiAgfVxuXG4gIEBpZiB1bml0KCRoZWlnaHQpID09IFwiXCIgb3IgdW5pdCgkaGVpZ2h0KSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skaGVpZ2h0fSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIGhlaWdodC5cIlxuICB9XG5cbiAgQGlmIHVuaXQoJHdpZHRoKSA9PSBcIlwiIG9yIHVuaXQoJHdpZHRoKSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skd2lkdGh9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3Igd2lkdGguXCJcbiAgfVxuXG4gIC8vIG9mZnNldCA0NWRlZyB0byBtYWtlIGVhY2ggc2lkZSBzdGFydCBhdCAwXG4gICRkZWc6ICRhbmdsZSArIDQ1O1xuICAvLyBpZiB1bml0cywgcmVtb3ZlIHVuaXRzXG4gIEBpZiB1bml0KCRkZWcpID09IGRlZyB7XG4gICAgJGRlZzogJGRlZyAvIDFkZWc7XG4gIH1cbiAgLy8gc2hpZnQgdG8gYmUgb24gYSBzY2FsZSBmcm9tIDAgdG8gOTAuXG4gIEB3aGlsZSAkZGVnID4gOTAge1xuICAgICRkZWc6ICRkZWcgLSA5MDtcbiAgfVxuICBAd2hpbGUgJGRlZyA8IDAge1xuICAgICRkZWc6ICRkZWcgKyA5MDtcbiAgfVxuICAvLyBHZXQgYSByYXRpbyBvZiA5MCB0byBtdWx0aXBseSBieS5cbiAgJGRlZzogJGRlZyAvIDkwO1xuXG4gIC8vIG1ha2Ugc3VyZSBtZXRyaWNzIGFyZSByZXNldFxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gIC8vIHJ1biB0aHJvdWdoIHNpZGVzXG4gIEBpZiAkYW5nbGUgPD0gNDUgb3IgJGFuZ2xlID4gMzE1IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKSAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gNDUgYW5kICRhbmdsZSA8PSAxMzUge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqICRkZWcpIDAgKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGg7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDEzNSBhbmQgJGFuZ2xlIDw9IDIyNSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAoJHdpZHRoICogJGRlZykgMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDIyNSBhbmQgJGFuZ2xlIDw9IDMxNSB7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aCAoJGhlaWdodCAqICRkZWcpIDA7XG4gIH1cbn0iLCIvLyBWZXJ0aWNhbGx5IGNlbnRlciBhbnl0aGluZywgbGl0ZXJhbGx5IGFueXRoaW5nLlxuLy8gaHR0cDovL3plcm9zaXh0aHJlZS5zZS92ZXJ0aWNhbC1hbGlnbi1hbnl0aGluZy13aXRoLWp1c3QtMy1saW5lcy1vZi1jc3MvXG5AbWl4aW4gdmVydGljYWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuXG4gIHRvcDogJG1pZHBvaW50O1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3ZlcnRpY2FsIGNlbnRlcicpIHtcbiAgICAgIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhvcml6b250YWwgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgQGlmICRtaWRwb2ludCAhPSAwJSB7XG4gICAgbGVmdDogJG1pZHBvaW50O1xuICB9XG5cbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBYnNvbHV0ZSBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFic29sdXRlLWNlbnRlcigkdmVydGljYWw6IG51bGwsICRob3Jpem9udGFsOiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHZlcnRpY2FsOiBpZigkdmVydGljYWwgIT0gbnVsbCwgJHZlcnRpY2FsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgdG9wOiAkdmVydGljYWw7XG4gIEBpZiAkaG9yaXpvbnRhbCAhPSAwJSB7XG4gICAgbGVmdDogJGhvcml6b250YWw7XG4gIH1cblxuICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENTUyBsZXZlbCA0IFZpZXdwb3J0XG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtZGV2aWNlLWFkYXB0LyN0aGUtYXR2aWV3cG9ydC1ydWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiB2aWV3cG9ydCB7XG4gIEAtd2Via2l0LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tcy12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQHZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4iLCJAbWl4aW4gdW5kZXJsaW5lKCRiYWNrZ3JvdW5kOiBudWxsLCAkY29sb3I6IG51bGwsICRjbGVhci1kZXNjZW5kZXJzOiBudWxsLCAkZGlzdGFuY2U6IG51bGwsICR3aWR0aDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkYmFja2dyb3VuZDogaWYoJGJhY2tncm91bmQgIT0gbnVsbCwgJGJhY2tncm91bmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgYmFja2dyb3VuZCcpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNvbG9yJykpO1xuICAkY2xlYXItZGVzY2VuZGVyczogaWYoJGNsZWFyLWRlc2NlbmRlcnMgIT0gbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnMsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycycpKTtcbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGRpc3RhbmNlJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgd2lkdGgnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgJFBYOiAuMDYyNWVtO1xuXG4gIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKCRleHRlbmQpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHMoYmFja2dyb3VuZC1pbWFnZSkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhsaW5lYXItZ3JhZGllbnQpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKFxuICAgICAgbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKVxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSk7XG4gIH1cbiAgYmFja2dyb3VuZC1zaXplOiAoMiAqICRQWCkgKCgxICsgJHdpZHRoKSAqICRQWCk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgKCgkd2lkdGgpICogJFBYKSArICRkaXN0YW5jZTtcblxuICBAaWYgJGNsZWFyLWRlc2NlbmRlcnMge1xuICAgIHRleHQtc2hhZG93OiAoMSAqICRQWCkgKDEgKiAkUFgpIDAgJGJhY2tncm91bmQsICgtMSAqICRQWCkgMCAwICRiYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd1bmRlcmxpbmUnKSB7XG4gICAgICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBUlQhXG4vLyBJbnNwaXJlZCBieSBodHRwOi8vZWxydW1vcmRlbGFsdXouZ2l0aHViLmlvL1BpeGVsYXRvci9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFydCgkYXJ0LCAkcHgtc2l6ZTogbnVsbCwgJGNvbG9yOiBudWxsLCAkcmFkaXVzOiBudWxsKSB7XG4gICRweC1zaXplOiBpZigkcHgtc2l6ZSAhPSBudWxsLCAkcHgtc2l6ZSwgdG9vbGtpdC1nZXQoJ2FydCBwaXhlbCBzaXplJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCdhcnQgY29sb3InKSk7XG4gICRyYWRpdXM6IGlmKCRyYWRpdXMgIT0gbnVsbCwgJHJhZGl1cywgdG9vbGtpdC1nZXQoJ2FydCBib3JkZXIgcmFkaXVzJykpO1xuXG4gICRidWlsZDogKCk7XG4gICR5OiAkcHgtc2l6ZTtcbiAgJHg6IDA7XG5cbiAgaGVpZ2h0OiAkcHgtc2l6ZTtcbiAgd2lkdGg6ICRweC1zaXplO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyX2xlbmd0aCgkYXJ0KSB7XG4gICAgJGNoYXI6IHN0cl9zbGljZSgkYXJ0LCAkaSwgJGkpO1xuICAgICR4OiAkeCArICRweC1zaXplO1xuXG4gICAgQGlmICRjaGFyID09ICduJyB7XG4gICAgICAkeTogJHkgKyAkcHgtc2l6ZTtcbiAgICAgICR4OiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY2hhciAhPSAnICcge1xuICAgICAgJGJvcmRlcjogJHggJHkgMCAkY29sb3I7XG4gICAgICAkYnVpbGQ6IGFwcGVuZCgkYnVpbGQsICRib3JkZXIsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBib3gtc2hhZG93OiAkYnVpbGQ7XG59IiwiQG1peGluIHNldC1tdWx0aXBsZSgkdmFsdWUsICRwcm9wZXJ0aWVzLi4uKSB7XG4gICRwcm9wZXJ0eS1sZW5ndGg6IGxlbmd0aCgkcHJvcGVydGllcyk7XG4gICRlcnJvci1tc2c6IFwiVGhlIGBzZXQtbXVsdGlwbGVgIG1peGluIHJlcXVpcmVzIHlvdSB0byBwYXNzIGluIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzIHRoZSBzZWNvbmQgYXJndW1lbnRcIjtcblxuICBAaWYgJHByb3BlcnR5LWxlbmd0aCA8IDEge1xuICAgIEBpZiBmZWF0dXJlLWV4aXN0cyhhdC1lcnJvcikge1xuICAgICAgQGVycm9yICRlcnJvci1tc2c7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICRlcnJvci1tc2c7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCBpbiBpcyBhIHdoaXRlLXNwYWNlZCBzZXBhcmF0ZWQgbGlzdC5cbiAgJHByb3BlcnRpZXM6IGlmKCRwcm9wZXJ0eS1sZW5ndGggPT0gMSwgbnRoKCRwcm9wZXJ0aWVzLCAxKSwgJHByb3BlcnRpZXMpO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSBpbiAkcHJvcGVydGllcyB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWVcbiAgfVxufVxuIiwiLy8gIE1vZHVsZSBTY2FsZSBhbmQgYmFzZSBmb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJGJhc2UtZm9udC1zaXplOiAgIDE0cHg7XG4kaWRlYWwtZm9udC1zaXplOiAgMjJweDtcbi8vICRiYXNlLWxpbmUtaGVpZ2h0OiBtcygxLCAkYmFzZS1mb250LXNpemUpO1xuXG4kcmh5dGhtLXVuaXQ6IFwicmVtXCI7XG4kcmh5dGhtLWdhcDogOHB4O1xuJHJlbS13aXRoLXB4LWZhbGxiYWNrOiBmYWxzZTtcblxuJHNjdXQtcmVtLWJhc2U6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZS1mb250LXNpemUpO1xuXG5cbi8vIHt7IENvbXBvbmVudCBzaXplIH19XG4kZ2xvYmFsLXJhZGl1czogM3B4O1xuIiwiLy8gIEdyaWQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG5cbiRsYXlvdXQtYmFzZTogKFxuICBndXR0ZXJzOiAxLzUsXG4gIGNvbHVtbi13aWR0aDogODBweCxcbiAgLy8gZ3V0dGVyLXBvc2l0aW9uOiBpbnNpZGUtc3RhdGljLFxuICBkZWJ1ZzogKFxuICAgIC8vIGltYWdlOiBzaG93LFxuICApLFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IHRydWUsXG4gICAgcmVtOiBmYWxzZSxcbiAgKSxcbik7XG4kc3VzeTogbGF5b3V0KDUgJGxheW91dC1iYXNlKTtcblxuLy8ge3sgRWxlbWVudCB0d2ljayBwb2ludHMgfX1cblxuLy8ge3sgRGV2aWNlIGxheW91dHMgfX1cbiRzdXN5LW1lZGlhOiAoXG4gICdtb2JpbGUnOiAnKG1heC13aWR0aDogNDE0cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6ICcobWF4LXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiAnKG1heC13aWR0aDogMTAyNHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3RhYmxldCc6ICcobWluLXdpZHRoOiA3NjhweCknLFxuICAndGFibGV0LXBvcnRyYWl0LW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ2Rlc2t0b3AnOiAnKG1pbi13aWR0aDogMTIwMHB4KScsXG4gICdjYXRlZ29yeS1tZW51JzogJyhtaW4td2lkdGg6IDEwMjRweCknXG4pO1xuJHRhYmxldDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgdGFibGV0KSxcbiAgbGF5b3V0OiA5IC41XG4pO1xuJHRhYmxldC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCR0YWJsZXQsIGxheW91dCkpO1xuJGRlc2t0b3A6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIGRlc2t0b3ApLFxuICBsYXlvdXQ6IDEyIDEuNSBzcGxpdFxuKTtcbiRkZXNrdG9wLWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJGRlc2t0b3AsIGxheW91dCkpO1xuJGRlc2t0b3AtZ3JpZC1wYWRkaW5nOiBzY3V0LXJlbSgxNSk7XG5cbi8vICB7eyBMYXllcnMgLS0tLS0tIH19XG4kbGF5ZXJzOiAoXG4gIGJhc2UsXG4gIGhlYWRlci1tZW51LFxuICBkcmF3ZXIsXG4gIGRyYXdlci1zaGFkb3csXG4gIGRyYXdlci1uYXYsXG4pOyIsIi8vICBTZXR0aW5nc1xuLy8gID09PT09PT09XG5cbiRjb2xvci1saWdodC1zYXR1cmF0aW9uOiA5MyU7XG5cbi8vICBDb2xvcnNcbi8vICA9PT09PT1cblxuJGdyYXktYmFzZTogICAgICMwMDAgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrZXI6ICAgdGludCgkZ3JheS1iYXNlLCAxMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrOiAgICAgdGludCgkZ3JheS1iYXNlLCAyMCUpICAgIWRlZmF1bHQ7XG4kZ3JheTogICAgICAgICAgdGludCgkZ3JheS1iYXNlLCAzMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodDogICAgdGludCgkZ3JheS1iYXNlLCA0Ni41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodGVyOiAgdGludCgkZ3JheS1iYXNlLCA5My41JSkgIWRlZmF1bHQ7XG5cbi8vICBUZXh0c1xuLy8gIC0tLS0tXG5cbiR0ZXh0LWNvbG9yOiAkZ3JheS1kYXJrO1xuXG4vLyAgUGFsbGV0ZVxuLy8gIC0tLS0tLS0tLS0tXG5cbiRibHVlOiAjMmQ2ZWM2O1xuJGJsdWUtZGFyazogcmdiKDAsIDY5LCAxNjQpO1xuJGJsdWUtbGlnaHQ6ICNkOGU5ZmY7XG4keWVsbG93OiAjZmM5NjAwO1xuJHllbGxvdy1kYXJrOiAjYjg2ZTAwO1xuJHllbGxvdy1saW5rOiAjZmZkODAwO1xuJG9yYW5nZTogI2ZjNDcwMDtcbiRvcmFuZ2UtZGFyazogI2I4NmUwMDtcbiRyZWQ6IHJnYigyMDYsIDY4LCA2Mik7XG4kZ3JlZW46IHJnYigyOCwgMTQ5LCAyMik7XG4kcGluazogcmdiKDE5NywgMzEsIDEyNCk7XG5cbiRwcmltYXJ5OiBzaGFkZSgjNDI4YmNhLCA2LjUlKTtcbiRzdWNjZXNzOiAjNWNiODVjO1xuJGluZm86ICAgICM1YmMwZGM7XG4kd2FybmluZzogI2YwYWQ0ZTtcbiRkYW5nZXI6ICAjZDk1MzRmO1xuXG4kaW5wdXQtYm9yZGVyOiAjZTRlNGU0O1xuJGJvcmRlci1ncmF5OiAjOTE5MTkxO1xuJGJhY2tncm91bmQtZ3JheTogI2U5ZTllOTtcblxuLy8gIExpbmtzXG4vLyAgLS0tLS1cblxuJGxpbmstY29sb3I6ICAgICAgICAgICAjMDAwICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICBzaGFkZSgkbGluay1jb2xvciwgMTUlKSAhZGVmYXVsdDtcbiRsaW5rLWZvY3VzLWNvbG9yOiAgICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLWFjdGl2ZS1jb2xvcjogICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLXZpc2l0ZWQtY29sb3I6ICAgJGdyYXktZGFyayAhZGVmYXVsdDtcblxuLy8gIE5Qcm9ncmVzc1xuLy8gIC0tLS0tLS0tLVxuJG5wcm9ncmVzcy1jb2xvcjogICAgJHByaW1hcnk7XG4iLCIvLyAgRm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiAgIHJpZ2h0O1xuXG4vLyDlg4Xph53lsI3oi7Hmlodcbi8vIEBmb250LWZhY2Uge1xuLy8gICBmb250LWZhbWlseTogRW5nbGlzaDtcbi8vICAgdW5pY29kZS1yYW5nZTogVSswMC0wMjRGO1xuLy8gICBzcmM6IGxvY2FsKEhlbHZldGljYSk7XG4vLyB9XG5cbiRzYW5zOiAgICBIZWx2ZXRpY2FOZXVlLUxpZ2h0XG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUgTGlnaHQnXG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUnXG4gICAgICAgLCAgSGVsdmV0aWNhXG4gICAgICAgLCAnSGVpdGkgVEMnXG4gICAgICAgLCAnTGlIZWkgUHJvJ1xuICAgICAgICwgJ01pY3Jvc29mdCBKaGVuZ0hlaSdcbiAgICAgICAsICflvq7ou5/mraPpu5Hpq5QnXG4gICAgICAgLCAgQXJpYWxcbiAgICAgICAsICBzYW5zLXNlcmlmO1xuXG4kc2VyaWY6ICAnUFQgU2VyaWYnXG4gICAgICAgLCBHZW9yZ2lhXG4gICAgICAgLCBUaW1lc1xuICAgICAgICwgJ1RpbWVzIE5ldyBSb21hbidcbiAgICAgICAsICdTb25ndGkgVEMnXG4gICAgICAgLCAnSGlyYWdpbm8gTWluY2hvIFByb04nXG4gICAgICAgLCBzZXJpZjtcblxuJGJhc2UtZm9udC1mYW1pbHk6ICRzYW5zOyJdLCJtYXBwaW5ncyI6IkE4Q0FBOzs7OztFQUtFO0E5Q09GLEFBQUEsQ0FBQyxDQUFDO0VBQ0EsZUFBZSxFQUFFLElBQUs7RThDMk9wQixLQUFLLEVvQnhNYyxJQUFJLEdsRWpDMUI7RUFIRCxBQUFBLENBQUMsQThDc1BFLE1BQU0sRTlDdFBULEFBQUEsQ0FBQyxBOEN1UEUsTUFBTSxDQUFDO0lBYUosS0FBSyxFS3BRRCxLQUFHLEdMc1FWOztBOUNoUUgsQUFBQSxXQUFXLENBQUM7RUFDVixXQUFXLEVBQUUsSUFBSztFQUNsQixnQkFBZ0IsRW1EWlIsT0FBRyxHbkRhWiIsIm5hbWVzIjpbXX0= */
/* Slider */
.slick-slider {
  position: relative;
  display: block;
  box-sizing: border-box;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  -webkit-touch-callout: none;
  -khtml-user-select: none;
  -ms-touch-action: pan-y;
  touch-action: pan-y;
  -webkit-tap-highlight-color: transparent; }

.slick-list {
  position: relative;
  display: block;
  overflow: hidden;
  margin: 0;
  padding: 0; }

.slick-list:focus {
  outline: none; }

.slick-list.dragging {
  cursor: pointer;
  cursor: hand; }

.slick-slider .slick-track,
.slick-slider .slick-list {
  -webkit-transform: translate3d(0, 0, 0);
  -moz-transform: translate3d(0, 0, 0);
  -ms-transform: translate3d(0, 0, 0);
  -o-transform: translate3d(0, 0, 0);
  transform: translate3d(0, 0, 0); }

.slick-track {
  position: relative;
  top: 0;
  left: 0;
  display: block; }

.slick-track:before,
.slick-track:after {
  display: table;
  content: ''; }

.slick-track:after {
  clear: both; }

.slick-loading .slick-track {
  visibility: hidden; }

.slick-slide {
  display: none;
  float: left;
  height: 100%;
  min-height: 1px; }

[dir='rtl'] .slick-slide {
  float: right; }

.slick-slide img {
  display: block;
  object-fit: contain;
  object-position: 50% 0%;
  width: 100% }

.slick-slide.slick-loading img {
  display: none; }

.slick-slide.dragging img {
  pointer-events: none; }

.slick-initialized .slick-slide {
  display: block; }

.slick-loading .slick-slide {
  visibility: hidden; }

.slick-vertical .slick-slide {
  display: block;
  height: auto;
  border: 1px solid transparent; }

.slick-arrow.slick-hidden {
  display: none; }

/*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.appearance-none {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  border: none;
  outline: none;
  background: none transparent;
  padding: 0; }

.button--flat,
.button--primary,
.button--secondary {
  display: inline-block;
  padding: 8px 16px;
  border-radius: 3px; }

.button--flat:hover {
  background-color: #e9e9e9; }

.button--primary {
  color: #fff;
  background-color: #2d6ec6; }

.button--primary:hover {
  color: #fff;
  background-color: #0045a4; }

.button--secondary {
  background-color: #e9e9e9; }

.button--secondary:hover {
  background-color: #d2d2d2; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2J1dHRvbnMuc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2J1dHRvbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy5hcHBlYXJhbmNlLW5vbmUgeyBAaW5jbHVkZSBOb3JtYWxpemU7IH1cblxuJWJ1dHRvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogcigxKSByKDIpOyBcbiAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG59XG5cbi5idXR0b24tLWZsYXQge1xuICBAZXh0ZW5kICVidXR0b247XG4gICY6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ncmF5OyB9XG59XG4uYnV0dG9uLS1wcmltYXJ5IHtcbiAgQGV4dGVuZCAlYnV0dG9uO1xuICBjb2xvcjogI2ZmZiAkYmx1ZTtcbiAgJjpob3ZlciB7IGNvbG9yOiAjZmZmICRibHVlLWRhcms7IH1cbn1cbi5idXR0b24tLXNlY29uZGFyeSB7XG4gIEBleHRlbmQgJWJ1dHRvbjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtZ3JheTtcbiAgJjpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6IHNoYWRlKCRiYWNrZ3JvdW5kLWdyYXksIDEwJSk7IH1cbn0iLCIvLyB7e1Nhc3MgbWl4aW5zIC0tLS0tLS0tfX1cbkBmdW5jdGlvbiBuKCkgeyBAcmV0dXJuIHVucXVvdGUoXCIqXCIpOyB9XG5cbkBmdW5jdGlvbiByKCR0aW1lczogMSkgeyBAcmV0dXJuICRyaHl0aG0tZ2FwICogJHRpbWVzOyB9XG5cbkBtaXhpbiBzdXN5KCRtYXApIHtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJG1hcCwgcXVlcnkpLCBtYXAtZ2V0KCRtYXAsIGxheW91dCkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gcmV2ZXJzZS1oaWRlLXZpc3VhbGx5KCkge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG59XG5cbkBtaXhpbiBzaGFyZS1icmVha3BvaW50cygkbWFwLCAkY3NzcHJvcDogY29udGVudCkge1xuICAkZGVzY3JpcHRpb246ICcnO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRtYXAge1xuICAgIEBpZiAkZGVzY3JpcHRpb24gIT0gICcnIHtcbiAgICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJyB8ICc7XG4gICAgfVxuICAgIFxuICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJHByb3BlcnR5ICsnOiAnKyBpbnNwZWN0KCR2YWx1ZSk7XG4gIH1cblxuICBkaXNwbGF5OiBub25lO1xuICAjeyRjc3Nwcm9wfTogICRkZXNjcmlwdGlvbjtcbn1cblxuQG1peGluIHRvZ2dsZS1mYWRlKCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICB9XG59XG5cbkBtaXhpbiB0b2dnbGUtc2hvdygpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAwO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgfSAgXG59XG5cbkBtaXhpbiBzaG93KCkge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgaGVpZ2h0OiBhdXRvOyAgXG59XG5cbkBtaXhpbiBpbnB1dC1wbGFjZWhvbGRlcigpIHtcbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgXG4gICY6Oi1tb3otcGxhY2Vob2xkZXIsXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbn1cblxuQG1peGluIGRlYnVnKCRjb2xvcjogI2ZmZiByZ2JhKHRvbWF0bywgLjMpKSB7XG4gIGNvbG9yOiAkY29sb3Jcbn1cblxuQG1peGluIGxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpO1xuICA+IGxpICsgbGk6YmVmb3JlIHsgbWFyZ2luLWxlZnQ6ICRzcGFjZSArIDRweDsgfVxufVxuIiwiQG1peGluIEhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG5AbWl4aW4gU2VsZWN0IHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgcGFkZGluZzogMCByKDIpIDAgcigxKTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgLy8gaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICAvLyBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAvLyBiYWNrZ3JvdW5kOiB1cmwoXCJpbWFnZXMvYXJyb3ctZG93bi5zdmdcIilcbiAgLy8gICAgICAgICAgIDkyJSA1MCUgLyA4cHggMTBweFxuICAvLyAgICAgICAgICAgbm8tcmVwZWF0XG4gIC8vICAgICAgICAgICB0cmFuc3BhcmVudDtcbiAgLm5vLWNzcy1hcHBlYXJhbmNlICYge1xuICAgIEBpbmNsdWRlIHNjdXQtcGFkZGluZyhuIDApO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIE5vcm1hbGl6ZSgpIHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lIHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwO1xufSIsIi8vIFN1c3lcbi8vID09PT1cblxuQGltcG9ydCAnc3VzeS9sYW5ndWFnZS9zdXN5JztcbiIsIi8vIFN1c3kgTmV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuJHN1c3ktdmVyc2lvbjogMi4xO1xuXG5AaW1wb3J0IFwiLi4vc3VcIjtcbkBpbXBvcnQgXCIuLi9vdXRwdXQvZmxvYXRcIjtcblxuQGltcG9ydCBcInN1c3kvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdXN5L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdXN5L2dyaWRzXCI7XG5AaW1wb3J0IFwic3VzeS9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VzeS9jb250ZXh0XCI7XG5AaW1wb3J0IFwic3VzeS9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VzeS9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzdXN5L3NwYW5cIjtcbkBpbXBvcnQgXCJzdXN5L2d1dHRlcnNcIjtcbkBpbXBvcnQgXCJzdXN5L2lzb2xhdGVcIjtcbkBpbXBvcnQgXCJzdXN5L2dhbGxlcnlcIjtcbkBpbXBvcnQgXCJzdXN5L3Jvd3NcIjtcbkBpbXBvcnQgXCJzdXN5L21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzdXN5L3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2JsZWVkXCI7XG5AaW1wb3J0IFwic3VzeS9icmVha3BvaW50LXBsdWdpblwiO1xuIiwiLy8gU3Vcbi8vID09XG5cbkBpbXBvcnQgXCJzdS91dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJzdS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdS9ncmlkXCI7XG4iLCIvLyBNYXAgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gVHJ1bmNhdGUgTGlzdFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSBsaXN0LCB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBsZW5ndGhcbkBmdW5jdGlvbiBfc3VzeS10cnVuY2F0ZS1saXN0KFxuICAkbGlzdCxcbiAgJGxlbmd0aFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGlzdCkge1xuICAgICRfcmV0dXJuOiBpZigkaSA8PSAkbGVuZ3RoLCBhcHBlbmQoJF9yZXR1cm4sIG50aCgkbGlzdCwgJGkpKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIEdldFxuLy8gLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtZ2V0KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiAkbWFwO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiB0eXBlLW9mKCRfcmV0dXJuKSA9PSBtYXAge1xuICAgICAgJF9yZXR1cm46IG1hcC1nZXQoJF9yZXR1cm4sICRrZXkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBTZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFNldCBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLXNldChcbiAgJG1hcCxcbiAgJGtleXMtdmFsdWUuLi5cbikge1xuICAkX3ZhbHVlOiBudGgoJGtleXMtdmFsdWUsIC0xKTtcbiAgJF9rZXlzOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRrZXlzLXZhbHVlLCBsZW5ndGgoJGtleXMtdmFsdWUpIC0gMSk7XG4gICRfbGVuZ3RoOiBsZW5ndGgoJF9rZXlzKTtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJF9sZW5ndGgge1xuICAgICRfbjogMCAtICRpO1xuICAgICRfbGV2ZWw6IF9zdXN5LXRydW5jYXRlLWxpc3QoJF9rZXlzLCAkX2xlbmd0aCArICRfbik7XG4gICAgJF9sZXZlbDogX3N1c3ktZGVlcC1nZXQoJG1hcCwgJF9sZXZlbC4uLik7XG4gICAgJF9tZXJnZTogbnRoKCRfa2V5cywgJF9uKTtcbiAgICAkX21lcmdlOiAoJF9tZXJnZTogJF92YWx1ZSk7XG4gICAgJF9yZXR1cm46IGlmKCRfbGV2ZWwsIG1hcC1tZXJnZSgkX2xldmVsLCAkX21lcmdlKSwgJF9tZXJnZSk7XG4gICAgJF92YWx1ZTogJF9yZXR1cm47XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgTWVyZ2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiAyIG9iamVjdHMgb2YgYW55IGRlcHRoLCBtZXJnZWRcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLW1lcmdlKFxuICAkbWFwMSxcbiAgJG1hcDJcbikge1xuXG4gIEBpZiB0eXBlLW9mKCRtYXAxKSAhPSBtYXAgb3IgdHlwZS1vZigkbWFwMikgIT0gbWFwIHtcbiAgICAkbWFwMTogJG1hcDI7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwMiB7XG4gICAgICAkX25ldzogKCRrZXk6IF9zdXN5X2RlZXAtbWVyZ2UobWFwLWdldCgkbWFwMSwgJGtleSksICR2YWx1ZSkpO1xuICAgICAgJG1hcDE6IG1hcC1tZXJnZSgkbWFwMSwgJF9uZXcpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG1hcDE7XG59XG5cblxuLy8gRGVlcCBIYXMtS2V5XG4vLyAtLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIHRydWUgaWYgYSBkZWVwIGtleSBleGlzdHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWhhcy1rZXkoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46IG51bGw7XG4gICRfc3RvcDogZmFsc2U7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIG5vdCgkX3N0b3ApIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KTtcbiAgICB9XG5cbiAgICBAaWYgJF9yZXR1cm4ge1xuICAgICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfc3RvcDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU2V0dGluZ3Ncbi8vID09PT09PT09XG5cbi8vIFZlcnNpb25cbi8vIC0tLS0tLS1cbiRzdS12ZXJzaW9uOiAxLjE7XG5cblxuLy8gRGVmYXVsdCBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVGhlIGJhc2ljIHNldHRpbmdzXG4kc3VzeS1kZWZhdWx0czogKFxuICBjb2x1bW5zOiA0LFxuICBndXR0ZXJzOiAuMjUsXG4pO1xuXG5cbi8vIFVzZXIgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gRGVmaW5lIHRoZSAkc3VzeSB2YXJpYWJsZSB3aXRoIGEgbWFwIG9mIHlvdXIgb3duIHNldHRpbmdzLlxuLy8gLSBTZXQgRUlUSEVSICRjb2x1bW4td2lkdGggT1IgJGNvbnRhaW5lclxuLy8gLSBVc2UgJGNvbHVtbi13aWR0aCBmb3Igc3RhdGljIGxheW91dHNcbiRzdXN5OiAoKSAhZGVmYXVsdDtcblxuXG4vLyBTdXN5IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBBZGQgZGVmYXVsdHMgdG8gU3VzeVxuQG1peGluIHN1c3ktZGVmYXVsdHMoXG4gICRkZWZhdWx0c1xuKSB7XG4gICRzdXN5LWRlZmF1bHRzOiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRkZWZhdWx0cykgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IFNldFxuLy8gLS0tLS0tLS1cbi8vIENoYW5nZSBvbmUgc2V0dGluZ1xuLy8gLSAka2V5ICAgOiBzZXR0aW5nIG5hbWVcbi8vIC0gJHZhbHVlIDogc2V0dGluZyB2YWx1ZVxuQG1peGluIHN1c3ktc2V0KFxuICAka2V5LXZhbHVlLi4uXG4pIHtcbiAgJHN1c3k6IF9zdXN5LWRlZXAtc2V0KCRzdXN5LCAka2V5LXZhbHVlLi4uKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgR2V0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJuIG9uZSBzZXR0aW5nIGZyb20gYSBncmlkXG4vLyAtICRrZXkgICAgIDogPGtleXdvcmQ+XG4vLyAtICRsYXlvdXQgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIHN1c3ktZ2V0KFxuICAka2V5LFxuICAkbGF5b3V0OiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRzdXN5KVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfb3B0aW9uczogJGxheW91dCAkc3VzeSAkc3VzeS1kZWZhdWx0cztcbiAgJF9icmVhazogZmFsc2U7XG4gICRfcmV0dXJuOiBudWxsO1xuXG4gIEBlYWNoICRvcHQgaW4gJF9vcHRpb25zIHtcbiAgICBAaWYgdHlwZS1vZigkb3B0KSA9PSBtYXAgYW5kIG5vdCgkX2JyZWFrKSB7XG4gICAgICAkX2tleXNldDogX3N1c3ktZGVlcC1oYXMta2V5KCRvcHQsICRrZXkuLi4pO1xuICAgICAgQGlmICRfa2V5c2V0IHtcbiAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtZ2V0KCRvcHQsICRrZXkuLi4pO1xuICAgICAgICAkX2JyZWFrOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBNYXRoIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PVxuXG5cbi8vIFZhbGlkIENvbHVtbnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBjb2x1bW4gc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW5zKFxuICAkY29sdW1ucyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkY29sdW1ucyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGNvbHVtbnMpIHtcbiAgICAkcmV0dXJuOiAkY29sdW1ucztcbiAgfSBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAkZmFpbDogbnVsbDtcbiAgICBAZWFjaCAkY29sIGluICRjb2x1bW5zIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRjb2wpID09IG51bWJlciB7XG4gICAgICAgICRmYWlsOiAkZmFpbCBvciBpZih1bml0bGVzcygkY29sKSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGZhaWw6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgICRyZXR1cm46IGlmKCRmYWlsLCAkcmV0dXJuLCAkY29sdW1ucyk7XG4gIH1cblxuICBAaWYgJHJldHVybiAhPSAkY29sdW1ucyBhbmQgbm90KCRzaWxlbnQpIHtcbiAgICAkcmV0dXJuOiBudWxsO1xuICAgICR3YXJuOiAnJGNvbHVtbnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlciBvciBsaXN0IG9mIHVuaXRsZXNzIG51bWJlcnMuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRjb2x1bW5zfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cblxuLy8gVmFsaWQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGd1dHRlciBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWd1dHRlcnMoXG4gICRndXR0ZXJzLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRndXR0ZXJzKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkZ3V0dGVycykge1xuICAgICRyZXR1cm46ICRndXR0ZXJzO1xuICB9IEBlbHNlIGlmIG5vdCgkc2lsZW50KSB7XG4gICAgJHdhcm46ICckZ3V0dGVycyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skZ3V0dGVyc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQ29sdW1uIG1hdGhcbi8vID09PT09PT09PT09XG5cblxuLy8gSXMgU3ltbWV0cmljYWxcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgYSBncmlkIGlzIHN5bW1ldHJpY2FsLlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIGlzLXN5bW1ldHJpY2FsKFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaWYodHlwZS1vZigkY29sdW1ucykgPT0gbnVtYmVyLCAkY29sdW1ucywgbnVsbCk7XG59XG5cblxuLy8gU3VzeSBDb3VudFxuLy8gLS0tLS0tLS0tLVxuLy8gRmluZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gYSBnaXZlbiBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LWNvdW50KFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpIG9yIGxlbmd0aCgkY29sdW1ucyk7XG59XG5cblxuLy8gU3VzeSBTdW1cbi8vIC0tLS0tLS0tXG4vLyBGaW5kIHRoZSB0b3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeS1zdW0oXG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcblxuICAkc3ByZWFkOiBpZigkc3ByZWFkID09IHdpZGUsIDAsIGlmKCRzcHJlYWQgPT0gd2lkZXIsIDEsIC0xKSk7XG4gICRndXR0ZXItc3VtOiAoc3VzeS1jb3VudCgkY29sdW1ucykgKyAkc3ByZWFkKSAqICRndXR0ZXJzO1xuICAkY29sdW1uLXN1bTogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gIEBpZiBub3QoJGNvbHVtbi1zdW0pIHtcbiAgICBAZWFjaCAkY29sdW1uIGluICRjb2x1bW5zIHtcbiAgICAgICRjb2x1bW4tc3VtOiAoJGNvbHVtbi1zdW0gb3IgMCkgKyAkY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi1zdW0gKyAkZ3V0dGVyLXN1bTtcbn1cblxuXG4vLyBTdXN5IFNsaWNlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgb2YgY29sdW1ucyBhdCBhIGdpdmVuIGxvY2F0aW9uLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktc2xpY2UoXG4gICRzcGFuLFxuICAkbG9jYXRpb24sXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJHN1Yi1jb2x1bW5zOiAkc3BhbjtcblxuICBAaWYgbm90KGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSkge1xuICAgICRsb2NhdGlvbjogJGxvY2F0aW9uIG9yIDE7XG4gICAgJHN1Yi1jb2x1bW5zOiAoKTtcbiAgICBAZm9yICRpIGZyb20gJGxvY2F0aW9uIHRvICgkbG9jYXRpb24gKyAkc3Bhbikge1xuICAgICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRpKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3ViLWNvbHVtbnM7XG59XG5cblxuLy8gU3VzeVxuLy8gLS0tLVxuLy8gRmluZCB0aGUgc3VtIG9mIGEgY29sdW1uLXNwYW4uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbiAgICAgOiBmYWxzZSxcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgICAgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICAgICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAkc3Bhbjogc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG5cbiAgQHJldHVybiBzdXN5LXN1bSgkc3BhbiwgJGd1dHRlcnMsICRzcHJlYWQpO1xufVxuIiwiLy8gRmxvYXQgQVBJXG4vLyA9PT09PT09PT1cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5AaW1wb3J0IFwiZmxvYXQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiZmxvYXQvc3BhblwiO1xuQGltcG9ydCBcImZsb2F0L2VuZFwiO1xuQGltcG9ydCBcImZsb2F0L2lzb2xhdGVcIjtcbiIsIi8vIFNoYXJlZCBBUElcbi8vID09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnRcIjtcblxuQGltcG9ydCBcInNoYXJlZC9pbnNwZWN0XCI7XG5AaW1wb3J0IFwic2hhcmVkL291dHB1dFwiO1xuQGltcG9ydCBcInNoYXJlZC9kaXJlY3Rpb25cIjtcbkBpbXBvcnQgXCJzaGFyZWQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInNoYXJlZC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzaGFyZWQvbWFyZ2luc1wiO1xuQGltcG9ydCBcInNoYXJlZC9wYWRkaW5nXCI7XG5cblxuXG4iLCIvLyBTdXN5IEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnQvc3VwcG9ydFwiO1xuQGltcG9ydCBcInN1cHBvcnQvcHJlZml4XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9yZW1cIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2NsZWFyZml4XCI7XG4iLCIvLyBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IFN1cHBvcnQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogZmFsc2UsXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kLW9wdGlvbnM6IGZhbHNlLFxuICAgIGJyZWFrcG9pbnQ6IHRydWUsXG4gICAgYm94LXNpemluZzogdHJ1ZSxcbiAgICByZW06IHRydWUsXG4gICksXG4pKTtcblxuXG4vLyBTdXN5IFN1cHBvcnQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlbmQgcHJvcGVydHktdmFsdWUgcGFpcnMgdG8gdGhlIHByb3BlciBzdXBwb3J0IG1vZHVsZXMuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1zdXBwb3J0KFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gIC8vIEJhY2tncm91bmQgU3VwcG9ydFxuICBAaWYgJHByb3AgPT0gYmFja2dyb3VuZC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWltYWdlKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtc2l6ZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLXNpemUoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1vcmlnaW4ge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1jbGlwIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtY2xpcCgkdmFsKTtcbiAgfVxuXG4gIC8vIEJveC1TaXppbmcgU3VwcG9ydFxuICBAZWxzZSBpZiAkcHJvcCA9PSBib3gtc2l6aW5nIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJveC1zaXppbmcoJHZhbCk7XG4gIH1cblxuICAvLyBSZW0gU3VwcG9ydFxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJHByb3AsICR2YWwpO1xuICB9XG59XG5cblxuLy8gU3VzeSBTdXBwb3J0IFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3Igc3VwcG9ydCBvZiBhIGZlYXR1cmUuXG4vLyAtICRmZWF0dXJlICAgICAgIDogPHN0cmluZz5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyBcInJlbVwiIG9yIFwiYm94LXNpemluZ1wiXG4vLyAtICRyZXF1aXJlbWVudHMgIDogPG1hcD5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyAodmFyaWFibGU6IHJlbS13aXRoLXB4LWZhbGxiYWNrLCBtaXhpbjogcmVtKVxuLy8gLSAkd2FybiAgICAgICAgICA6IDxib29sPlxuQGZ1bmN0aW9uIHN1c3ktc3VwcG9ydChcbiAgJGZlYXR1cmUsXG4gICRyZXF1aXJlbWVudHM6ICgpLFxuICAkd2FybjogdHJ1ZVxuKSB7XG4gICRfc3VwcG9ydDogc3VzeS1nZXQodXNlLWN1c3RvbSAkZmVhdHVyZSk7XG5cbiAgQGlmICRfc3VwcG9ydCB7XG4gICAgJF9mYWlsOiBmYWxzZTtcblxuICAgIEBlYWNoICRfdHlwZSwgJF9yZXEgaW4gJHJlcXVpcmVtZW50cyB7XG4gICAgICBAZWFjaCAkX2kgaW4gJF9yZXEge1xuICAgICAgICAkX3Bhc3M6IGNhbGwodW5xdW90ZShcIiN7JF90eXBlfS1leGlzdHNcIiksICRfaSk7XG5cbiAgICAgICAgQGlmIG5vdCgkX3Bhc3MpIHtcbiAgICAgICAgICAkX2ZhaWw6IHRydWU7XG4gICAgICAgICAgQGlmICR3YXJuIHtcbiAgICAgICAgICAgIEB3YXJuIFwiWW91IHJlcXVlc3RlZCBjdXN0b20gc3VwcG9ydCBvZiAjeyRmZWF0dXJlfSwgYnV0IHRoZSAjeyRfaX0gI3skX3R5cGV9IGlzIG5vdCBhdmFpbGFibGUuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zdXBwb3J0OiBpZigkX2ZhaWwsIGZhbHNlLCAkX3N1cHBvcnQpO1xuICB9XG5cbiAgQHJldHVybiAkX3N1cHBvcnQ7XG59XG4iLCIvLyBTdXN5IFByZWZpeFxuLy8gPT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBzaW1wbGUgcHJlZml4ZWQgcHJvcGVydGllcy5cbi8vIC0gJHByb3AgICAgICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICAgICAgOiA8Y3NzIHZhbHVlPlxuLy8gLSBbJHByZWZpeF0gIDogPGJyb3dzZXIgcHJlZml4IGxpc3Q+XG5AbWl4aW4gc3VzeS1wcmVmaXgoXG4gICRwcm9wLFxuICAkdmFsLFxuICAkcHJlZml4OiBvZmZpY2lhbFxuKSB7XG4gIEBlYWNoICRmaXggaW4gJHByZWZpeCB7XG4gICAgJGZpeDogaWYoJGZpeCA9PSBvZmZpY2lhbCBvciBub3QoJGZpeCksICRwcm9wLCAnLSN7JGZpeH0tI3skcHJvcH0nKTtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkZml4LCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gQmFja2dyb3VuZCBQcm9wZXJ0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIEltYWdlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWltYWdlPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLWltYWdlLCAobWl4aW46IGJhY2tncm91bmQtaW1hZ2UpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS4uLik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgU2l6ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1zaXplPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1zaXplKFxuICAkc2l6ZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtc2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoJHNpemUpO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBPcmlnaW5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLW9yaWdpbj5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtb3JpZ2luKFxuICAkb3JpZ2luXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1vcmlnaW4pKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1vcmlnaW4oJG9yaWdpbik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkb3JpZ2luO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBDbGlwXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtY2xpcD5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtY2xpcChcbiAgJGNsaXBcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLWNsaXApKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1jbGlwKCRjbGlwKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcDtcbiAgfVxufVxuIiwiLy8gQm94IFNpemluZ1xuLy8gPT09PT09PT09PVxuXG4vLyBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJG1vZGVsOiA8Ym94LXNpemluZz5cbkBtaXhpbiBzdXN5LWJveC1zaXppbmcoXG4gICRtb2RlbDogY29udGVudC1ib3hcbikge1xuICBAaWYgJG1vZGVsIHtcbiAgICBAaWYgc3VzeS1zdXBwb3J0KGJveC1zaXppbmcsIChtaXhpbjogYm94LXNpemluZyksICR3YXJuOiBmYWxzZSkge1xuICAgICAgQGluY2x1ZGUgYm94LXNpemluZygkbW9kZWwpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByZWZpeDogKG1veiwgd2Via2l0LCBvZmZpY2lhbCk7XG4gICAgICBAaW5jbHVkZSBzdXN5LXByZWZpeChib3gtc2l6aW5nLCAkbW9kZWwsICRwcmVmaXgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRGVidWdnaW5nXG4vLyA9PT09PT09PT1cblxuLy8gU3VzeSBJbnNwZWN0XG4vLyAtLS0tLS0tLS0tLS1cbi8vIE91dHB1dCBhcmd1bWVudHMgcGFzc2VkIHRvIGEgaW5zcGVjdC5cbi8vIC0gJG1peGluICA6IDxzdXN5IG1peGluPlxuLy8gLSAkaW5zcGVjICAgOiA8bWl4aW4gYXJndW1lbnRzPlxuXG5AbWl4aW4gc3VzeS1pbnNwZWN0KFxuICAkbWl4aW4sXG4gICRpbnNwZWN0XG4pIHtcbiAgJHNob3c6IGZhbHNlO1xuXG4gIEBlYWNoICRpdGVtIGluICRpbnNwZWN0IHtcbiAgICBAaWYgaW5kZXgoJGl0ZW0sIGluc3BlY3QpIHtcbiAgICAgICRzaG93OiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2hvdyBvciBzdXN5LWdldChkZWJ1ZyBpbnNwZWN0KSB7XG4gICAgLXN1c3ktI3skbWl4aW59OiBpbnNwZWN0KCRpbnNwZWN0KTtcbiAgfVxufVxuIiwiLy8gT3V0cHV0XG4vLyA9PT09PT1cblxuLy8gT3V0cHV0XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBDU1Mgd2l0aCBwcm9wZXIgYnJvd3NlciBzdXBwb3J0LlxuLy8gLSAkc3R5bGVzICA6IDxtYXAgb2YgY3NzIHByb3BlcnR5LXZhbHVlIHBhaXJzPlxuQG1peGluIG91dHB1dChcbiAgJHN0eWxlc1xuKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsIGluICRzdHlsZXMge1xuICAgIEBpbmNsdWRlIHN1c3ktc3VwcG9ydCgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIERpcmVjdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEZsb3cgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgZmxvdzogbHRyLFxuKSk7XG5cbi8vIEdldCBEaXJlY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIG9yICd0bycgZGlyZWN0aW9uIG9mIGEgbHRyIG9yIHJ0bCBmbG93LlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuLy8gLSBbJGtleV0gICA6IGZyb20gfCB0b1xuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGtleTogZnJvbVxuKSB7XG4gICRyZXR1cm46IGlmKCRmbG93ID09IHJ0bCwgKGZyb206IHJpZ2h0LCB0bzogbGVmdCksIChmcm9tOiBsZWZ0LCB0bzogcmlnaHQpKTtcbiAgQHJldHVybiBtYXAtZ2V0KCRyZXR1cm4sICRrZXkpO1xufVxuXG4vLyBUb1xuLy8gLS1cbi8vIFJldHVybiB0aGUgJ3RvJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gdG8oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgdG8pO1xufVxuXG4vLyBGcm9tXG4vLyAtLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gZnJvbShcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCBmcm9tKTtcbn1cbiIsIi8vIEdyaWQgQmFja2dyb3VuZCBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cbi8vIC0gU3ViLXBpeGVsIHJvdW5kaW5nIGNhbiBsZWFkIHRvIHNldmVyYWwgcGl4ZWxzIHZhcmlhdGlvbiBiZXR3ZWVuIGJyb3dzZXJzLlxuXG4vLyBHcmlkIEJhY2tncm91bmQgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRpbWFnZTogYmFja2dyb3VuZC1pbWFnZVxuLy8gLSAkc2l6ZTogYmFja2dyb3VuZC1zaXplXG4vLyAtICRjbGlwOiBiYWNrZ3JvdW5kLWNsaXBcbi8vIC0gWyRmbG93XTogbHRyIHwgcnRsXG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkLW91dHB1dCAoXG4gICRpbWFnZSxcbiAgJHNpemU6IG51bGwsXG4gICRjbGlwOiBudWxsLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlLFxuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemUsXG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRjbGlwLFxuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogZnJvbSgkZmxvdykgdG9wLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFNoYXJlZCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICAgICAgICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGNvbnRhaW5lci1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICAkb3V0cHV0OiAoXG4gICAgI3skcHJvcGVydHl9OiAkd2lkdGggb3IgMTAwJSxcbiAgICBtYXJnaW4tbGVmdDogbnRoKCRqdXN0aWZ5LCAxKSxcbiAgICBtYXJnaW4tcmlnaHQ6IG50aCgkanVzdGlmeSwgMiksXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gTWFyZ2lucyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIE1hcmdpbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gbWFyZ2luLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3skZnJvbX06ICRiZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFBhZGRpbmcgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBQYWRkaW5nIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gcGFkZGluZy1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgQ29udGFpbmVyXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBmbG9hdC1jb250YWluZXIoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICBAaW5jbHVkZSBzdXN5LWNsZWFyZml4O1xuICBAaW5jbHVkZSBjb250YWluZXItb3V0cHV0KCR3aWR0aCwgJGp1c3RpZnksICRwcm9wZXJ0eSk7XG59XG4iLCIvLyBGbG9hdCBTcGFuIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgU3BhbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICR3aWR0aCAgICAgICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvYXRdICAgICAgICAgICA6IGZyb20gfCB0b1xuLy8gLSBbJG1hcmdpbi1iZWZvcmVdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJG1hcmdpbi1hZnRlcl0gICAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYmVmb3JlXSAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYWZ0ZXJdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICAgICAgICAgICAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1zcGFuLW91dHB1dChcbiAgJHdpZHRoLFxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb20sXG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbCxcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsLFxuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGwsXG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbCxcbiAgJGZsb3cgICAgICAgICAgICAgOiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0byAgICAgOiB0bygkZmxvdyk7XG4gICRmcm9tICAgOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGg6ICR3aWR0aCxcbiAgICBmbG9hdDogaWYoJGZsb2F0ID09IHRvLCAkdG8sIG51bGwpIG9yIGlmKCRmbG9hdCA9PSBmcm9tLCAkZnJvbSwgbnVsbCksXG4gICAgbWFyZ2luLSN7JGZyb219OiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJHBhZGRpbmctYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgRW5kcyBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRW5kIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgbGFzdC1mbG93OiB0byxcbikpO1xuXG4vLyBGbG9hdCBMYXN0XG4vLyAtLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtbGFzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAkbGFzdC1mbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBsYXN0LWZsb3cpLFxuICAkbWFyZ2luOiAwXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiBpZigkbGFzdC1mbG93ID09IHRvLCAkdG8sIG51bGwpLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4sXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG4vLyBGbG9hdCBGaXJzdFxuLy8gLS0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1maXJzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0je2Zyb20oJGZsb3cpfTogMCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBJc29sYXRpb24gQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIElzb2xhdGUgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkcHVzaCAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gaXNvbGF0ZS1vdXRwdXQoXG4gICRwdXNoLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogJGZyb20sXG4gICAgbWFyZ2luLSN7JGZyb219OiAkcHVzaCxcbiAgICBtYXJnaW4tI3skdG99OiAtMTAwJSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTdXN5IFNldHRpbmdzXG4vLyA9PT09PT09PT09PT09XG5cbi8vIFN1c3kgTGFuZ3VhZ2UgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogZmx1aWQsXG4gIG91dHB1dDogZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogY2VudGVyLFxuICBndXR0ZXItcG9zaXRpb246IGFmdGVyLFxuICBnbG9iYWwtYm94LXNpemluZzogY29udGVudC1ib3gsXG4gIGRlYnVnOiAoXG4gICAgaW1hZ2U6IGhpZGUsXG4gICAgY29sb3I6IHJnYmEoIzY2ZiwgLjI1KSxcbiAgICBvdXRwdXQ6IGJhY2tncm91bmQsXG4gICAgdG9nZ2xlOiB0b3AgcmlnaHQsXG4gICksXG4pKTtcblxuXG4vLyBWYWxpZCBLZXl3b3JkIFZhbHVlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURTogRE9OVCdUIFRPVUNIXG4kc3VzeS1rZXl3b3JkczogKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IHN0YXRpYyBmbHVpZCxcbiAgb3V0cHV0OiBpc29sYXRlIGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGxlZnQgY2VudGVyIHJpZ2h0LFxuICBmbG93OiBsdHIgcnRsLFxuICBndXR0ZXItcG9zaXRpb246IGJlZm9yZSBhZnRlciBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYyxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveCBjb250ZW50LWJveCxcbiAgc3BhbjogZnVsbCxcbiAgZWRnZTogZmlyc3QgYWxwaGEgbGFzdCBvbWVnYSBmdWxsLFxuICBzcHJlYWQ6IG5hcnJvdyB3aWRlIHdpZGVyLFxuICBndXR0ZXItb3ZlcnJpZGU6IG5vLWd1dHRlcnMgbm8tZ3V0dGVyLFxuICByb2xlOiBuZXN0LFxuICBjbGVhcjogYnJlYWsgbm9icmVhayxcbiAgZGVidWcgaW1hZ2U6IHNob3cgaGlkZSBzaG93LWNvbHVtbnMgc2hvdy1iYXNlbGluZSxcbiAgZGVidWcgb3V0cHV0OiBiYWNrZ3JvdW5kIG92ZXJsYXksXG4pO1xuXG5cbi8vIFBhcnNlIFN1c3kgS2V5d29yZHMgYW5kIE1hcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zZXR0aW5ncyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBzdHJpbmcge1xuICAgICAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHN1c3kta2V5d29yZHMge1xuICAgICAgICAgIEBpZiBpbmRleCgkdmFsdWUsICRpdGVtKSB7XG4gICAgICAgICAgICAkX2tleS12YWx1ZTogYXBwZW5kKCRrZXksICRpdGVtKTtcbiAgICAgICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLXNldCgkX3JldHVybiwgJF9rZXktdmFsdWUuLi4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgLy8gbWFwc1xuICAgICAgfSBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBtYXAge1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBDb2x1bW5zICYgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1sYXlvdXQoXG4gICRzaG9ydFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcbiAgJF9jb2x1bW5zOiAoKTtcbiAgJF9ndXR0ZXJzOiBudWxsO1xuXG4gIEBpZiBub3QodW5pdGxlc3MobnRoKG50aCgkc2hvcnQsIDEpLCAxKSkpIHtcbiAgICAkX2d1dHRlcnM6IG50aCgkc2hvcnQsIDEpO1xuICB9IEBlbHNlIHtcbiAgICAkX2NvbHVtbnM6IChjb2x1bW5zOiBudGgoJHNob3J0LCAxKSk7XG4gICAgJF9ndXR0ZXJzOiBpZihsZW5ndGgoJHNob3J0KSA+IDEsIG50aCgkc2hvcnQsIDIpLCAkX2d1dHRlcnMpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJF9ndXR0ZXJzKSA9PSBsaXN0IGFuZCBsZW5ndGgoJF9ndXR0ZXJzKSA+IDAge1xuICAgICRfZ3V0dGVyczogKFxuICAgICAgZ3V0dGVyczogbnRoKCRfZ3V0dGVycywgMikgLyBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICAgIGNvbHVtbi13aWR0aDogbnRoKCRfZ3V0dGVycywgMSksXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9ndXR0ZXJzOiBpZigkX2d1dHRlcnMsIChndXR0ZXJzOiAkX2d1dHRlcnMpLCAoKSk7XG4gIH1cblxuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2NvbHVtbnMpO1xuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2d1dHRlcnMpO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3JpZC9Db250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ncmlkKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46IHBhcnNlLXNldHRpbmdzKCRzaG9ydCk7XG4gICRfbGF5b3V0OiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIG51bWJlciBvciBsaXN0XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIG9yIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qge1xuICAgICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCBvciB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAgICRfbGF5b3V0OiBhcHBlbmQoJF9sYXlvdXQsICRpdGVtKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNvbnRhaW5lcjogJGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfbGF5b3V0OiBpZihsZW5ndGgoJF9sYXlvdXQpID4gMCwgcGFyc2UtbGF5b3V0KCRfbGF5b3V0KSwgJF9sYXlvdXQpO1xuICB9XG5cbiAgQHJldHVybiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfbGF5b3V0KTtcbn1cblxuXG4vLyBQYXJzZSBTcGFuXG4vLyAtLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc3BhbihcbiAgJHNob3J0LFxuICAka2V5OiBzcGFuXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICAkX2F0OiBpbmRleCgkc2hvcnQsIGF0KTtcblxuICAgIEBpZiAkX2F0IHtcbiAgICAgICRfbG9jaTogJF9hdCArIDE7XG4gICAgICAkX2xvY2F0aW9uOiBudGgoJHNob3J0LCAkX2xvY2kpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGxvY2F0aW9uOiAkX2xvY2F0aW9uKSk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2F0LCBudWxsKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfbG9jaSwgbnVsbCk7XG4gICAgfVxuXG4gICAgJF9pOiAxO1xuICAgICRfc3BhbjogKCk7XG5cbiAgICBAd2hpbGUgJF9pIDw9IGxlbmd0aCgkc2hvcnQpIHtcbiAgICAgICRfdGhpczogbnRoKCRzaG9ydCwgJF9pKTtcblxuICAgICAgQGlmIHR5cGUtb2YoJF90aGlzKSA9PSBudW1iZXIge1xuICAgICAgICAkX3NwYW46IGFwcGVuZCgkX3NwYW4sICRfdGhpcyk7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICB9IEBlbHNlIGlmICRfdGhpcyA9PSBvZiB7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICAgICRfaTogbGVuZ3RoKCRzaG9ydCkgKyAxO1xuICAgICAgfVxuXG4gICAgICAkX2k6ICRfaSArIDE7XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkX3NwYW4pID4gMCB7XG4gICAgICAkX3NwYW46IGlmKGxlbmd0aCgkX3NwYW4pID09IDEsIG50aCgkX3NwYW4sIDEpLCAkX3NwYW4pO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRrZXk6ICRfc3BhbikpO1xuICAgIH1cblxuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIHBhcnNlLWdyaWQoJHNob3J0KSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ndXR0ZXJzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9ndXR0ZXJzOiBwYXJzZS1zcGFuKCRzaG9ydCwgZ3V0dGVyLW92ZXJyaWRlKTtcbiAgJF9zcGFuOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRfZ3V0dGVycyk7XG5cbiAgQGlmICRfc3BhbiBhbmQgbm90KG1hcC1nZXQoJF9ndXR0ZXJzLCBjb2x1bW5zKSkge1xuICAgICRfY29udGV4dDogKCk7XG4gICAgJF9uZXc6ICgpO1xuXG4gICAgQGVhY2ggJGl0ZW0gaW4gJF9zcGFuIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICRfY29udGV4dDogYXBwZW5kKCRfY29udGV4dCwgJGl0ZW0pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRfbmV3OiBhcHBlbmQoJF9uZXcsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2NvbnRleHQ6IHBhcnNlLWdyaWQoJF9jb250ZXh0KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAwLCBudWxsLCAkX25ldyk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMSwgbnRoKCRfbmV3LCAxKSwgJF9uZXcpO1xuICAgICRfbmV3OiAoZ3V0dGVyLW92ZXJyaWRlOiBpZigkX25ldyAhPSAkX3NwYW4sICRfbmV3LCAkX3NwYW4pKTtcblxuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9uZXcpO1xuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9jb250ZXh0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuIiwiLy8gVmFsaWRhdGlvblxuLy8gPT09PT09PT09PVxuXG5cbi8vIFZhbGlkYXRlIENvbHVtbiBNYXRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbi1tYXRoKFxuICAkbWF0aCxcbiAgJGNvbHVtbi13aWR0aFxuKSB7XG4gIEBpZiAkbWF0aCA9PSBzdGF0aWMgYW5kIG5vdCgkY29sdW1uLXdpZHRoKSB7XG4gICAgQGVycm9yICdTdGF0aWMgbWF0aCByZXF1aXJlcyBhIHZhbGlkIGNvbHVtbi13aWR0aCBzZXR0aW5nLic7XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4td2lkdGg7XG59XG4iLCIvLyBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gU2V0IGEgbmV3IGxheW91dCB1c2luZyBhIHNob3J0aGFuZFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIGxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGF5b3V0LCAkaW5zcGVjdCk7XG59XG5cblxuLy8gVXNlIEdyaWRcbi8vIC0tLS0tLS0tXG4vLyBVc2UgYW4gYXJiaXRyYXJ5IGxheW91dCBmb3IgYSBzZWN0aW9uIG9mIGNvZGVcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiB3aXRoLWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRvbGQgICAgICA6ICRzdXN5O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHdpdGgtbGF5b3V0LCAkaW5zcGVjdCk7XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3k6ICRvbGQgIWdsb2JhbDtcbn1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIGEgcGFyc2VkIGxheW91dCBtYXAgYmFzZWQgb24gc2hvcnRoYW5kIHN5bnRheFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gbGF5b3V0KFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbn1cblxuXG4vLyBHZXQgTGF5b3V0XG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuZXcgbGF5b3V0IGJhc2VkIG9uIGN1cnJlbnQgYW5kIGdpdmVuIHNldHRpbmdzXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AZnVuY3Rpb24gX2dldC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkbGF5b3V0OiBsYXlvdXQoJGxheW91dCk7XG4gIEByZXR1cm4gaWYoJGNsZWFuLCAkbGF5b3V0LCBfc3VzeS1kZWVwLW1lcmdlKCRzdXN5LCAkbGF5b3V0KSk7XG59XG4iLCIvLyBTdXN5IEJveCBTaXppbmdcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgYm94IG1vZGVsIGdsb2JhbGx5IG9uIGFsbCBlbGVtZW50cy5cbi8vIC0gWyRib3hdOiBib3JkZXItYm94IHwgY29udGVudC1ib3hcbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gZ2xvYmFsLWJveC1zaXppbmcoXG4gICRib3g6IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSxcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3Q6ICRib3g7XG5cbiAgQGlmICRpbmhlcml0IHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgaHRtbCB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gICAgICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG4gICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdsb2JhbC1ib3gtc2l6aW5nLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHVwZGF0ZS1ib3gtbW9kZWwoJGJveCk7XG59XG5cbi8vIEJvcmRlciBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gQSBsZWdhY3kgc2hvcnRjdXQuLi5cbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gYm9yZGVyLWJveC1zaXppbmcoXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGdsb2JhbC1ib3gtc2l6aW5nKGJvcmRlci1ib3gsICRpbmhlcml0KTtcbn1cblxuLy8gVXBkYXRlIEJveCBNb2RlbFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVXBkYXRlcyBnbG9iYWwgYm94IG1vZGVsIHNldHRpbmdcbkBtaXhpbiB1cGRhdGUtYm94LW1vZGVsKFxuICAkYm94XG4pIHtcbiAgQGlmICRib3ggIT0gc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpIHtcbiAgQGluY2x1ZGUgc3VzeS1zZXQoZ2xvYmFsLWJveC1zaXppbmcsICRib3gpO1xuICB9XG59XG4iLCIvLyBDb250ZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gTmVzdGVkIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgZ3JpZCBmb3IgbmVzdGVkIGNvbnRleHQuXG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGNvbnRleHQgICAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJHNwYW4gICAgICAgOiBzdXN5LWdldChzcGFuLCAkY29udGV4dCk7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRjb250ZXh0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbn1cblxuLy8gTmVzdGVkIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBVc2UgYSBzdWJzZXQgZ3JpZCBmb3IgYSBuZXN0ZWQgY29udGV4dFxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG4vLyAtIEBjb250ZW50ICAgOiA8Y29udGVudD5cbkBtaXhpbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkb2xkICAgICAgOiBzdXN5LWdldChjb2x1bW5zKTtcbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogbmVzdGVkKCRjb250ZXh0KSkpICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KG5lc3RlZCwgJGluc3BlY3QpO1xuICBAY29udGVudDtcblxuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiAkb2xkKSkgIWdsb2JhbDtcbn1cbiIsIi8vIEJhY2tncm91bmQgR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiBmYWxzZTtcblxuXG4vLyBTaG93IEdyaWQvc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFNob3cgZ3JpZCBvbiBhbnkgZWxlbWVudCB1c2luZyBlaXRoZXIgYmFja2dyb3VuZCBvciBvdmVybGF5LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBzaG93LWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0OiAkZ3JpZDtcbiAgJF9vdXRwdXQ6IGRlYnVnLWdldChvdXRwdXQsICRncmlkKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc2hvdy1ncmlkLCAkaW5zcGVjdCk7XG4gIEBpZiAkX291dHB1dCA9PSBvdmVybGF5IGFuZCBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpICE9IGhpZGUge1xuICAgIEBpbmNsdWRlIG92ZXJsYXktZ3JpZCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gIH1cbn1cblxuQG1peGluIHNob3ctZ3JpZHMoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkZ3JpZCk7XG59XG5cbi8vIEJhY2tncm91bmQgR3JpZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTaG93IGEgZ3JpZCBiYWNrZ3JvdW5kIG9uIGFueSBlbGVtZW50LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRncmlkO1xuICAkX291dHB1dCAgOiBnZXQtYmFja2dyb3VuZCgkZ3JpZCk7XG5cbiAgQGlmIGxlbmd0aCgkX291dHB1dCkgPiAwIHtcbiAgICAkX2Zsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKTtcblxuICAgICRfaW1hZ2U6ICgpO1xuICAgIEBlYWNoICRuYW1lLCAkbGF5ZXIgaW4gbWFwLWdldCgkX291dHB1dCwgaW1hZ2UpIHtcbiAgICAgICRfZGlyZWN0aW9uOiBpZigkbmFtZSA9PSBiYXNlbGluZSwgdG8gYm90dG9tLCB0byB0bygkX2Zsb3cpKTtcbiAgICAgICRfaW1hZ2U6IGFwcGVuZCgkX2ltYWdlLCBsaW5lYXItZ3JhZGllbnQoJF9kaXJlY3Rpb24sICRsYXllciksIGNvbW1hKTtcbiAgICB9XG4gICAgJF9vdXRwdXQ6IG1hcC1tZXJnZSgkX291dHB1dCwgKGltYWdlOiAkX2ltYWdlKSk7XG5cbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmFja2dyb3VuZC1ncmlkLCAkaW5zcGVjdCk7XG4gIH1cbn1cblxuXG4vLyBPdmVybGF5IEdyaWRcbi8vIC0tLS0tLS0tLS0tLVxuLy8gR2VuZXJhdGUgYW4gaWNvbiB0byB0cmlnZ2VyIGdyaWQtb3ZlcmxheXMgb24gYW55IGdpdmVuIGVsZW1lbnRzLlxuLy8gJGdyaWRzLi4uICA6IDxzZWxlY3Rvcj4gWzxzZXR0aW5ncz5dIFssIDxzZWxlY3Rvcj5dKlxuQG1peGluIG92ZXJsYXktZ3JpZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpZiBub3QoJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzKSB7XG4gICAgQGF0LXJvb3QgaGVhZCB7IEBpbmNsdWRlIG92ZXJsYXktaGVhZCgkZ3JpZCk7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmJlZm9yZSB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlcjsgfVxuICAgIEBhdC1yb290IGhlYWQ6aG92ZXIgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXItaG92ZXI7IH1cbiAgICAkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIGhlYWQ6aG92ZXIgfiAmLFxuICBoZWFkOmhvdmVyIH4gYm9keSAmIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1vdmVybGF5LWJhc2U7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXIge1xuICBjb250ZW50OiBcInx8fFwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGZvbnQ6IHtcbiAgICBmYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgc2l6ZTogMTZweDtcbiAgICB3ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyIEhvdmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjUpO1xuICBjb2xvcjogcmVkO1xufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IEhlYWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDxoZWFkPiBzdHlsZXMgdG8gY3JlYXRlIGdyaWQgb3ZlcmxheSB0b2dnbGVcbkBtaXhpbiBvdmVybGF5LWhlYWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkX3RvZ2dsZTogZGVidWctZ2V0KHRvZ2dsZSwgJGdyaWQpO1xuICAkX2hvcno6IG51bGw7XG4gICRfdmVydDogbnVsbDtcblxuICBAZWFjaCAkc2lkZSBpbiAkX3RvZ2dsZSB7XG4gICAgJF9ob3J6OiBpZigkc2lkZSA9PSBsZWZ0IG9yICRzaWRlID09IHJpZ2h0LCAkc2lkZSwgJF9ob3J6KTtcbiAgICAkX3ZlcnQ6IGlmKCRzaWRlID09IHRvcCBvciAkc2lkZSA9PSBib3R0b20sICRzaWRlLCAkX3ZlcnQpO1xuICB9XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgI3skX2hvcnp9OiAxMHB4O1xuICAjeyRfdmVydH06IDEwcHg7XG4gIHotaW5kZXg6IDk5OTtcbiAgY29sb3I6ICMzMzM7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC4yNSk7XG59XG5cblxuLy8gW1ByaXZhdGVdIEdyaWQgT3ZlcmxheSBCYXNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJhc2Ugc3R5bGVzIGZvciBnZW5lcmF0aW5nIGEgZ3JpZCBvdmVybGF5XG5AbWl4aW4gZ3JpZC1vdmVybGF5LWJhc2UoKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBjb250ZW50OiBcIiBcIjtcbiAgei1pbmRleDogOTk4O1xufVxuXG5cbi8vIEdldCBTeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1zeW0oXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgICAgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfZ3V0dGVycyAgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRncmlkKTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkZ3JpZCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRncmlkKTtcblxuICAkX2NvbG9yICAgICAgICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX3RyYW5zICAgICAgICAgOiB0cmFuc3BhcmVudDtcbiAgJF9saWdodCAgICAgICAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuXG4gICRfZW5kICAgICAgICAgICA6IDEgKyAkX2d1dHRlcnM7XG4gICRfYWZ0ZXIgICAgICAgICA6IHBlcmNlbnRhZ2UoMS8kX2VuZCk7XG4gICRfc3RvcHMgICAgICAgICA6ICgpO1xuICAkX3NpemUgICAgICAgICAgOiBzcGFuKDEgJGdyaWQgd2lkZSk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQ7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3NwbGl0OiAkX2d1dHRlcnMvMjtcbiAgICAkX2JlZm9yZTogcGVyY2VudGFnZSgkX3NwbGl0LyRfZW5kKTtcbiAgICAkX2FmdGVyOiBwZXJjZW50YWdlKCgxICsgJF9zcGxpdCkvJF9lbmQpO1xuICAgICRfc3RvcHM6ICRfdHJhbnMgJF9iZWZvcmUsICRfY29sb3IgJF9iZWZvcmUsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfVxuXG4gIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAkX3NpemU6IHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpICogJF9lbmQ7XG4gIH1cblxuICAkX291dHB1dDogKFxuICAgIGltYWdlOiAoY29sdW1uczogJF9zdG9wcyksXG4gICAgc2l6ZTogJF9zaXplLFxuICApO1xuXG4gIEByZXR1cm4gJF9vdXRwdXQ7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBJbnNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0taW5zaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIFNwbGl0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tc3BsaXQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkc3RhcnQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcblxuICAgICRfZW5kOiAkc3RhcnQgKyBzcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkX2VuZCwgY29tbWEpO1xuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBPdXRzaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1vdXRzaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3RyYW5zICAgOiB0cmFuc3BhcmVudDtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRndXR0ZXI6IGdldC1zcGFuLXdpZHRoKGZpcnN0ICRsb2NhdGlvbiAkZ3JpZCk7XG5cbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcblxuICAgICAgJGd1dHRlcjogJF9saWdodCAkZ3V0dGVyLCAkX3RyYW5zICRndXR0ZXIsICRfdHJhbnMgJF9lbmQ7XG4gICAgICAkdGhpcy1zdG9wOiBqb2luKCR0aGlzLXN0b3AsICRndXR0ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLWFzeW0oXG4gICRncmlkXG4pIHtcbiAgJF9zdG9wczogKCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLWluc2lkZSgkZ3JpZCk7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1zcGxpdCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLW91dHNpZGUoJGdyaWQpO1xuICB9XG5cbiAgQHJldHVybiAoaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSk7XG59XG5cblxuLy8gR2V0IEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfc2hvdyAgICA6IHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCk7XG4gICRfcmV0dXJuICA6ICgpO1xuXG4gIEBpZiAkX3Nob3cgYW5kICRfc2hvdyAhPSAnaGlkZScge1xuICAgICRfY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgJF9zeW06IGlzLXN5bW1ldHJpY2FsKCRfY29sdW1ucyk7XG4gICAgICAkX3JldHVybjogaWYoJF9zeW0sIGdldC1iYWNrZ3JvdW5kLXN5bSgkZ3JpZCksIGdldC1iYWNrZ3JvdW5kLWFzeW0oJGdyaWQpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBjb250ZW50LWJveCkpO1xuICAgIH1cblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctY29sdW1ucydcbiAgICAgIGFuZCBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKGJhc2UtbGluZS1oZWlnaHQpXG4gICAgICBhbmQgdHlwZS1vZigkYmFzZS1saW5lLWhlaWdodCkgPT0gJ251bWJlcidcbiAgICAgIGFuZCBub3QgdW5pdGxlc3MoJGJhc2UtbGluZS1oZWlnaHQpIHtcbiAgICAgICRfY29sb3I6IHZhcmlhYmxlLWV4aXN0cygnZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yJyk7XG4gICAgICAkX2NvbG9yOiBpZigkX2NvbG9yLCAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yLCAjMDAwKTtcblxuICAgICAgJF9pbWFnZTogbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpO1xuICAgICAgJF9zaXplOiBtYXAtZ2V0KCRfcmV0dXJuLCBzaXplKTtcbiAgICAgICRfYmFzZWxpbmU6IChiYXNlbGluZTogKCRfY29sb3IgMXB4LCB0cmFuc3BhcmVudCAxcHgpKTtcbiAgICAgICRfYmFzZWxpbmUtc2l6ZTogMTAwJSAkYmFzZS1saW5lLWhlaWdodDtcblxuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKFxuICAgICAgICBpbWFnZTogaWYoJF9pbWFnZSwgbWFwLW1lcmdlKCRfaW1hZ2UsICRfYmFzZWxpbmUpLCAkX2Jhc2VsaW5lKSxcbiAgICAgICAgc2l6ZTogaWYoJF9zaXplLCAoJF9zaXplLCAkX2Jhc2VsaW5lLXNpemUpLCAkX2Jhc2VsaW5lLXNpemUpLFxuICAgICAgKSk7XG5cbiAgICAgIEBpZiAkX3Nob3cgPT0gJ3Nob3cnIHtcbiAgICAgICAgJF9jbGlwOiBtYXAtZ2V0KCRfcmV0dXJuLCBjbGlwKTtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGpvaW4oJF9jbGlwLCBib3JkZXItYm94LCBjb21tYSkpKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRfc2hvdyA9PSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgQHdhcm4gJ1BsZWFzZSBwcm92aWRlIGEgJGJhc2UtbGluZS1oZWlnaHQgd2l0aCB0aGUgZGVzaXJlZCBoZWlnaHQgYW5kIHVuaXRzJztcbiAgICB9XG4gIH1cblxuICBAaWYgbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIEdldCBEZWJ1Z1xuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgZGVidWcgc2V0dGluZ1xuLy8gLSAka2V5OiA8c2V0dGluZz5cbkBmdW5jdGlvbiBkZWJ1Zy1nZXQoXG4gICRrZXksXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRrZXk6IGpvaW4oZGVidWcsICRrZXksIHNwYWNlKTtcbiAgQHJldHVybiBzdXN5LWdldCgka2V5LCAkZ3JpZCk7XG59XG4iLCIvLyBDb250YWluZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgY29udGFpbmVyIGVsZW1lbnRcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgICAgOiAkbGF5b3V0O1xuICAkbGF5b3V0ICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG5cbiAgJF93aWR0aCAgICAgOiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xuICAkX2p1c3RpZnkgICA6IHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihzdXN5LWdldChjb250YWluZXItcG9zaXRpb24sICRsYXlvdXQpKTtcbiAgJF9wcm9wZXJ0eSAgOiBpZihzdXN5LWdldChtYXRoLCAkbGF5b3V0KSA9PSBzdGF0aWMsIHdpZHRoLCBtYXgtd2lkdGgpO1xuXG4gICRfYm94ICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJGxheW91dCk7XG5cbiAgQGlmICRfYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRfYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoY29udGFpbmVyLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGZsb2F0LWNvbnRhaW5lcigkX3dpZHRoLCAkX2p1c3RpZnksICRfcHJvcGVydHkpO1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGxheW91dCk7XG59XG5cbi8vIENvbnRhaW5lciBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICBAcmV0dXJuIGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG59XG5cbi8vIEdldCBDb250YWluZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSB0aGUgY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XTogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1jb250YWluZXItd2lkdGgoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dCAgICAgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF93aWR0aCAgICAgICAgIDogc3VzeS1nZXQoY29udGFpbmVyLCAkbGF5b3V0KTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkbGF5b3V0KTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGxheW91dCk7XG5cbiAgQGlmIG5vdCgkX3dpZHRoKSBvciAkX3dpZHRoID09IGF1dG8ge1xuICAgIEBpZiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSB7XG4gICAgICAkX2NvbHVtbnMgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRsYXlvdXQpO1xuICAgICAgJF9ndXR0ZXJzICAgOiBzdXN5LWdldChndXR0ZXJzLCAkbGF5b3V0KTtcbiAgICAgICRfc3ByZWFkICAgIDogaWYoaXMtc3BsaXQoJGxheW91dCksIHdpZGUsIG5hcnJvdyk7XG4gICAgICAkX3dpZHRoICAgICA6IHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkgKiAkX2NvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3dpZHRoO1xufVxuXG4vLyBQYXJzZSBDb250YWluZXIgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyc2UgdGhlICRjb250YWluZXItcG9zaXRpb24gaW50byBtYXJnaW4gdmFsdWVzLlxuLy8gLSBbJGp1c3RpZnldICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCA8bGVuZ3RoPiBbPGxlbmd0aD5dXG5AZnVuY3Rpb24gcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKFxuICAkanVzdGlmeTogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgY29udGFpbmVyLXBvc2l0aW9uKVxuKSB7XG4gICRfcmV0dXJuOiBpZigkanVzdGlmeSA9PSBsZWZ0LCAwLCBhdXRvKSBpZigkanVzdGlmeSA9PSByaWdodCwgMCwgYXV0byk7XG5cbiAgQGlmIG5vdChpbmRleChsZWZ0IHJpZ2h0IGNlbnRlciwgJGp1c3RpZnkpKSB7XG4gICAgJF9yZXR1cm46IG50aCgkanVzdGlmeSwgMSk7XG4gICAgJF9yZXR1cm46ICRfcmV0dXJuIGlmKGxlbmd0aCgkanVzdGlmeSkgPiAxLCBudGgoJGp1c3RpZnksIDIpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU3BhbiBTeW50YXhcbi8vID09PT09PT09PT09XG5cbi8vIFNwYW4gW21peGluXVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBzcGFubmluZyBlbGVtZW50IHVzaW5nIHNob3J0aGFuZCBzeW50YXguXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbjogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRvdXRwdXQ6IHNwYW4tbWF0aCgkc3Bhbik7XG4gICRuZXN0aW5nOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjbGVhcjogc3VzeS1nZXQoY2xlYXIsICRzcGFuKTtcblxuICAkYm94OiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRjb250ZW50LWJveDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuICAkYm94OiAkYm94IG9yIGlmKGlzLWluc2lkZSgkc3BhbikgYW5kICRjb250ZW50LWJveCwgYm9yZGVyLWJveCwgbnVsbCk7XG5cbiAgQGlmICRjbGVhciA9PSBicmVhayB7XG4gICAgQGluY2x1ZGUgYnJlYWs7XG4gIH0gQGVsc2UgaWYgJGNsZWFyID09IG5vYnJlYWsge1xuICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3BhbiwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTtcbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgQGlmIHZhbGlkLWNvbHVtbnMoJG5lc3RpbmcsIHNpbGVudCkge1xuICAgIEBpbmNsdWRlIG5lc3RlZCgkc3BhbikgeyBAY29udGVudDsgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTcGFuIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIHNwYW4uXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQGZ1bmN0aW9uIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgQHJldHVybiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG59XG5cbi8vIFNwYW4gTWF0aFxuLy8gLS0tLS0tLS0tXG4vLyBHZXQgYWxsIHRoZSBzcGFuIHJlc3VsdHMuXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIHNwYW4tbWF0aChcbiAgJHNwYW5cbikge1xuICAkbmVzdCAgICAgICAgICAgICA6IGlmKHN1c3ktZ2V0KHJvbGUsICRzcGFuKSA9PSBuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRzcGxpdC1uZXN0ICAgICAgIDogaWYoaXMtc3BsaXQoJHNwYW4pIGFuZCAkbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZWRnZSAgICAgICAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgICAgICAgOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbTtcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsO1xuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGw7XG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbDtcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aWR0aHNcbiAgJHNwcmVhZDogaW5kZXgobWFwLXZhbHVlcygkc3BhbiksIHNwcmVhZCk7XG4gICRzcGFuOiBpZigkc3BsaXQtbmVzdCBhbmQgbm90KCRzcHJlYWQpLCBtYXAtbWVyZ2UoJHNwYW4sIChzcHJlYWQ6IHdpZGUpKSwgJHNwYW4pO1xuICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbiAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAvLyBhcHBseSBndXR0ZXJzXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaWYgbm90KHN1c3ktZ2V0KHJvbGUsICRzcGFuKSkge1xuICAgICAgJHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBub3QoJHNwbGl0LW5lc3QpIHtcbiAgICAgICRtYXJnaW4tYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJG1hcmdpbi1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNwZWNpYWwgbWFyZ2luIGhhbmRsaW5nXG4gIEBpZiBzdXN5LWdldChvdXRwdXQsICRzcGFuKSA9PSBpc29sYXRlIGFuZCAkbG9jYXRpb24ge1xuICAgICRtYXJnaW4tYmVmb3JlOiBnZXQtaXNvbGF0aW9uKCRzcGFuKTtcbiAgICAkbWFyZ2luLWFmdGVyOiAtMTAwJTtcbiAgfSBAZWxzZSBpZiAkZWRnZSB7XG4gICAgJGlzLXNwbGl0OiBpcy1zcGxpdCgkc3Bhbik7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG5cbiAgICBAaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkZmxvYXQ6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJHNwYW4pO1xuICAgIH1cblxuICAgIEBpZiBub3QoJGlzLXNwbGl0KSB7XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gZmlyc3QgYW5kICRwb3MgPT0gYmVmb3JlKSB7XG4gICAgICAgICRtYXJnaW4tYmVmb3JlOiAwO1xuICAgICAgfVxuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGxhc3QgYW5kICRwb3MgPT0gYWZ0ZXIpIHtcbiAgICAgICAgJG1hcmdpbi1hZnRlcjogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gKFxuICAgIHdpZHRoICAgICAgICAgICA6ICR3aWR0aCxcbiAgICBmbG9hdCAgICAgICAgICAgOiAkZmxvYXQsXG4gICAgbWFyZ2luLWJlZm9yZSAgIDogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLWFmdGVyICAgIDogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLWJlZm9yZSAgOiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy1hZnRlciAgIDogJHBhZGRpbmctYWZ0ZXIsXG4gICAgZmxvdyAgICAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xufVxuXG4vLyBHZXQgU3BhbiBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBzcGFuIHdpZHRoLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBnZXQtc3Bhbi13aWR0aChcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcblxuICAkbiAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRsb2NhdGlvbiA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycywgJHNwYW4pO1xuICAkc3ByZWFkICAgOiBzdXN5LWdldChzcHJlYWQsICRzcGFuKTtcblxuICAkY29udGV4dCAgOiBudWxsO1xuICAkc3Bhbi1zdW0gOiBudWxsO1xuICAkd2lkdGggICAgOiBudWxsO1xuXG4gIEBpZiAkbiA9PSAnZnVsbCcge1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuICAgICRyb2xlOiBzdXN5LWdldChyb2xlLCAkc3Bhbik7XG4gICAgJG46IGlmKCRwb3MgPT0gc3BsaXQgYW5kICRyb2xlICE9IG5lc3QsIHN1c3ktY291bnQoJGNvbHVtbnMpLCAxMDAlKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRuKSAhPSBudW1iZXIge1xuICAgIEB3YXJuIFwiKCN7dHlwZS1vZigkbil9KSAjeyRufSBpcyBub3QgYSB2YWxpZCBzcGFuLlwiO1xuICB9IEBlbHNlIGlmIHVuaXRsZXNzKCRuKSB7XG4gICAgJGNvbnRleHQ6IHN1c3ktc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgaWYoaXMtc3BsaXQoJHNwYW4pLCB3aWRlLCBuYXJyb3cpKTtcbiAgICAkc3ByZWFkOiBpZihpcy1pbnNpZGUoJHNwYW4pLCAkc3ByZWFkIG9yIHdpZGUsICRzcHJlYWQpO1xuICAgICRzcGFuLXN1bTogc3VzeSgkbiwgJGxvY2F0aW9uLCAkY29sdW1ucywgJGd1dHRlcnMsICRzcHJlYWQpO1xuXG4gICAgJF9tYXRoOiBzdXN5LWdldChtYXRoLCAkc3Bhbik7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJHNwYW4pO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICR3aWR0aDogJHNwYW4tc3VtICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJHNwYW4tc3VtIC8gJGNvbnRleHQpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHdpZHRoOiAkbjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuIiwiLy8gR3V0dGVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIEd1dHRlcnNcbi8vIC0tLS0tLS1cbi8vIFNldCBndXR0ZXJzIG9uIGFuIGVsZW1lbnQuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVycyA6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX291dHB1dDogKFxuICAgIGJlZm9yZTogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSksXG4gICAgYWZ0ZXI6IG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlciksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChndXR0ZXJzLCAkaW5zcGVjdCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH1cbn1cblxuQG1peGluIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZ3V0dGVycygkc3Bhbik7XG59XG5cblxuLy8gR3V0dGVyXG4vLyAtLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBndXR0ZXIuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRzcGFuOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX2d1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSBvciBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuXG5AZnVuY3Rpb24gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQHJldHVybiBndXR0ZXIoJHNwYW4pO1xufVxuXG5cbi8vIEdldCBHdXR0ZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBndXR0ZXIgd2lkdGguXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXItd2lkdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVycyA6IHN1c3ktZ2V0KGd1dHRlcnMsICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgIDogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkY29udGV4dCk7XG5cbiAgQGlmICRfZ3V0dGVycyBhbmQgKCRfZ3V0dGVycyA+IDApIGFuZCBub3QoJF9ndXR0ZXIpIHtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkY29udGV4dCk7XG4gICAgJF9tYXRoOiBndXR0ZXItbWF0aCgkY29udGV4dCk7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJF9ndXR0ZXI6ICRfZ3V0dGVycyAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuICAgICAgJF9zcHJlYWQgIDogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCB3aWRlLCBzdXN5LWdldChzcHJlYWQsICRjb250ZXh0KSk7XG4gICAgICAkX2d1dHRlciAgOiBwZXJjZW50YWdlKCRfZ3V0dGVycyAvIHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkpO1xuICAgIH1cbiAgfVxuXG4gICRfZ3V0dGVyOiBpZigkX2d1dHRlciA9PSAnbm8tZ3V0dGVycycgb3IgJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcicsIG51bGwsICRfZ3V0dGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVyO1xufVxuXG5cbi8vIEdldCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGJlZm9yZSBhbmQgYWZ0ZXIgZ3V0dGVyIHZhbHVlcy5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlcnMoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICAgICAgICAgICAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlci1wb3NpdGlvbiAgIDogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICAgICAgICAgICAgOiBnZXQtZ3V0dGVyLXdpZHRoKCRjb250ZXh0KTtcblxuICAkX3JldHVybiAgICAgICAgICAgIDogKGJlZm9yZTogbnVsbCwgYWZ0ZXI6IG51bGwpO1xuXG4gIEBpZiBpcy1zcGxpdCgkY29udGV4dCkgYW5kICRfZ3V0dGVyIHtcbiAgICAkX2d1dHRlcjogJF9ndXR0ZXIgLyAyO1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChiZWZvcmU6ICRfZ3V0dGVyLCBhZnRlcjogJF9ndXR0ZXIpKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRfZ3V0dGVyLXBvc2l0aW9uOiAkX2d1dHRlcikpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBJcyBJbnNpZGVcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIGluc2lkZS5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1pbnNpZGUoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9pbnNpZGU6IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX2luc2lkZSwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gSXMgU3BsaXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgc3BsaXQuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtc3BsaXQoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9zcGxpdDogc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfc3BsaXQsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIEd1dHRlciBNYXRoXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBtYXRoIHRvIHVzZSBmb3IgZ3V0dGVyIGNhbGN1bGF0aW9uc1xuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGd1dHRlci1tYXRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkX3JldHVybiAgOiBzdXN5LWdldChtYXRoLCAkY29udGV4dCk7XG4gICRfcmV0dXJuICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpID09IGluc2lkZS1zdGF0aWMsIHN0YXRpYywgJF9yZXR1cm4pO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBJc29sYXRpb24gU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cblxuLy8gSXNvbGF0ZSBbTWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBpc29sYXRpb24gYXMgYW4gb3ZlcnJpZGUuXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AbWl4aW4gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaW5zcGVjdDogJGlzb2xhdGU7XG5cbiAgJG91dHB1dDogKFxuICAgIHB1c2g6IGlzb2xhdGUoJGlzb2xhdGUpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRpc29sYXRlKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoaXNvbGF0ZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBpc29sYXRlLW91dHB1dCgkb3V0cHV0Li4uKTtcbn1cblxuXG4vLyBJc29sYXRlIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGFuIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGguXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AZnVuY3Rpb24gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaXNvbGF0ZTogcGFyc2Utc3BhbigkaXNvbGF0ZSk7XG4gICRpc29sYXRpb246IHN1c3ktZ2V0KHNwYW4sICRpc29sYXRlKTtcblxuICBAaWYgJGlzb2xhdGlvbiBhbmQgbm90KGdldC1sb2NhdGlvbigkaXNvbGF0ZSkpIHtcbiAgICAkbmV3OiAoXG4gICAgICBzcGFuOiBudWxsLFxuICAgICAgbG9jYXRpb246ICRpc29sYXRpb24sXG4gICAgKTtcbiAgICAkaXNvbGF0ZTogbWFwLW1lcmdlKCRpc29sYXRlLCAkbmV3KTtcbiAgfVxuXG4gIEByZXR1cm4gZ2V0LWlzb2xhdGlvbigkaXNvbGF0ZSk7XG59XG5cblxuLy8gR2V0IElzb2xhdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBpc29sYXRpb24gb2Zmc2V0IHdpZHRoXG4vLyAtICRpbnB1dDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtaXNvbGF0aW9uKFxuICAkaW5wdXRcbikge1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkaW5wdXQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRpbnB1dCk7XG4gICR3aWR0aCAgICAgIDogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciBhbmQgbm90KHVuaXRsZXNzKCRsb2NhdGlvbikpIHtcbiAgICAkd2lkdGg6ICRsb2NhdGlvbjtcbiAgfSBAZWxzZSBpZiAkbG9jYXRpb24ge1xuICAgICRwdXNoOiAkbG9jYXRpb24gLSAxO1xuICAgIEBpZiAkcHVzaCA+IDAge1xuICAgICAgJHB1c2g6IG1hcC1tZXJnZSgkaW5wdXQsIChcbiAgICAgICAgc3BhbjogJHB1c2gsXG4gICAgICAgIGxvY2F0aW9uOiAxLFxuICAgICAgICBzcHJlYWQ6IHdpZGUsXG4gICAgICApKTtcbiAgICAgICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHB1c2gpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRpbnB1dCkgPT0gc3BsaXRcbiAgICAgIGFuZCBzdXN5LWdldChndXR0ZXJzLCAkaW5wdXQpID4gMCB7XG4gICAgJHdpZHRoOiBpZigkd2lkdGggPT0gbnVsbCwgZ3V0dGVycygkaW5wdXQpLCAkd2lkdGggKyBndXR0ZXJzKCRpbnB1dCkpO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGggb3IgMDtcbn1cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJvdyBTdGFydCAmIEVuZFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIEJyZWFrXG4vLyAtLS0tLVxuLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCBzaG91bGQgZm9yY2UgYSBsaW5lIGJyZWFrLlxuQG1peGluIGJyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogYm90aCkpO1xufVxuXG5cbi8vIE5vQnJlYWtcbi8vIC0tLS0tLS1cbi8vIENhbmNlbCB0aGUgYnJlYWsoKSBlZmZlY3QsIGUuZy4gd2hlbiB1c2luZyBtZWRpYSBxdWVyaWVzLlxuQG1peGluIG5vYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBub25lKSk7XG59XG5cblxuLy8gRnVsbFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8bGF5b3V0IHNob3J0aGFuZD5cbkBtaXhpbiBmdWxsKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCA6ICRjb250ZXh0O1xuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZnVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBzcGFuKGZ1bGwgb2YgcGFyc2UtZ3JpZCgkY29udGV4dCkgYnJlYWspO1xufVxuXG5cbi8vIEZpcnN0XG4vLyAtLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gZmlyc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmaXJzdCwgJGluc3BlY3QpO1xuICBAaWYgbm90KGlzLXNwbGl0KCRjb250ZXh0KSkge1xuICAgIEBpbmNsdWRlIGZsb2F0LWZpcnN0KCRmbG93KTtcbiAgfVxufVxuXG5AbWl4aW4gYWxwaGEoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGZpcnN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBMYXN0XG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBsYXN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxhc3QsICRpbnNwZWN0KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpLFxuICAgIGxhc3QtZmxvdzogc3VzeS1nZXQobGFzdC1mbG93LCAkY29udGV4dCksXG4gICAgbWFyZ2luOiBpZihpcy1zcGxpdCgkY29udGV4dCksIG51bGwsIDApLFxuICApO1xuXG4gIEBpbmNsdWRlIGZsb2F0LWxhc3QoJG91dHB1dC4uLik7XG59XG5cbkBtaXhpbiBvbWVnYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgbGFzdCgkY29udGV4dCk7XG59XG5cblxuLy8gR2V0IEVkZ2Vcbi8vIC0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgZWRnZSB2YWx1ZSBiYXNlZCBvbiBsb2NhdGlvbiwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtZWRnZShcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IHN1c3ktZ2V0KGVkZ2UsICRzcGFuKTtcblxuICBAaWYgbm90KCRlZGdlKSB7XG4gICAgJGNvdW50OiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSk7XG4gICAgJGxvY2F0aW9uOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAgICRuOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgICAkbnVtYmVyOiBpZih0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyLCB0cnVlLCBmYWxzZSk7XG4gICAgJGluZGV4OiBpZigkbnVtYmVyIGFuZCB1bml0bGVzcygkbG9jYXRpb24pLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJG4gPT0gJGNvdW50IHtcbiAgICAgICRlZGdlOiBmdWxsO1xuICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uIGFuZCAkbiBhbmQgJGluZGV4IHtcbiAgICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAgICRlZGdlOiBpZigkbiA9PSAkY291bnQsIGZ1bGwsIGZpcnN0KTtcbiAgICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uICsgJG4gLSAxID09ICRjb3VudCB7XG4gICAgICAgICRlZGdlOiBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkZWRnZSA9PSBhbHBoYSBvciAkZWRnZSA9PSBvbWVnYSB7XG4gICAgJGVkZ2U6IGlmKCRlZGdlID09IGFscGhhLCBmaXJzdCwgbGFzdCk7XG4gIH1cblxuICBAcmV0dXJuICRlZGdlO1xufVxuXG5cbi8vIEdldCBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgbG9jYXRpb24gdmFsdWUgYmFzZWQgb24gZWRnZSwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtbG9jYXRpb24oXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJG4gICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgQGlmICRlZGdlIGFuZCBub3QoJGxvY2F0aW9uKSBhbmQgdHlwZS1vZigkbikgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkbikge1xuICAgIEBpZiAkZWRnZSA9PSBmaXJzdCB7XG4gICAgICAkbG9jYXRpb246IDE7XG4gICAgfSBAZWxzZSBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRsb2NhdGlvbjogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpIC0gJG4gKyAxO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxvY2F0aW9uXG59XG4iLCIvLyBNYXJnaW4gU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cbi8vIFByZVxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW4gICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJGd1dHRlciA6IGd1dHRlcigkc3Bhbik7XG4gICRzcGFuICAgOiBzcGFuKCRzcGFuKTtcbiAgJHdpZHRoICA6IGlmKCRzcGxpdCBhbmQgJGd1dHRlciwgJHNwYW4gKyAkZ3V0dGVyLCAkc3Bhbik7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBQb3N0XG4vLyAtLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwb3N0KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwb3N0LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFB1c2hcbi8vIC0tLS1cbi8vIFNpbXBsZSBzeW5vbnltbiBmb3IgcHJlLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdXNoKFxuICAkc3BhblxuKSB7XG4gIEBpbmNsdWRlIHByZSgkc3Bhbik7XG59XG5cbi8vIFB1bGxcbi8vIC0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdWxsKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIDAgLSBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIDAgLSBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHB1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3F1aXNoXG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBzcXVpc2goXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICAgICAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcXVpc2gsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlKCRwcmUpO1xuICBAaW5jbHVkZSBwb3N0KCRwb3N0KTtcbn1cbiIsIi8vIFBhZGRpbmcgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZWZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTdWZmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3VmZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzdWZmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFBhZFxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gcGFkKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBhZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmVmaXgoJHByZSk7XG4gIEBpbmNsdWRlIHN1ZmZpeCgkcG9zdCk7XG5cbn1cbiIsIi8vIEJsZWVkIFN5bnRheFxuLy8gPT09PT09PT09PT09XG5cbi8vIEJsZWVkXG4vLyAtLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIG1hcmdpbnMsIGFuZCBlcXVhbCBwb3NpdGl2ZSBwYWRkaW5nIHRvIGNyZWF0ZSBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkKFxuICAkYmxlZWQ6IDAgZ3V0dGVyKClcbikge1xuICAkaW5zcGVjdCAgOiAkYmxlZWQ7XG4gICRvdXRwdXQgICA6IGdldC1ibGVlZCgkYmxlZWQpO1xuXG4gIEBpZiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gY29udGVudC1ib3gge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgoYm94LXNpemluZzogY29udGVudC1ib3gpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChibGVlZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cblxuLy8gQmxlZWQteFxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIGhvcml6b250YWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC14KFxuICAkYmxlZWQ6IGd1dHRlcigpXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMikgMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC14IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBCbGVlZC15XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgdmVydGljYWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC15KFxuICAkYmxlZWQ6IGlmKGZ1bmN0aW9uLWV4aXN0cyhyaHl0aG0pLCByaHl0aG0oMSksIDFlbSlcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDApKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCBudGgoJHRyYmwsIDIpIDApKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXkgb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEdldCBCbGVlZFxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmxlZWQgb3V0cHV0IHZhbHVlc1xuLy8gLSAkYmxlZWQ6IDxzcGFuPlxuQGZ1bmN0aW9uIGdldC1ibGVlZChcbiAgJGJsZWVkXG4pIHtcbiAgJGJsZWVkICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRibGVlZCkpO1xuICAkdHJibCAgICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuICAkc2hvcnQgICAgOiBudWxsO1xuICAkb3V0cHV0ICAgOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkdHJibCkge1xuICAgICR0aGlzOiBudGgoJHRyYmwsICRpKTtcbiAgICAkbmV3OiAoKTtcbiAgICAkbWFyZ2luOiBudWxsO1xuICAgICRwYWRkaW5nOiBudWxsO1xuICAgICRwYWRkaW5nLXg6IG51bGw7XG5cbiAgICBAaWYgJHRoaXMgPiAwIHtcbiAgICAgICR0aGlzOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogJHRoaXMpKTtcbiAgICAgICRtYXJnaW46IHNwYW4oJHRoaXMpO1xuICAgICAgJHBhZGRpbmc6ICRtYXJnaW47XG4gICAgICAkcGFkZGluZy14OiAkcGFkZGluZztcbiAgICB9XG5cbiAgICBAaWYgJG1hcmdpbiBhbmQgJG1hcmdpbiA+IDAge1xuICAgICAgJG1hcmdpbjogLSAkbWFyZ2luO1xuXG4gICAgICBAaWYgaXMtaW5zaWRlKCR0aGlzKSB7XG4gICAgICAgICRndXR0ZXI6IGd1dHRlcigkdGhpcyk7XG4gICAgICAgICRqb2luOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCRwYWRkaW5nLCAkZ3V0dGVyKSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAkcGFkZGluZy14OiBpZigkam9pbiBhbmQgJHBhZGRpbmcgPiAwLCAkcGFkZGluZyArICRndXR0ZXIsICRwYWRkaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMiB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAzIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDQge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgJG5ldyk7XG4gIH1cblxuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRvdXRwdXQge1xuICAgICRvdXRwdXQ6IGlmKCR2YWx1ZSA9PSAwLCBtYXAtbWVyZ2UoJG91dHB1dCwgKCRwcm9wOiBudWxsKSksICRvdXRwdXQpO1xuICB9XG5cbiAgQHJldHVybiBibGVlZC1zaG9ydGhhbmQoJG91dHB1dCk7XG59XG5cbi8vIEJsZWVkIFNob3J0aGFuZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDb252ZXJ0IGJsZWVkIG91dHB1dCBpbnRvIHNob3J0aGFuZCB3aGVuIHBvc3NpYmxlLlxuLy8gLSAkYmxlZWQ6IDxvdXRwdXQgbWFwPlxuQGZ1bmN0aW9uIGJsZWVkLXNob3J0aGFuZChcbiAgJGJsZWVkXG4pIHtcbiAgJG1hcmdpbjogKCk7XG4gICRwYWRkaW5nOiAoKTtcbiAgJHJldHVybjogKCk7XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRibGVlZCB7XG4gICAgQGlmIHN0ci1pbmRleCgka2V5LCBtYXJnaW4pIHtcbiAgICAgICRtYXJnaW46IG1hcC1tZXJnZSgkbWFyZ2luLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfSBAZWxzZSBpZiBzdHItaW5kZXgoJGtleSwgcGFkZGluZykgPiAwIHtcbiAgICAgICRwYWRkaW5nOiBtYXAtbWVyZ2UoJHBhZGRpbmcsICgka2V5OiAkdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAkcHJvcHM6IChcbiAgICBtYXJnaW46ICRtYXJnaW4sXG4gICAgcGFkZGluZzogJHBhZGRpbmcsXG4gICk7XG5cbiAgQGVhY2ggJG5hbWUsICRtYXAgaW4gJHByb3BzIHtcbiAgICAkZm91cjogaWYobGVuZ3RoKG1hcC1rZXlzKCRtYXApKSA9PSA0LCB0cnVlLCBmYWxzZSk7XG4gICAgJG51bGw6IGlmKGluZGV4KG1hcC12YWx1ZXMoJG1hcCksIG51bGwpLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJGZvdXIgYW5kIG5vdCgkbnVsbCkge1xuICAgICAgJHRvcDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tdG9wJyk7XG4gICAgICAkcmlnaHQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXJpZ2h0Jyk7XG4gICAgICAkYm90dG9tOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1ib3R0b20nKTtcbiAgICAgICRsZWZ0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1sZWZ0Jyk7XG5cbiAgICAgICR0YjogaWYoJHRvcCA9PSAkYm90dG9tLCAkdG9wLCBudWxsKTtcbiAgICAgICRybDogaWYoJHJpZ2h0ID09ICRsZWZ0LCAkcmlnaHQsIG51bGwpO1xuICAgICAgJGFsbDogaWYoJHRiID09ICRybCwgJHRiLCBudWxsKTtcblxuICAgICAgJG5ldzogaWYoJGFsbCwgJGFsbCwgbnVsbCk7XG5cbiAgICAgIEBpZiBub3QoJG5ldykge1xuICAgICAgICBAaWYgJHRiIGFuZCAkcmwge1xuICAgICAgICAgICRuZXc6ICR0YiAkcmw7XG4gICAgICAgIH0gQGVsc2UgaWYgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRybCAkYm90dG9tO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRyaWdodCAkYm90dG9tICRsZWZ0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJG5hbWU6ICRuZXcpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAkbWFwKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBCcmVha3BvaW50IEludGVncmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW1lZGlhOiAoKSAhZGVmYXVsdDtcbiRzdXN5LW1lZGlhLWZhbGxiYWNrOiBmYWxzZSAhZGVmYXVsdDtcblxuJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICgpO1xuXG5cbi8vIFN1c3kgQnJlYWtwb2ludFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGFuZ2UgZ3JpZHMgYXQgZGlmZmVyZW50IG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRzLlxuLy8gLSAkcXVlcnkgICAgIDogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPiB8IDxtYXA+XG4vLyAtICRsYXlvdXQgICAgOiA8c2V0dGluZ3M+XG4vLyAtICRuby1xdWVyeSAgOiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1icmVha3BvaW50KFxuICAkcXVlcnksXG4gICRsYXlvdXQ6IGZhbHNlLFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1yb3V0ZXIoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAaWYgJGxheW91dCB7XG4gICAgICBAaW5jbHVkZSB3aXRoLWxheW91dCgkbGF5b3V0KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gU3VzeSBNZWRpYVxuLy8gLS0tLS0tLS0tLVxuLy8gLSAkcXVlcnk6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT5cbi8vIC0gJG5vLXF1ZXJ5OiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1tZWRpYShcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgJG9sZC1jb250ZXh0OiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgJG5hbWU6IGlmKG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkcXVlcnkpLCAkcXVlcnksIG51bGwpO1xuICAkcXVlcnk6IHN1c3ktZ2V0LW1lZGlhKCRxdWVyeSk7XG4gICRxdWVyeTogc3VzeS1wYXJzZS1tZWRpYSgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkcXVlcnksICRuYW1lKTtcblxuICBAaWYgJG5vLXF1ZXJ5IGFuZCB0eXBlLW9mKCRuby1xdWVyeSkgIT0gc3RyaW5nIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSB7XG4gICAgQG1lZGlhICN7c3VzeS1yZW5kZXItbWVkaWEoJHF1ZXJ5KX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJG5vLXF1ZXJ5KSA9PSBzdHJpbmcge1xuICAgICAgI3skbm8tcXVlcnl9ICYge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJG9sZC1jb250ZXh0LCAkY2xlYW46IHRydWUpO1xufVxuXG5cbi8vIE1lZGlhIFJvdXRlclxuLy8gLS0tLS0tLS0tLS0tXG4vLyBSb3V0IG1lZGlhIGFyZ3VtZW50cyB0byB0aGUgY29ycmVjdCBtaXhpbi5cbkBtaXhpbiBzdXN5LW1lZGlhLXJvdXRlcihcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChicmVha3BvaW50LCAobWl4aW46IGJyZWFrcG9pbnQpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktbWVkaWEoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFVwZGF0ZSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBTZXQgdGhlIG5ldyBtZWRpYSBjb250ZXh0XG5AbWl4aW4gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcXVlcnksXG4gICRuYW1lOiBudWxsLFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJHF1ZXJ5OiBtYXAtbWVyZ2UoKG5hbWU6ICRuYW1lKSwgJHF1ZXJ5KTtcblxuICBAaWYgJGNsZWFuIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogJHF1ZXJ5ICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiBtYXAtbWVyZ2UoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRxdWVyeSkgIWdsb2JhbDtcbiAgfVxufVxuXG5cbi8vIE1lZGlhIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgZnVsbCBtZWRpYSBjb250ZXh0LCBvciBhIHNpbmdsZSBtZWRpYSBwcm9wZXJ0eSAoZS5nLiBtaW4td2lkdGgpXG5AZnVuY3Rpb24gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcHJvcGVydHk6IGZhbHNlXG4pIHtcbiAgQGlmICRwcm9wZXJ0eSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcHJvcGVydHkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICB9XG59XG5cblxuLy8gR2V0IE1lZGlhXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBhIG5hbWVkIG1lZGlhLXF1ZXJ5IGZyb20gJHN1c3ktbWVkaWEuXG4vLyAtICRuYW1lOiA8a2V5PlxuQGZ1bmN0aW9uIHN1c3ktZ2V0LW1lZGlhKFxuICAkbmFtZVxuKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJG5hbWUpIHtcbiAgICAkbWFwLXZhbHVlOiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCAkbmFtZSk7XG4gICAgQGlmICgkbmFtZSA9PSAkbWFwLXZhbHVlKSB7XG4gICAgICAkbmFtZTogJG1hcC12YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRuYW1lOiBzdXN5LWdldC1tZWRpYSgkbWFwLXZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuYW1lO1xufVxuXG5cbi8vIFJlbmRlciBNZWRpYVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBCdWlsZCBhIG1lZGlhLXF1ZXJ5IHN0cmluZyBmcm9tIHZhcmlvdXMgbWVkaWEgc2V0dGluZ3NcbkBmdW5jdGlvbiBzdXN5LXJlbmRlci1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG91dHB1dDogbnVsbDtcbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHF1ZXJ5IHtcbiAgICAkc3RyaW5nOiBudWxsO1xuXG4gICAgQGlmICRwcm9wZXJ0eSA9PSBtZWRpYSB7XG4gICAgICAkc3RyaW5nOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RyaW5nOiAnKCN7JHByb3BlcnR5fTogI3skdmFsdWV9KSc7XG4gICAgfVxuXG4gICAgJG91dHB1dDogaWYoJG91dHB1dCwgJyN7JG91dHB1dH0gYW5kICN7JHN0cmluZ30nLCAkc3RyaW5nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuXG4vLyBQYXJzZSBNZWRpYVxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBwYXJzZWQgbWVkaWEtcXVlcnkgc2V0dGluZ3MgYmFzZWQgb24gc2hvcnRoYW5kXG5AZnVuY3Rpb24gc3VzeS1wYXJzZS1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG1xOiBudWxsO1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09IG1hcCB7XG4gICAgJG1xOiAkcXVlcnk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IG51bWJlciB7XG4gICAgJG1xOiAobWluLXdpZHRoOiAkcXVlcnkpO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBsaXN0IGFuZCBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gbnVtYmVyIHtcbiAgICAgICRtcTogKFxuICAgICAgICBtaW4td2lkdGg6IG1pbigkcXVlcnkuLi4pLFxuICAgICAgICBtYXgtd2lkdGg6IG1heCgkcXVlcnkuLi4pLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtcTogKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkbXE6IChtZWRpYTogJyN7JHF1ZXJ5fScpO1xuICB9XG5cbiAgQHJldHVybiAkbXE7XG59XG4iLCIvKlxuKiBTY3V0LCBhIGNvbGxlY3Rpb24gb2YgU2FzcyB1dGlsaXRpZXNcbiogdG8gZWFzZSBhbmQgaW1wcm92ZSBvdXIgaW1wbGVtZW50YXRpb25zIG9mIGNvbW1vbiBzdHlsZS1jb2RlIHBhdHRlcm5zLlxuKiB2MS40LjBcbiogRG9jcyBhdCBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dFxuKi9cblxuQG1peGluIHNjdXQtY2xlYXJmaXgge1xuXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jbGVhcmZpeCB7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG59XG5AbWl4aW4gc2N1dC1saXN0LXVuc3R5bGVkKFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZmxvYXRlZCAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRkaXI6IGxlZnQsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcblxuICAmID4gbGkge1xuICAgIGZsb2F0OiAkZGlyO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLSN7JGRpcn06ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWZsb2F0ZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZDtcbn1cblxuQGZ1bmN0aW9uIHNjdXQtYXV0b09yVmFsdWUgKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gYSBvciAkdmFsID09IGF1dG8ge1xuICAgIEByZXR1cm4gYXV0bztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LWNvb3JkcyAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgJHRvcDogbnRoKCRjb29yZGluYXRlcywgMSk7XG4gICRyaWdodDogbnRoKCRjb29yZGluYXRlcywgMik7XG4gICRib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpO1xuICAkbGVmdDogbnRoKCRjb29yZGluYXRlcywgNCk7XG5cbiAgQGlmICR0b3AgIT0gbiB7XG4gICAgdG9wOiBzY3V0LWF1dG9PclZhbHVlKCR0b3ApO1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbiB7XG4gICAgcmlnaHQ6IHNjdXQtYXV0b09yVmFsdWUoJHJpZ2h0KTtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBuIHtcbiAgICBib3R0b206IHNjdXQtYXV0b09yVmFsdWUoJGJvdHRvbSk7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG4ge1xuICAgIGxlZnQ6IHNjdXQtYXV0b09yVmFsdWUoJGxlZnQpO1xuICB9XG5cbn1cbkBmdW5jdGlvbiBzY3V0LXN0cmlwLXVuaXQgKFxuICAkbnVtXG4pIHtcblxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LWVtIChcbiAgJHBpeGVscyxcbiAgJGJhc2U6ICRzY3V0LWVtLWJhc2Vcbikge1xuXG4gIC8vICRiYXNlIGNvdWxkIGJlIGluIGVtIG9yIHB4IChubyB1bml0ID0gcHgpLlxuICAvLyBBZGp1c3QgYWNjb3JkaW5nbHkgdG8gY3JlYXRlIGEgJGRpdmlzb3IgdGhhdFxuICAvLyBzZXJ2ZXMgYXMgY29udGV4dCBmb3IgJHBpeGVscy5cbiAgJG11bHRpcGxpZXI6IGlmKHVuaXQoJGJhc2UpID09IGVtLCAxNiwgMSk7XG4gICRkaXZpc29yOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UpICogJG11bHRpcGxpZXI7XG5cbiAgJGVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tZW1zOiAoc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJGRpdmlzb3IpICogMWVtO1xuICAgICRlbS12YWxzOiBhcHBlbmQoJGVtLXZhbHMsICR2YWwtaW4tZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJGVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJGVtLXZhbHM7XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtcmVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1yZW0gKFxuICAkcGl4ZWxzXG4pIHtcblxuICAkcmVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcmVtczogc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJHNjdXQtcmVtLWJhc2UgKiAxcmVtO1xuICAgICRyZW0tdmFsczogYXBwZW5kKCRyZW0tdmFscywgJHZhbC1pbi1yZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHJlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJHJlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcmVtLXZhbHM7XG4gIH1cblxufVxuQG1peGluIHNjdXQtYm9yZGVyIChcbiAgJHN0eWxlLFxuICAkc2lkZXM6IG4geVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2lkZXMpID09IDIge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkc2lkZXMpID09IDQge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAzKSAhPSBuIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDQpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJTY3V0LWJvcmRlciByZXF1aXJlcyBhICRzaWRlcyBhcmd1bWVudCBvZiAyIG9yIDQgdmFsdWVzLlwiXG4gIH1cblxufVxuQG1peGluIHNjdXQtY2lyY2xlIChcbiAgJHNpemUsXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgQGlmICRjb2xvciA9PSBpbmhlcml0IHtcbiAgICAvLyBJZiB1c2VyIHdhbnRzIHRvIGluaGVyaXQgdGhlIGNvbG9yLFxuICAgIC8vIHRha2UgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgYm9yZGVyXG4gICAgLy8gY29sb3IgZGVmYXVsdHMgdG8gdGhlIHRleHQgY29sb3Igb2YgdGhlIGVsZW1lbnQuXG4gICAgYm9yZGVyLXdpZHRoOiAkc2l6ZSAvIDI7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgd2lkdGg6IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwganVzdCB1c2UgYmFja2dyb3VuZC1jb2xvci5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICB3aWR0aDogJHNpemU7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY29sb3Itc3dhcCAoXG4gICRvZmYsXG4gICRvbixcbiAgJGR1cmF0aW9uOiAwLFxuICAkYmc6IGZhbHNlXG4pIHtcblxuICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBudWxsO1xuICAkb2ZmLWlzLWxpc3Q6IHR5cGUtb2YoJG9mZikgPT0gbGlzdDtcbiAgJG9uLWlzLWxpc3Q6IHR5cGUtb2YoJG9uKSA9PSBsaXN0O1xuXG4gIC8vIElmICRvZmYgSVMgYSBsaXN0LFxuICAvLyBhc3NpZ24gY29sb3IgYW5kIGJhY2tncm91bmQtY29sb3IuXG4gIEBpZiAkb2ZmLWlzLWxpc3Qge1xuICAgIGNvbG9yOiBudGgoJG9mZiwgMSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvZmYsIDIpO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3IsIGNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgVFJVRSxcbiAgLy8gYXNzaWduIGJhY2tncm91bmQtY29sb3IuXG4gIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvZmYtaXMtbGlzdCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIEZBTFNFLFxuICAvLyBhc3NpZ24gY29sb3IuXG4gIEBlbHNlIHtcbiAgICBjb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBjb2xvcjtcbiAgfVxuXG4gIC8vIE9ubHkgc2V0LXVwIHRyYW5zaXRpb24gaWYgJGR1cmF0aW9uICE9IDAuXG4gIEBpZiAkZHVyYXRpb24gIT0gMCB7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogJHRyYW5zaXRpb24tcHJvcGVydGllcztcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAkZHVyYXRpb247XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcblxuICAgIC8vICRvbiBpcyB0cmVhdGVkIHRoZSBzYW1lIGFzICRvZmYsIGFib3ZlLlxuICAgIEBpZiAkb24taXMtbGlzdCB7XG4gICAgICBjb2xvcjogbnRoKCRvbiwgMSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9uLCAyKTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb24taXMtbGlzdCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9uO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkb247XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWhkLWJwIChcbiAgJHJhdGlvOiAxLjNcbikge1xuXG4gIEBtZWRpYSAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogKCRyYXRpbyAvIDEpKSxcbiAgICAgICAgICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gICAgICAgICAobWluLXJlc29sdXRpb246IChyb3VuZCg5NiAqICRyYXRpbykgKiAxZHBpKSkge1xuICAgIEBjb250ZW50O1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGlkZS12aXN1YWxseSB7XG5cbiAgYm9yZGVyOiAwO1xuICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG5cbn1cblxuJXNjdXQtaGlkZS12aXN1YWxseSB7XG4gIEBpbmNsdWRlIHNjdXQtaGlkZS12aXN1YWxseTtcbn1cbkBtaXhpbiBzY3V0LWltYWdlLXJlcGxhY2Uge1xuXG4gIHRleHQtaW5kZW50OiAxMDIlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuXG59XG5cbiVzY3V0LWltYWdlLXJlcGxhY2Uge1xuICBAaW5jbHVkZSBzY3V0LWltYWdlLXJlcGxhY2U7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1yZW0gYW5kIHNjdXQtc3RyaXAtdW5pdFxuXG5AbWl4aW4gc2N1dC1yZW0tZmFsbGJhY2sgKFxuICAkcGl4ZWxzLFxuICAkcHJvcGVydHk6IGZvbnQtc2l6ZVxuKSB7XG5cbiAgJHB4LXZhbHM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1weDogc2N1dC1zdHJpcC11bml0KCR2YWwpICogMXB4O1xuICAgICRweC12YWxzOiBhcHBlbmQoJHB4LXZhbHMsICR2YWwtaW4tcHgpO1xuICB9XG4gICRyZW0tdmFsczogc2N1dC1yZW0oJHBpeGVscyk7XG5cbiAgI3skcHJvcGVydHl9OiAkcHgtdmFscztcbiAgI3skcHJvcGVydHl9OiAkcmVtLXZhbHM7XG5cbn1cbkBtaXhpbiBzY3V0LXJlc2V0LWJvcmRlci1ib3gge1xuICAvLyBNYWtlIGV2ZXJ5dGhpbmcgYSBib3JkZXItYm94LCBiZWNhdXNlIHdoeSBub3Q/XG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYW50aWFsaWFzIHtcbiAgLy8gQW50aWFsaWFzIVxuICBib2R5IHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1zZW1hbnRpY2l6ZSB7XG4gIC8vIE1ha2UgaGVhZGVycyBhbmQgPGI+IHNlbWFudGljLCBub3QgcHJlc2VudGF0aW9uYWwuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcG9pbnRlciB7XG4gIC8vIENsaWNrYWJsZSBmb3JtIGVsZW1lbnRzIHNob3VsZCBoYXZlIGEgcG9pbnRlci5cbiAgbGFiZWwsXG4gIHNlbGVjdCxcbiAgb3B0aW9uLFxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1mb3JtIHtcbiAgZmllbGRzZXQge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1idXR0b24ge1xuICAvLyBSZXNldCBkZWZhdWx0IGJ1dHRvbiBzdHlsZXMsIHdoaWNoIGFyZSBuZXZlciB1c2VkLlxuICBidXR0b24sXG4gIFt0eXBlPVwiYnV0dG9uXCJdLFxuICBbdHlwZT1cInN1Ym1pdFwiXSxcbiAgW3R5cGU9XCJyZXNldFwiXSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wYXJhZ3JhcGgge1xuICAvLyBTb21lIHBhcmFncmFwaCBtYXJnaW5zIGp1c3QgZ2V0IGluIHRoZSB3YXkuXG4gIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICBwOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1tZWRpYSB7XG4gIC8vIFlvdSB3YW50IHRoZXNlIGVsZW1lbnRzIGZsdWlkLCBwcm9iYWJseS5cbiAgaW1nLFxuICB2aWRlbyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1maWd1cmUge1xuICAvLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zLlxuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG4vLyBDYWxsIHRoZW0gYWxsLCBtaW51cyBleGNsdXNpb25zIVxuQG1peGluIHNjdXQtcmVzZXQgKCRleGNsdWRlOiBmYWxzZSkge1xuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBib3JkZXItYm94KSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYm9yZGVyLWJveDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBhbnRpYWxpYXMpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1hbnRpYWxpYXM7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgc2VtYW50aWNpemUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1zZW1hbnRpY2l6ZTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwb2ludGVyKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcG9pbnRlcjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmb3JtKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZm9ybTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBidXR0b24pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1idXR0b247XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcGFyYWdyYXBoKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcGFyYWdyYXBoO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIG1lZGlhKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtbWVkaWE7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZmlndXJlKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZmlndXJlO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXNlbGVjdGVkIChcbiAgJGFjdGl2ZTogZmFsc2Vcbikge1xuXG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXRyaWFuZ2xlIChcbiAgJGRpcmVjdGlvbjogcmlnaHQsXG4gICRzaXplOiAwLjc1ZW0sXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuICAvLyBGb3IgaW1wcm92ZWQgYXBwZWFyYW5jZSBpbiBzb21lIFdlYmtpdCBicm93c2Vyc1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG5cbiAgLy8gU2V0IHVwIHNvbWUgdmFyaWFibGVzXG4gICR3aWR0aDogbnVsbDtcbiAgJGhlaWdodDogbnVsbDtcbiAgJGJvcmRlci13aWR0aHM6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJHNpemUpID09IGxpc3Qge1xuICAgICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgICAkaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkd2lkdGg6ICRzaXplO1xuICAgICRoZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgLy8gRm9yIHVwIGFuZCBkb3duLCB3aWR0aCBnZXRzIHR3byBib3JkZXJzIGJ1dCBoZWlnaHQgb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIHNlY29uZCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAkaGVpZ2h0ICgkd2lkdGggLyAyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIC8vIEZvciByaWdodCBhbmQgbGVmdCwgaGVpZ2h0IGdldHMgdHdvIGJvcmRlcnMgYnV0IHdpZHRoIG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBmaXJzdCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICR3aWR0aDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gRm9yIHJpZ2h0IHRyaWFuZ2xlcyAodGhlIHJlc3QpLCBib3RoIHNpZGVzIGdldCB0d28gYm9yZGVycyxcbiAgICAvLyBzbyBkaXZpZGUgYm90aCBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgKCR3aWR0aCAvIDIpO1xuICB9XG5cbiAgYm9yZGVyLXdpZHRoOiAkYm9yZGVyLXdpZHRocztcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcblxuXG4gIC8vIFNUQU5EQVJEIFRSSUFOR0xFU1xuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gQ09STkVSIFRSSUFOR0xFU1xuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHRvcC1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gdG9wLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHRvcC1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXRyaWFuZ2xlIHtcbiAgQGluY2x1ZGUgc2N1dC10cmlhbmdsZTtcbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1hYnNvbHV0ZWx5IChcbiAgJGRpbWVuc2lvbnNcbikge1xuXG4gICR3aWR0aDogbnRoKCRkaW1lbnNpb25zLCAxKTtcbiAgJGhlaWdodDogbnRoKCRkaW1lbnNpb25zLCAyKTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICR3aWR0aCAhPSBuIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogKC0kd2lkdGggLyAyKTtcbiAgfVxuXG4gIEBpZiAkaGVpZ2h0ICE9IG4ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAoLSRoZWlnaHQgLyAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYmxvY2sgKFxuICAkbWF4LXdpZHRoOiBmYWxzZVxuKSB7XG5cbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgQGlmICRtYXgtd2lkdGgge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNlbnRlci1ibG9jayB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLWJsb2NrO1xufVxuXG5AbWl4aW4gc2N1dC1jZW50ZXItdHJhbnNmb3JtIChcbiAgJGF4aXM6IGZhbHNlIC8vIG9yIHggb3IgeVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkYXhpcyAhPSB4IHtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gIH1cblxuICBAaWYgJGF4aXMgIT0geSB7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxuXG4gICR0cmFuc2xhdGUtdmFsOiBudWxsO1xuXG4gIEBpZiBub3QoJGF4aXMpIHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHgge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHkge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG5cbiAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICAtbXMtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS14IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHgpO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbkBtaXhpbiBzY3V0LWZpbGwgKFxuICAkd2lkdGgtaGVpZ2h0OiBmYWxzZVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIEBpZiAkd2lkdGgtaGVpZ2h0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWZpbGwge1xuICBAaW5jbHVkZSBzY3V0LWZpbGw7XG59XG5AbWl4aW4gc2N1dC1saXN0LWN1c3RvbSAoXG4gICRjb250ZW50OiBcIlxcMjAyMlwiLFxuICAkbWFya2VyLXdpZHRoOiAwLjc1ZW0sXG4gICRwYWQ6IDAsXG4gICRuby1tYXJnaW46IGZhbHNlXG4pIHtcblxuICAkY29udGVudC12YWw6IG51bGw7XG4gICRjb3VudGVyOiBpbmRleCgkY29udGVudCwgY291bnQpO1xuICBAaWYgJGNvdW50ZXIge1xuICAgIEBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDMge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciwgbnRoKCRjb250ZW50LCAzKSludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIGlmIGxlbmd0aCgkY29udGVudCkgPT0gMiB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlcik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkY29udGVudC12YWw6ICRjb250ZW50O1xuICB9XG5cbiAgcGFkZGluZy1sZWZ0OiAkbWFya2VyLXdpZHRoICsgJHBhZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmID4gbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgJGNvdW50ZXIge1xuICAgICAgY291bnRlci1pbmNyZW1lbnQ6IHNjdXRsaXN0Y291bnRlcjtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJGNvbnRlbnQtdmFsO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAtJG1hcmtlci13aWR0aDtcbiAgICAgIHdpZHRoOiAkbWFya2VyLXdpZHRoO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtZmxvYXRlZGAsIHdoaWNoIGRlcGVuZHMgaW4gdHVybiBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZGl2aWRlZCAoXG4gICRkaXZpZGVyOiBcInxcIixcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGRpcjogbGVmdCxcbiAgJGhlaWdodDogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkKCRkaXI6ICRkaXIsICRuby1tYXJnaW46ICRuby1tYXJnaW4pO1xuXG4gICRwc2V1ZG86IGlmKCRkaXIgPT0gbGVmdCwgJ2JlZm9yZScsICdhZnRlcicpO1xuXG4gIC8vIElmIGFuIGV4cGxpY2l0IGhlaWdodCBpcyBwYXNzZWQsXG4gIC8vIHRoaW5ncyBhcmUgZGlmZmVyZW50OiBBbGwgPGxpPnNcbiAgLy8gbmVlZCB0aGUgcHNldWRvLWVsZW1lbnQgKHRvIGZvcmNlIGhlaWdodCksXG4gIC8vIGJ1dCB0aGUgZmlyc3QncyBtdXN0IGJlIGhpZGRlbi5cblxuICBAaWYgJGhlaWdodCB7XG4gICAgJiA+IGxpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gICAgJiA+IGxpOiN7JHBzZXVkb30ge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgICYgPiBsaTpmaXJzdC1jaGlsZDojeyRwc2V1ZG99IHtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAmID4gbGkgKyBsaTojeyRwc2V1ZG99IHtcbiAgICBAaWYgbm90KCRoZWlnaHQpIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2U7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWJhciB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkO1xufVxuXG4lc2N1dC1saXN0LWJyZWFkY3J1bWIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZChcIi9cIik7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1pbmxpbmUgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtaW5saW5lIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWlubGluZTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LXB1bmN0dWF0ZWQgKFxuICAkZGl2aWRlcjogXCIsIFwiLFxuICAkZGlzcGxheTogaW5saW5lLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiAkZGlzcGxheTtcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1jb21tYSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1wdW5jdHVhdGVkO1xufVxuQG1peGluIHNjdXQtbWFyZ2luIChcbiAgJG1hcmdpblxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAxIGFuZCAkbWFyZ2luICE9IG4ge1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW47XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDIge1xuICAgICRtYXJnaW4teTogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgIEBpZiAkbWFyZ2luLXkgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXk7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAzIHtcbiAgICAkbWFyZ2luLXktdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi15LWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgIEBpZiAkbWFyZ2luLXktdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15LXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teS1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gNCB7XG4gICAgJG1hcmdpbi10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXJpZ2h0OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICAkbWFyZ2luLWxlZnQ6IG50aCgkbWFyZ2luLCA0KTtcbiAgICBAaWYgJG1hcmdpbi10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tcmlnaHQgIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4tcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1sZWZ0ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4tbGVmdDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtcGFkZGluZyAoXG4gICRwYWRkaW5nXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAxIGFuZCAkcGFkZGluZyAhPSBuIHtcbiAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAyIHtcbiAgICAkcGFkZGluZy15OiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgQGlmICRwYWRkaW5nLXkgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMyB7XG4gICAgJHBhZGRpbmcteS10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy15LWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICBAaWYgJHBhZGRpbmcteS10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteS10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXktYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDQge1xuICAgICRwYWRkaW5nLXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy1yaWdodDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgJHBhZGRpbmctbGVmdDogbnRoKCRwYWRkaW5nLCA0KTtcbiAgICBAaWYgJHBhZGRpbmctdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXJpZ2h0ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmctcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmctYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctbGVmdCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmctbGVmdDtcbiAgICB9XG4gIH1cbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtYWJzb2x1dGUgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1hYnNvbHV0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtYWJzb2x1dGU7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWZpeGVkIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogZml4ZWQ7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtZml4ZWQge1xuICBAaW5jbHVkZSBzY3V0LWZpeGVkO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1yZWxhdGl2ZSAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5AbWl4aW4gc2N1dC1yYXRpby1ib3ggKFxuICAkcmF0aW86IDEvMVxuKSB7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFRoZSBjb250YWluZXIncyBoZWlnaHQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVcbiAgLy8gY29udGFpbmVyJ3Mgd2lkdGgsIGlzIHNldCBieSBhc3NpZ25pbmdcbiAgLy8gcGFkZGluZy10b3AgdG8gYSBwc2V1ZG8tZWxlbWVudC5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHBhZGRpbmctdG9wOiAoMSAvICRyYXRpbykgKiAxMDAlO1xuICB9XG5cbn1cblxuJXNjdXQtcmF0aW8tYm94IHtcbiAgQGluY2x1ZGUgc2N1dC1yYXRpby1ib3g7XG59XG5AbWl4aW4gc2N1dC1zaXplKFxuICAkc2l6ZVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2l6ZSkgPT0gMSB7XG4gICAgd2lkdGg6ICAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkc2l6ZSkgPT0gMiB7XG4gICAgd2lkdGg6ICBudGgoJHNpemUsIDEpO1xuICAgIGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogLSRoZWlnaHQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgI3skd3JhcHBlcn06YWZ0ZXIsXG4gICN7JGZvb3Rlcn0ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxuXG59XG5cbi8vIGRlcHJlY2F0ZWRcbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXIgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pe1xuICBAaW5jbHVkZSBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQoJGhlaWdodCwgJHdyYXBwZXIsICRmb290ZXIpO1xufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1mbHVpZCAoXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAjeyRmb290ZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgaGVpZ2h0OiAxcHg7XG4gIH1cblxufVxuQG1peGluIHNjdXQtdmNlbnRlci1pYiAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgLy8gVGhlIGlubmVyIGVsZW1lbnQgaXMgdmVydGljYWxseSBjZW50ZXJlZFxuICAvLyBieSBtaWRkbGUtYWxpZ25pbmcgaXQgd2l0aCBhbiBpbmxpbmUgcHNldWRvLWVsZW1lbnRcbiAgLy8gd2hvc2UgaGVpZ2h0IGlzIDEwMCUuXG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIC8vIEEgc21hbGwgbmVnYXRpdmUgcmlnaHQgbWFyZ2luIGlzIHNldFxuICAgIC8vIHRvIGFjY291bnQgZm9yIHRoZSBkZWZhdWx0XG4gICAgLy8gd29yZC1zcGFjaW5nIG9mIGlubGluZS1ibG9jay5cbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1ZW07XG4gIH1cblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdmNlbnRlci1pYiB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci1pYjtcbn1cblxuQG1peGluIHNjdXQtdmNlbnRlci1saCAoXG4gICRoZWlnaHRcbikge1xuXG4gIGhlaWdodDogJGhlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWlnaHQ7XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItdGQgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIGRpc3BsYXk6IHRhYmxlO1xuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuXG4lc2N1dC12Y2VudGVyLXRkIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXRkO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtY2VudGVyLXRyYW5zZm9ybVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLXR0ICgpIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG4lc2N1dC12Y2VudGVyLXR0IHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXR0O1xufVxuLy8gc3BhY2VcbiRzY3V0LXNwYWNlOiBcIlxcMDAyMFwiO1xuLy8gbm9uLWJyZWFraW5nIHNwYWNlXG4kc2N1dC1uYnNwOiBcIlxcMDBhMFwiO1xuXG4vLyBxdW90YXRpb24gbWFya1xuJHNjdXQtcXVvdDogXCJcXDAwMjJcIjtcbi8vIGxlZnQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1sc3F1bzogXCJcXDIwMThcIjtcbi8vIHJpZ2h0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtcnNxdW86IFwiXFwyMDE5XCI7XG4vLyBsZWZ0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtbGRxdW86IFwiXFwyMDFDXCI7XG4vLyByaWdodCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LXJkcXVvOiBcIlxcMjAxRFwiO1xuLy8gbGVmdCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxzYXF1bzogXCJcXDIwMzlcIjtcbi8vIHJpZ2h0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcnNhcXVvOiBcIlxcMjAzQVwiO1xuLy8gbGVmdCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxhcXVvOiBcIlxcMDBhYlwiO1xuLy8gcmlnaHQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yYXF1bzogXCJcXDAwYmJcIjtcblxuLy8gZW0gZGFzaCAobXV0dG9uKVxuJHNjdXQtbWRhc2g6IFwiXFwyMDE0XCI7XG4vLyBlbiBkYXNoIChudXQpXG4kc2N1dC1uZGFzaDogXCJcXDIwMTNcIjtcbi8vIGh5cGhlblxuJHNjdXQtaHlwaGVuOiBcIlxcMjAxMFwiO1xuXG4vLyBhbXBlcnNhbmRcbiRzY3V0LWFtcDogXCJcXDAwMjZcIjtcbi8vIGdyZWF0ZXIgdGhhblxuJHNjdXQtZ3Q6IFwiXFwwMDNlXCI7XG4vLyBsZXNzIHRoYW5cbiRzY3V0LWx0OiBcIlxcMDAzY1wiO1xuLy8gdGltZXNcbiRzY3V0LXRpbWVzOiBcIlxcMDBEN1wiO1xuLy8gYmlnIHRpbWVzXG4kc2N1dC1iaWd0aW1lczogXCJcXDI3MTVcIjtcbi8vIGNoZWNrbWFya1xuJHNjdXQtY2hlY2ttYXJrOiBcIlxcMjcxM1wiO1xuXG4vLyBzZWN0aW9uIHNpZ24gKGRvdWJsZSBTLCBodXJyaWNhbmUsIHNlY3Rpb25hbCBzeW1ib2wsIHRoZSBsZWdhbCBkb3VnaG51dCwgc2lnbnVtIHNlY3Rpb25pcylcbiRzY3V0LXNlY3Q6IFwiXFwwMGE3XCI7XG4vLyBwYXJhZ3JhcGggc3ltYm9sIChwaWxjcm93KVxuJHNjdXQtcGFyYTogXCJcXDAwYjZcIjtcblxuLy8gbWlkZG90IChpbnRlcnB1bmN0LCBpbnRlcnBvaW50KVxuJHNjdXQtbWlkZG90OiBcIlxcMDBiN1wiO1xuLy8gby1zbGFzaCAoc2xhc2hlZCBvKVxuJHNjdXQtb3NsYXNoOiBcIlxcMDBmOFwiO1xuLy8gYnVsbGV0XG4kc2N1dC1idWxsOiBcIlxcMjAyMlwiO1xuLy8gd2hpdGUgYnVsbGV0XG4kc2N1dC13aGlidWxsOiBcIlxcMjVFNlwiO1xuLy8gaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtaGVsbGlwOiBcIlxcMjAyNlwiO1xuLy8gdmVydGljYWwgZWxsaXBzaXNcbiRzY3V0LXZlbGxpcDogXCJcXDIyRUVcIjtcbi8vIG1pZGxpbmUgaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtbWlkaGVsbGlwOiBcIlxcMjJFRlwiO1xuXG4vLyB1cC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtdXRyaTogXCJcXDI1YjJcIjtcbi8vIGRvd24tcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWR0cmk6IFwiXFwyNWJjXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1sdHJpOiBcIlxcMjVjMFwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXJ0cmk6IFwiXFwyNWI2XCI7XG4vLyB1cC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtdXN0cmk6IFwiXFwyNWI0XCI7XG4vLyBkb3duLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1kc3RyaTogXCJcXDI1YmVcIjtcbi8vIGxlZnQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWxzdHJpOiBcIlxcMjVjMlwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXJzdHJpOiBcIlxcMjViOFwiO1xuLy8gZGlhbW9uZFxuJHNjdXQtZGlhbW9uZDogXCJcXDI1YzZcIjtcbi8vIGZpc2hleWVcbiRzY3V0LWZpc2hleWU6IFwiXFwyNWM5XCI7XG4vLyBidWxsc2V5ZVxuJHNjdXQtYnVsbHNleWU6IFwiXFwyNWNlXCI7XG4vLyBjaXJjbGVcbiRzY3V0LWNpcmNsZTogXCJcXDI1Y2ZcIjtcbi8vIHdoaXRlIGNpcmNsZVxuJHNjdXQtd2hpdGVjaXJjbGU6IFwiXFwyNWNiXCI7XG4vLyBzcXVhcmVcbiRzY3V0LXNxdWFyZTogXCJcXDI1YTBcIjtcbi8vIHdoaXRlIHNxdWFyZVxuJHNjdXQtd2hpdGVzcXVhcmU6IFwiXFwyNWExXCI7XG4vLyBzbWFsbCBzcXVhcmVcbiRzY3V0LXNzcXVhcmU6IFwiXFwyNWFhXCI7XG4vLyBzbWFsbCB3aGl0ZSBzcXVhcmVcbiRzY3V0LXN3aGl0ZXNxdWFyZTogXCJcXDI1YWJcIjtcblxuLy8gZ2VuZXJhbCBjdXJyZW5jeVxuJHNjdXQtY3VycmVuY3k6IFwiXFwwMGE0XCI7XG4vLyBjZW50XG4kc2N1dC1jZW50OiBcIlxcMDBhMlwiO1xuLy8gZG9sbGFyXG4kc2N1dC1kb2xsYXI6IFwiXFwwMDI0XCI7XG4vLyBwb3VuZFxuJHNjdXQtcG91bmQ6IFwiXFwwMGEzXCI7XG4vLyBldXJvXG4kc2N1dC1ldXJvOiBcIlxcMjBhY1wiO1xuLy8geWVuXG4kc2N1dC15ZW46IFwiXFwwMGE1XCI7XG4vLyBydXBlZVxuJHNjdXQtcnVwZWU6IFwiXFwyMEI5XCI7XG5AZnVuY3Rpb24gbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSkge1xuICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgYHNyY2AgdmFsdWVzLCBpbiBvcmRlciwgdGhhdFxuICAvLyBhIGdvb2QgYEBmb250LWZhY2VgIHdpbGwgbmVlZCwgaW5jbHVkaW5nIG9ubHlcbiAgLy8gdGhvc2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gdGhlIGxpc3QgYCRmb3JtYXRzYC5cbiAgJHJlc3VsdDogKCk7XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgJGVvdC12YWw6IHVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkZW90LXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZjIpIHtcbiAgICAkd29mZjItdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmMi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYpIHtcbiAgICAkd29mZi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgdHRmKSB7XG4gICAgJHR0Zi12YWw6IHVybCgnI3skZmlsZS1wYXRofS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR0dGYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBzdmcpIHtcbiAgICAkc3ZnLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkc3ZnLXZhbCwgY29tbWEpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQG1peGluIHNjdXQtZm9udC1mYWNlIChcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Z1xuKSB7XG5cbiAgQGlmIGluZGV4KCdpdGFsaWMnICdvYmxpcXVlJywgJHdlaWdodCkge1xuICAgICRzdHlsZTogJHdlaWdodDtcbiAgICAkd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcblxuICAgIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgICBzcmM6IHVybCgnI3skZmlsZS1wYXRofS5lb3QnKTtcbiAgICB9XG4gICAgc3JjOiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KTtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhhbmdpbmctaW5kZW50IChcbiAgJGluZGVudDogMWVtXG4pIHtcblxuICAvLyBwYWRkaW5nLWxlZnQgY3JlYXRlcyB0aGUgaW5kZW50LFxuICAvLyB3aGlsZSB0ZXh0LWluZGVudCBwdWxscyB0aGUgZmlyc3QgbGluZVxuICAvLyBiYWNrIHRvIHRoZSBlZGdlLlxuXG4gIHBhZGRpbmctbGVmdDogJGluZGVudDtcbiAgdGV4dC1pbmRlbnQ6IC0kaW5kZW50O1xuXG59XG5cbiVzY3V0LWhhbmdpbmctaW5kZW50IHtcbiAgQGluY2x1ZGUgc2N1dC1oYW5naW5nLWluZGVudDtcbn1cbkBtaXhpbiBzY3V0LWluZGVudGVkLXBzIChcbiAgJGluZGVudDogMS41ZW0sXG4gICRuby1maXJzdC1pbmRlbnQ6IHRydWVcbikge1xuXG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LWluZGVudDogJGluZGVudDtcbiAgfVxuXG4gIEBpZiAkbm8tZmlyc3QtaW5kZW50IHtcbiAgICBwOmZpcnN0LW9mLXR5cGUge1xuICAgICAgdGV4dC1pbmRlbnQ6IDA7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtaW5kZW50ZWQtcHMge1xuICBAaW5jbHVkZSBzY3V0LWluZGVudGVkLXBzO1xufVxuQG1peGluIHNjdXQta2V5LXZhbCAoXG4gICRkaXZpZGVyOiBcIjpcIixcbiAgJHBhZDogMC4yNWVtLFxuICAkaW5kZW50OiAxZW0sXG4gICRzcGFjaW5nOiAwLFxuICAkcGFkLWxlZnQ6IDBcbikge1xuXG4gICYgPiBkdCB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogJHBhZDtcbiAgICAgIEBpZiAkcGFkLWxlZnQgIT0gMCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkcGFkLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJiA+IGRkIHtcbiAgICBtYXJnaW4tbGVmdDogJGluZGVudDtcbiAgICBAaWYgJHNwYWNpbmcgIT0gMCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1rZXktdmFsIHtcbiAgQGluY2x1ZGUgc2N1dC1rZXktdmFsO1xufVxuQG1peGluIHNjdXQtbGluay1iYiAoXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHdpZHRoOiAxcHhcbikge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBib3JkZXItYm90dG9tLXdpZHRoOiAkd2lkdGg7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gIH1cblxufVxuXG4lc2N1dC1saW5rLWJiIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLWJiO1xufVxuLy8gU0NVVCBMSU5LIFVOU1RZTEVEXG4vLyBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dC8jbGluay11bnN0eWxlZFxuXG5AbWl4aW4gc2N1dC1saW5rLXVuc3R5bGVkKCkge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGluaGVyaXQ7XG5cbn1cblxuJXNjdXQtbGluay11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay11bnN0eWxlZCgpO1xufVxuXG5AbWl4aW4gc2N1dC1yZXZlcnNlLWl0YWxpY3MgKFxuICAkZWxlbWVudHM6IG51bGxcbikge1xuXG4gICRlbGVtZW50LWxpc3Q6IGVtLCBjaXRlLCBpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICN7am9pbigkZWxlbWVudC1saXN0LCAkZWxlbWVudHMpfSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICB9XG5cbn1cblxuJXNjdXQtcmV2ZXJzZS1pdGFsaWNzIHtcbiAgQGluY2x1ZGUgc2N1dC1yZXZlcnNlLWl0YWxpY3M7XG59XG5cbkBtaXhpbiBzY3V0LXNpZGUtbGluZWQgKFxuICAkaGVpZ2h0OiAxcHgsXG4gICRzcGFjZTogMC41ZW0sXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHYtYWRqdXN0OiBmYWxzZSxcbiAgJGRvdWJsZTogZmFsc2Vcbikge1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA1MCU7XG5cbiAgICBib3JkZXItdG9wLXN0eWxlOiAkc3R5bGU7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogJGhlaWdodDtcblxuICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICR2LWFkanVzdCAhPSBmYWxzZSB7XG4gICAgICBib3R0b206ICR2LWFkanVzdDtcbiAgICB9XG5cbiAgICBAaWYgJGRvdWJsZSAhPSBmYWxzZSB7XG4gICAgICBoZWlnaHQ6ICRkb3VibGU7XG4gICAgICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAkaGVpZ2h0O1xuICAgICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICY6YmVmb3JlIHtcbiAgICByaWdodDogJHNwYWNlO1xuICAgIG1hcmdpbi1sZWZ0OiAtNTAlO1xuICB9XG4gICY6YWZ0ZXIge1xuICAgIGxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6IC01MCU7XG4gIH1cblxufVxuXG4lc2N1dC1zaWRlLWxpbmVkIHtcbiAgQGluY2x1ZGUgc2N1dC1zaWRlLWxpbmVkO1xufVxuQG1peGluIHNjdXQtdHJ1bmNhdGUge1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG59XG5cbiVzY3V0LXRydW5jYXRlIHtcbiAgQGluY2x1ZGUgc2N1dC10cnVuY2F0ZTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BsYWNlaG9sZGVyc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NvbG9yc1wiO1xuQGltcG9ydCBcInRvb2xraXQvZm9udHNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ludHJpbnNpYy1yYXRpb1wiO1xuQGltcG9ydCBcInRvb2xraXQvbmVzdGVkLWNvbnRleHRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BhcmFsbGF4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9ydGxcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RhcmdldFwiO1xuQGltcG9ydCBcInRvb2xraXQvdHJpYW5nbGVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NlbnRlclwiO1xuQGltcG9ydCBcInRvb2xraXQvdmlld3BvcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3VuZGVybGluZVwiO1xuQGltcG9ydCBcInRvb2xraXQvYXJ0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9zZXQtbXVsdGlwbGVcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kVG9vbGtpdC1TZXR0aW5nczogKFxuICAnY2xlYXJmaXggZXh0ZW5kJzogZmFsc2UsXG4gICdjb2xvciBzdGFjayBhbW91bnRzJzogMjUlIDUwJSA3NSUgODUlIDkwJSxcbiAgJ3RpbnQgc2hhZGUgYW1vdW50cyc6IDc1JSA1MCUgMjUlLFxuICAndGludCBjb2xvcic6ICNmZmYsXG4gICdzaGFkZSBjb2xvcic6ICMwMDAsXG4gICdjb2xvciBzY2FsZSBzdGVwcyc6IDYsXG4gICdsaWdhdHVyZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2ZvbnQgZmFjZSB3ZWlnaHQnOiBub3JtYWwsXG4gICdmb250IGZhY2Ugc3R5bGUnOiBub3JtYWwsXG4gICdmb250IGZhY2UgaW5saW5lIHdvZmYnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBleHRlbmQnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBzcGVhayc6IGZhbHNlLFxuICAnZmFkZSBpbiBkdXJhdGlvbic6IDFzLFxuICAnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJzogJy53Zi1sb2FkaW5nJyxcbiAgJ2ZhZGUgaW4gZXh0ZW5kJzogZmFsc2UsXG4gICdpbnRyaW5zaWMgcmF0aW8nOiAxNi85LFxuICAnaW50cmluc2ljIHJhdGlvIHdpZHRoJzogMTAwJSxcbiAgJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cyc6ICc+IConLFxuICAnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJzogdG9wLFxuICAnaW50cmluc2ljIHJhdGlvIGV4dGVuZCc6IGZhbHNlLFxuICAnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnOiAxMDAlLFxuICAnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nOiBsZWZ0LFxuICAndHJpYW5nbGUgY29sb3InOiAjMDAwLFxuICAndHJpYW5nbGUgaGVpZ2h0JzogMWVtLFxuICAndHJpYW5nbGUgd2lkdGgnOiAxZW0sXG4gICd0cmlhbmdsZSBhbmdsZSc6IDAsXG4gICdwYXJhbGxheCBwZXJzcGVjdGl2ZSc6IDEsXG4gICdwYXJhbGxheCBlbGVtZW50JzogJ2JvZHknLFxuICAncGFyYWxsYXggaW9zJzogdHJ1ZSxcbiAgJ3BhcmFsbGF4IGRpc3RhbmNlJzogMCxcbiAgJ3ZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAndmVydGljYWwgZXh0ZW5kJzogZmFsc2UsXG4gICdob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JzogNTAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCc6IGZhbHNlLFxuICAndW5kZXJsaW5lIGJhY2tncm91bmQnOiAjZmZmLFxuICAndW5kZXJsaW5lIGNvbG9yJzogIzAwZSxcbiAgJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJzogdHJ1ZSxcbiAgJ3VuZGVybGluZSBkaXN0YW5jZSc6IDEsXG4gICd1bmRlcmxpbmUgd2lkdGgnOiAyLFxuICAndW5kZXJsaW5lIGV4dGVuZCc6IGZhbHNlLFxuICAnYXJ0IHBpeGVsIHNpemUnOiAxcHgsXG4gICdhcnQgY29sb3InOiBibGFjayxcbiAgJ2FydCBib3JkZXIgcmFkaXVzJzogMCVcbik7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTmV3IFNldHRpbmdzIG1vZHVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHbG9iYWxcbiRHbG9iYWxTZXR0aW5nczogJFRvb2xraXQtU2V0dGluZ3MgIWRlZmF1bHQ7XG4vLyBVc2VyXG4kVXNlclNldHRpbmdzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBVc2VyIFNldHRpbmcgRXhpc3RzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkVXNlclNldHRpbmdzLCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cy1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICRSZXR1cm47XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtaGFzKCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBHZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRHbG9iYWxTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWdldC1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHZhbHVlczogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJHZhbHVlczogbWFwLW1lcmdlKCR2YWx1ZXMsICgkc2V0dGluZzogc2V0dGluZy1nZXQoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWdldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctZ2V0KCRzZXR0aW5nKTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmdzIFNldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICRzZXR0aW5ncykgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQHJldHVybiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRSZXR1cm46ICgpO1xuXG4gIEBlYWNoICRLZXksICRWYWx1ZSBpbiAkVXNlclNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBpZigkc2V0dGluZyA9PSAkS2V5LCAkUmV0dXJuLCBtYXAtbWVyZ2UoJFJldHVybiwgKCRLZXk6ICRWYWx1ZSkpKTtcbiAgfVxuXG4gICRVc2VyU2V0dGluZ3M6ICRSZXR1cm4gIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkY2xlYXItdGhlLXNldHRpbmdzOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkVXNlclNldHRpbmdzOiAoKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1yZXNldCgpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1yZXNldCgpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgUGlja1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrKCRzZXR0aW5nLCAkaW5wdXQpIHtcbiAgQHJldHVybiBpZigkaW5wdXQgIT0gbnVsbCwgJGlucHV0LCBzZXR0aW5nLWdldCgkc2V0dGluZykpO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcsICRpbnB1dCBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHNldHRpbmctcGljaygkaW5wdXQsICRzZXR0aW5nKSkpO1xuICB9XG5cbiAgQHJldHVybiAkUmV0dXJuO1xufSIsIiRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQbGFjZWhvbGRlciBHZXQvU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpIHtcbiAgJHVuaXF1ZS1pZDogdW5pcXVlLWlkKCk7XG4gICRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiBtYXAtbWVyZ2UoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICgkaWQ6ICR1bmlxdWUtaWQpKSAhZ2xvYmFsO1xuICBAcmV0dXJuICR1bmlxdWUtaWQ7XG59XG5cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAkaWQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYXRlIFBsYWNlaG9sZGVyIENsYXNzIGFuZCBFeHRlbmRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCk7XG5cbiAgQGlmICRwbGFjZWhvbGRlci1pZCA9PSBudWxsIHtcbiAgICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCk7XG4gICAgQGF0LXJvb3QgJSN7JHBsYWNlaG9sZGVyLWlkfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGV4dGVuZCAlI3skcGxhY2Vob2xkZXItaWR9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFN0YXRpYyBNaXhpbiBIZWxwZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIG1peGluLWRyeWVyKCRpZCwgJGV4dGVuZDogdHJ1ZSkge1xuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTW9kZXJuIENsZWFyZml4IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjbGVhcmZpeCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2NsZWFyZml4IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY2xlYXJmaXgnKSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29tcGFzcyBFeHRlbnNpb24gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVGludCBhbmQgU2hhZGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTHVtYVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gbHVtYSgkY29sb3IpIHtcbiAgQHJldHVybiAocmVkKCRjb2xvcikgKiAuMjk5KSArIChncmVlbigkY29sb3IpICogLjU4NykgKyAoYmx1ZSgkY29sb3IpICogLjExNCk7XG59XG5cbkBmdW5jdGlvbiBsdW1hLWd0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpID49IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1sdGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA8PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtZGlmZigkY29sb3IxLCAkY29sb3IyKSB7XG4gIEByZXR1cm4gbHVtYSgkY29sb3IxKSAtIGx1bWEoJGNvbG9yMik7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU3RhY2tzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zdGFjaygkbWFpbiwgJHNlY29uZGFyeSwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCdjb2xvciBzdGFjayBhbW91bnRzJyk7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAxIHtcbiAgICAkYW1vdW50czogbnRoKCRhbW91bnRzLCAxKTtcbiAgfVxuXG4gICRzdGFjazogJG1haW47XG5cbiAgQGVhY2ggJGFtb3VudCBpbiAkYW1vdW50cyB7XG4gICAgJHN0YWNrOiBqb2luKCRzdGFjaywgbWl4KCRzZWNvbmRhcnksIG50aCgkc3RhY2ssIDEpLCAkYW1vdW50KSk7XG4gIH1cblxuICBAcmV0dXJuICRzdGFjaztcbn1cblxuLy8gVGludCBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBTaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBUaW50L1NoYWRlIFN0YWNrXG5AZnVuY3Rpb24gdGludC1zaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gICRjb2xvcnM6ICgpO1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ3RpbnQgc2hhZGUgYW1vdW50cycpO1xuICB9XG4gICRsZW5ndGg6IGxlbmd0aCgkYW1vdW50cyk7XG5cbiAgLy8gU2hhZGVzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHNoYWRlKCRjb2xvciwgbnRoKCRhbW91bnRzLCAkaSkpKTtcbiAgfVxuXG4gIC8vIEJhc2VcbiAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsICRjb2xvcik7XG5cbiAgLy8gVGludHNcbiAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkbGVuZ3RoIC0gMSB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHRpbnQoJGNvbG9yLCBudGgoJGFtb3VudHMsICRsZW5ndGggLSAkaSkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJGNvbG9ycztcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTY2FsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXNjYWxlKCRtYWluLCAkc2Vjb25kYXJ5LCAkc3RlcHM6IG51bGwpIHtcbiAgJHN0ZXBzOiBpZigkc3RlcHMgIT0gbnVsbCwgJHN0ZXBzLCB0b29sa2l0LWdldCgnY29sb3Igc2NhbGUgc3RlcHMnKSk7XG5cbiAgJGxpc3Q6ICRtYWluO1xuXG4gICRyZWQxOiByZWQoJG1haW4pO1xuICAkcmVkMjogcmVkKCRzZWNvbmRhcnkpO1xuICAkcmVkLWRpZmY6ICgoJHJlZDEgLSAkcmVkMikgLyAoKCRzdGVwcyAtIDEpKSk7XG5cbiAgJGh1ZTE6IGh1ZSgkbWFpbik7XG4gICRodWUyOiBodWUoJHNlY29uZGFyeSk7XG4gIEBpZiAoJGh1ZTIgKyAzNTkgLSAkaHVlMSkgPCBhYnMoJGh1ZTEgLSAkaHVlMikge1xuICAgICRodWUyOiAkaHVlMiArIDM1OTtcbiAgfVxuICAkaHVlLWRpZmY6ICgkaHVlMiAtICRodWUxKSAvICgkc3RlcHMgLSAxKTtcblxuICAkc2F0MTogc2F0dXJhdGlvbigkbWFpbik7XG4gICRzYXQyOiBzYXR1cmF0aW9uKCRzZWNvbmRhcnkpO1xuICAkc2F0LWRpZmY6IDA7XG4gIEBpZiAkc2F0MSA+ICRzYXQyIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MiAtICRzYXQxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDEgLSAkc2F0MikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkbHRlMTogbGlnaHRuZXNzKCRtYWluKTtcbiAgJGx0ZTI6IGxpZ2h0bmVzcygkc2Vjb25kYXJ5KTtcbiAgJGx0ZS1kaWZmOiAwO1xuICBAaWYgJGx0ZTEgPiAkbHRlMiB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTIgLSAkbHRlMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRsdGUtZGlmZjogKCRsdGUxIC0gJGx0ZTIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGFscDE6IGFscGhhKCRtYWluKTtcbiAgJGFscDI6IGFscGhhKCRzZWNvbmRhcnkpO1xuICAkYWxwLWRpZmY6IDA7XG4gIEBpZiAkYWxwMSA+ICRhbHAyIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMiAtICRhbHAxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGFscC1kaWZmOiAoJGFscDEgLSAkYWxwMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkaHVlLWhvbGQ6ICRodWUxO1xuICAkc2F0LWhvbGQ6ICRzYXQxO1xuICAkbHRlLWhvbGQ6ICRsdGUxO1xuICAkYWxwLWhvbGQ6ICRhbHAxO1xuICAkY29sb3ItaG9sZDogMDtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRzdGVwcyB7XG4gICAgJGh1ZS1ob2xkOiAkaHVlLWhvbGQgKyAkaHVlLWRpZmY7XG4gICAgJHNhdC1ob2xkOiAkc2F0LWhvbGQgKyAkc2F0LWRpZmY7XG4gICAgJGx0ZS1ob2xkOiAkbHRlLWhvbGQgKyAkbHRlLWRpZmY7XG4gICAgJGFscC1ob2xkOiAkYWxwLWhvbGQgKyAkYWxwLWRpZmY7XG5cbiAgICAkY29sb3ItaG9sZDogaHNsYSgkaHVlLWhvbGQsICRzYXQtaG9sZCwgJGx0ZS1ob2xkLCAkYWxwLWhvbGQpO1xuICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRjb2xvci1ob2xkKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRW5hYmxlIGxpZ2F0dXJlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2xpZ2F0dXJlIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2VuYWJsZSBsaWdhdHVyZXMnKSB7XG4gICAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhPTEsIGRsaWc9MVwiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tcy1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW8tZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJsaWdhXCIsXCJkbGlnXCI7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhY2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGZvbnQtZmFjZSgkbmFtZSwgJGZpbGVzLCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwsICRpbmxpbmUtd29mZjogbnVsbCkge1xuICAkd2VpZ2h0OiBpZigkd2VpZ2h0ICE9IG51bGwsICR3ZWlnaHQsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugd2VpZ2h0JykpO1xuICAkc3R5bGU6IGlmKCRzdHlsZSAhPSBudWxsLCAkc3R5bGUsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugc3R5bGUnKSk7XG4gICRpbmxpbmUtd29mZjogaWYoJGlubGluZS13b2ZmICE9IG51bGwsICRpbmxpbmUtd29mZiwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZicpKTtcblxuICAkZm9udC1zdGFjazogKCk7XG4gICRmb250LXNyYzogJyc7XG4gICRlb3Q6IGZhbHNlO1xuICAkZm9udC1leHRlbnNpb25zOiAoJ2VvdCc6ICdlbWJlZGRlZC1vcGVudHlwZScsICd3b2ZmMic6ICd3b2ZmMicsICd3b2ZmJzogJ3dvZmYnLCAndHRmJzogJ3RydWV0eXBlJywgJ3N2Zyc6ICdzdmcnKTtcblxuICBAZWFjaCAkZXh0LCAkZm9ybWF0IGluICRmb250LWV4dGVuc2lvbnMge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkZmlsZXMsICRleHQpIHtcbiAgICAgIEBpZiBmdW5jdGlvbi1leGlzdHMoaW5saW5lLWZvbnQtZmlsZXMpIGFuZCAkaW5saW5lLXdvZmYgPT0gdHJ1ZSBhbmQgKCRleHQgPT0gJ3dvZmYnIG9yICRleHQgPT0gJ3dvZmYyJykge1xuICAgICAgICAkZm9udC1zcmM6IGlubGluZS1mb250LWZpbGVzKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSk7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiBmdW5jdGlvbi1leGlzdHMoZm9udC11cmwpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGZvbnQtc3RhY2s6IGFwcGVuZCgkZm9udC1zdGFjaywgJGZvbnQtc3JjLCAnY29tbWEnKTtcbiAgICB9XG5cbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkbmFtZTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgQGlmICRlb3Qge1xuICAgICAgc3JjOiAkZW90O1xuICAgIH1cbiAgICBAaWYgbGVuZ3RoKCRmb250LXN0YWNrKSA+IDAge1xuICAgICAgc3JjOiAkZm9udC1zdGFjaztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJY29uIEZvbnRcbi8vIEZyb20gaHR0cDovL2ljb21vb24uaW9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGljb24tZm9udCgkZm9udC1zdGFjaywgJHNwZWFrOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRzcGVhazogaWYoJHNwZWFrICE9IG51bGwsICRzcGVhaywgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBzcGVhaycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBmb250LWZhbWlseTogJGZvbnQtc3RhY2s7XG4gIEBpZiAkc3BlYWsgPT0gZmFsc2Uge1xuICAgIHNwZWFrOiBub25lO1xuICB9XG4gIEBpbmNsdWRlIGljb24tZm9udC0tY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIGljb24tZm9udC0tY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaWNvbiBmb250IGNvcmUnKSB7XG4gICAgICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQpO1xuXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFkZSBJblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY29udGVudC1mYWRlLWluKCRkdXJhdGlvbjogbnVsbCwgJGxvYWRpbmc6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGR1cmF0aW9uOiBpZigkZHVyYXRpb24gIT0gbnVsbCwgJGR1cmF0aW9uLCB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpKTtcbiAgJGxvYWRpbmc6IGlmKCRsb2FkaW5nICE9IG51bGwsICRsb2FkaW5nLCB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIGFuZCAkZHVyYXRpb24gPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSBhbmQgJGxvYWRpbmcgPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY29udGVudCBmYWRlIGluJykge1xuICAgICAgQGluY2x1ZGUgY29udGVudC1mYWRlLWluKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGlmIG5vdCBtaXhpbi1leGlzdHMoJ3NpbmdsZS10cmFuc2l0aW9uJykge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBzaW5nbGUtdHJhbnNpdGlvbihvcGFjaXR5ICRkdXJhdGlvbik7XG4gICAgfVxuXG4gICAgI3skbG9hZGluZ30gJiB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGbHVpZCBFbWJlZHMgYW5kIHdoYXRldmVyIFdJVEggTk8gSkFWQVNDSVBUIVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gcGFyZW50Jykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIGNoaWxkJykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgdG9wOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuXG4gIHBhZGRpbmctI3skcG9zaXRpb259OiAoMSAvICRyYXRpbykgKiAkd2lkdGg7XG4gIHdpZHRoOiAkd2lkdGg7XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkZWxlbWVudHM6IGlmKCRlbGVtZW50cyAhPSBudWxsLCAkZWxlbWVudHMsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcblxuICBAZWFjaCAkZWxlbWVudCBpbiAkZWxlbWVudHMge1xuICAgICN7JGVsZW1lbnR9IHtcbiAgICBcdEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGlyKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRlbGVtZW50cywgJGV4dGVuZCwgJHBvc2l0aW9uKTtcbn1cblxuQG1peGluIGlyLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xufSIsIi8vIHNpbXBsZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb250ZXh0IG9mIGEgbmVzdGVkIHBlcmNlbnRhZ2UuXG5AZnVuY3Rpb24gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuXG4gIC8vIEZpcnN0IGxldmVsIGRlZXAgaXMgYWx3YXlzIDEwMCVcbiAgJHBlcmNlbnRhZ2U6IDEwMCU7XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggbGV2ZWxcbiAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAvLyBJbnZlcnQgdGhlIHBlcmNlbnRhZ2UgdG8gZmluZCBjb250ZXh0XG4gICAgJHBlcmNlbnRhZ2U6IHBlcmNlbnRhZ2UoJHBlcmNlbnRhZ2UgLyAkY29udGV4dCk7XG4gIH1cbiAgLy8gUmV0dXJuIGZpbmFsIHBlcmNlbnRhZ2VcbiAgQHJldHVybiAkcGVyY2VudGFnZTtcbn1cblxuLy8gbWl4aW4gdG8gbWFrZSB0aGluZ3MgZWFzaWVyXG5AbWl4aW4gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJykpO1xuXG4gIHdpZHRoOiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpO1xuICBAaWYgJHBvc2l0aW9uID09IFwiY2VudGVyXCIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtLjU7XG4gIH1cbiAgQGlmICRwb3NpdGlvbiA9PSBcInJpZ2h0XCIge1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLTEgKyAxMDAlO1xuICB9XG59IiwiLy8gTWFnaWMgcGFyYWxsYXggbWl4aW5zXG5AbWl4aW4gcGFyYWxsYXgtaW5pdCgkcGVyc3BlY3RpdmU6IG51bGwsICRlbGVtZW50OiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG5cbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRlbGVtZW50OiBpZigkZWxlbWVudCAhPSBudWxsLCAkZWxlbWVudCwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGVsZW1lbnQnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBAaWYgJGVsZW1lbnQgPT0gJ2JvZHknIHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBodG1sLCBib2R5IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuICAgICAgYm9keSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRlbGVtZW50ID09IHRoaXMge1xuICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBhdC1yb290ICN7JGVsZW1lbnR9IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlOiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgb3ZlcmZsb3c6IGF1dG87XG4gIEBpZiBtaXhpbi1leGlzdHMocGVyc3BlY3RpdmUpIHtcbiAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUgKiAxcHgpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gICAgcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgfVxuICAvLyBBbGxvd3MgZm9yIHNtb290aCBzY3JvbGxpbmcgYnV0IGRpc2FibGVzIHBhcmFsbGF4IGVmZmVjdHMuXG4gIEBpZiAkcGFyYWxsYXgtaW9zID09IGZhbHNlIHtcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cbiAgLy8gTWFrZSBzdXJlIDNEIHBlcnNwZWN0aXZlIGlzIHByZXNlcnZlZFxuICAmLCAmICoge1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtLXN0eWxlKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUocHJlc2VydmUtM2QpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgoJGRpc3RhbmNlOiBudWxsLCAkcGVyc3BlY3RpdmU6IG51bGwpIHtcblxuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBkaXN0YW5jZScpKTtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG5cbiAgJHRyYW5zZm9ybTogdHJhbnNsYXRlWigkZGlzdGFuY2UgKiAkcGVyc3BlY3RpdmUgKiAxcHgpIHNjYWxlKGFicygkZGlzdGFuY2UgLSAxKSk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zZm9ybSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICAgIHRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgfVxuXG4gIHotaW5kZXg6ICRkaXN0YW5jZSAqIDEwMDtcbn1cbiIsIkBtaXhpbiBydGwoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgJF9wcm9wZXJ0eTogJHByb3BlcnR5O1xuICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcblxuICBAaWYgbGVuZ3RoKCR2YWx1ZSkgPT0gNCB7XG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICN7JHByb3BlcnR5fTogbnRoKCR2YWx1ZSwgMSkgbnRoKCR2YWx1ZSwgNCkgbnRoKCR2YWx1ZSwgMykgbnRoKCR2YWx1ZSwgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSAtIDEpICsgJ3JpZ2h0JztcbiAgICB9XG4gICAgQGVsc2UgaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpIC0gMSkgKyAnbGVmdCc7XG4gICAgfVxuXG4gICAgQGlmICRwcm9wZXJ0eSAhPSAkX3Byb3BlcnR5IHtcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIkBtaXhpbiB0YXJnZXQoJHRhcmdldCkge1xuICBAYXQtcm9vdCB7XG4gICAgLyohIEB7dGFyZ2V0OiAjeyR0YXJnZXR9fSAqL1xuICAgICYge1xuICAgICAgQGNvbnRlbnQ7ICBcbiAgICB9XG4gICAgLyohIHt0YXJnZXQ6ICN7JHRhcmdldH19QCAqLyAgXG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERyYXcgdHJpYW5nbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIHRyaWFuZ2xlKCRjb2xvcjogbnVsbCwgJGhlaWdodDogbnVsbCwgJHdpZHRoOiBudWxsLCAkYW5nbGU6IG51bGwpIHtcblxuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBjb2xvcicpKTtcbiAgJGhlaWdodDogaWYoJGhlaWdodCAhPSBudWxsLCAkaGVpZ2h0LCB0b29sa2l0LWdldCgndHJpYW5nbGUgaGVpZ2h0JykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSB3aWR0aCcpKTtcbiAgJGFuZ2xlOiBpZigkYW5nbGUgIT0gbnVsbCwgJGFuZ2xlLCB0b29sa2l0LWdldCgndHJpYW5nbGUgYW5nbGUnKSk7XG5cbiAgQGlmIG50aCgkYW5nbGUsIDEpID09IFwidG9wXCIgb3IgbnRoKCRhbmdsZSwgMSkgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiBcIiN7JGFuZ2xlfVwiO1xuICB9XG5cbiAgQGlmICRhbmdsZSA9PSBcInRvcFwiIHtcbiAgICAkYW5nbGU6IDA7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwicmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDI7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMTtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogNDUgKiA0O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwibGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDU7XG4gIH1cblxuICBAaWYgdW5pdCgkaGVpZ2h0KSA9PSBcIlwiIG9yIHVuaXQoJGhlaWdodCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JGhlaWdodH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciBoZWlnaHQuXCJcbiAgfVxuXG4gIEBpZiB1bml0KCR3aWR0aCkgPT0gXCJcIiBvciB1bml0KCR3aWR0aCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JHdpZHRofSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIHdpZHRoLlwiXG4gIH1cblxuICAvLyBvZmZzZXQgNDVkZWcgdG8gbWFrZSBlYWNoIHNpZGUgc3RhcnQgYXQgMFxuICAkZGVnOiAkYW5nbGUgKyA0NTtcbiAgLy8gaWYgdW5pdHMsIHJlbW92ZSB1bml0c1xuICBAaWYgdW5pdCgkZGVnKSA9PSBkZWcge1xuICAgICRkZWc6ICRkZWcgLyAxZGVnO1xuICB9XG4gIC8vIHNoaWZ0IHRvIGJlIG9uIGEgc2NhbGUgZnJvbSAwIHRvIDkwLlxuICBAd2hpbGUgJGRlZyA+IDkwIHtcbiAgICAkZGVnOiAkZGVnIC0gOTA7XG4gIH1cbiAgQHdoaWxlICRkZWcgPCAwIHtcbiAgICAkZGVnOiAkZGVnICsgOTA7XG4gIH1cbiAgLy8gR2V0IGEgcmF0aW8gb2YgOTAgdG8gbXVsdGlwbHkgYnkuXG4gICRkZWc6ICRkZWcgLyA5MDtcblxuICAvLyBtYWtlIHN1cmUgbWV0cmljcyBhcmUgcmVzZXRcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAvLyBydW4gdGhyb3VnaCBzaWRlc1xuICBAaWYgJGFuZ2xlIDw9IDQ1IG9yICRhbmdsZSA+IDMxNSB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSkgJGhlaWdodCAoJHdpZHRoICogJGRlZyk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDQ1IGFuZCAkYW5nbGUgPD0gMTM1IHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiAkZGVnKSAwICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAxMzUgYW5kICRhbmdsZSA8PSAyMjUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpIDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAyMjUgYW5kICRhbmdsZSA8PSAzMTUge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGggKCRoZWlnaHQgKiAkZGVnKSAwO1xuICB9XG59IiwiLy8gVmVydGljYWxseSBjZW50ZXIgYW55dGhpbmcsIGxpdGVyYWxseSBhbnl0aGluZy5cbi8vIGh0dHA6Ly96ZXJvc2l4dGhyZWUuc2UvdmVydGljYWwtYWxpZ24tYW55dGhpbmctd2l0aC1qdXN0LTMtbGluZXMtb2YtY3NzL1xuQG1peGluIHZlcnRpY2FsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgndmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcblxuICB0b3A6ICRtaWRwb2ludDtcbiAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd2ZXJ0aWNhbCBjZW50ZXInKSB7XG4gICAgICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIb3Jpem9udGFsIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIEBpZiAkbWlkcG9pbnQgIT0gMCUge1xuICAgIGxlZnQ6ICRtaWRwb2ludDtcbiAgfVxuXG4gIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWJzb2x1dGUgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIoJHZlcnRpY2FsOiBudWxsLCAkaG9yaXpvbnRhbDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICR2ZXJ0aWNhbDogaWYoJHZlcnRpY2FsICE9IG51bGwsICR2ZXJ0aWNhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIHRvcDogJHZlcnRpY2FsO1xuICBAaWYgJGhvcml6b250YWwgIT0gMCUge1xuICAgIGxlZnQ6ICRob3Jpem9udGFsO1xuICB9XG5cbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIH1cbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxuXG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDU1MgbGV2ZWwgNCBWaWV3cG9ydFxuLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLWRldmljZS1hZGFwdC8jdGhlLWF0dmlld3BvcnQtcnVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gdmlld3BvcnQge1xuICBALXdlYmtpdC12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tb3otdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbXMtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEB2aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuIiwiQG1peGluIHVuZGVybGluZSgkYmFja2dyb3VuZDogbnVsbCwgJGNvbG9yOiBudWxsLCAkY2xlYXItZGVzY2VuZGVyczogbnVsbCwgJGRpc3RhbmNlOiBudWxsLCAkd2lkdGg6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGJhY2tncm91bmQ6IGlmKCRiYWNrZ3JvdW5kICE9IG51bGwsICRiYWNrZ3JvdW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGJhY2tncm91bmQnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjb2xvcicpKTtcbiAgJGNsZWFyLWRlc2NlbmRlcnM6IGlmKCRjbGVhci1kZXNjZW5kZXJzICE9IG51bGwsICRjbGVhci1kZXNjZW5kZXJzLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnKSk7XG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBkaXN0YW5jZScpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIHdpZHRoJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gICRQWDogLjA2MjVlbTtcblxuICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKGJhY2tncm91bmQtaW1hZ2UpIGFuZCBmdW5jdGlvbi1leGlzdHMobGluZWFyLWdyYWRpZW50KSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgIGxpbmVhci1ncmFkaWVudChib3R0b20sICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSlcbiAgICApO1xuICB9XG4gIEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpO1xuICB9XG4gIGJhY2tncm91bmQtc2l6ZTogKDIgKiAkUFgpICgoMSArICR3aWR0aCkgKiAkUFgpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwICgoJHdpZHRoKSAqICRQWCkgKyAkZGlzdGFuY2U7XG5cbiAgQGlmICRjbGVhci1kZXNjZW5kZXJzIHtcbiAgICB0ZXh0LXNoYWRvdzogKDEgKiAkUFgpICgxICogJFBYKSAwICRiYWNrZ3JvdW5kLCAoLTEgKiAkUFgpIDAgMCAkYmFja2dyb3VuZDtcbiAgfVxufVxuXG5AbWl4aW4gdW5kZXJsaW5lLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndW5kZXJsaW5lJykge1xuICAgICAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQVJUIVxuLy8gSW5zcGlyZWQgYnkgaHR0cDovL2VscnVtb3JkZWxhbHV6LmdpdGh1Yi5pby9QaXhlbGF0b3IvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhcnQoJGFydCwgJHB4LXNpemU6IG51bGwsICRjb2xvcjogbnVsbCwgJHJhZGl1czogbnVsbCkge1xuICAkcHgtc2l6ZTogaWYoJHB4LXNpemUgIT0gbnVsbCwgJHB4LXNpemUsIHRvb2xraXQtZ2V0KCdhcnQgcGl4ZWwgc2l6ZScpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgnYXJ0IGNvbG9yJykpO1xuICAkcmFkaXVzOiBpZigkcmFkaXVzICE9IG51bGwsICRyYWRpdXMsIHRvb2xraXQtZ2V0KCdhcnQgYm9yZGVyIHJhZGl1cycpKTtcblxuICAkYnVpbGQ6ICgpO1xuICAkeTogJHB4LXNpemU7XG4gICR4OiAwO1xuXG4gIGhlaWdodDogJHB4LXNpemU7XG4gIHdpZHRoOiAkcHgtc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0cl9sZW5ndGgoJGFydCkge1xuICAgICRjaGFyOiBzdHJfc2xpY2UoJGFydCwgJGksICRpKTtcbiAgICAkeDogJHggKyAkcHgtc2l6ZTtcblxuICAgIEBpZiAkY2hhciA9PSAnbicge1xuICAgICAgJHk6ICR5ICsgJHB4LXNpemU7XG4gICAgICAkeDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGNoYXIgIT0gJyAnIHtcbiAgICAgICRib3JkZXI6ICR4ICR5IDAgJGNvbG9yO1xuICAgICAgJGJ1aWxkOiBhcHBlbmQoJGJ1aWxkLCAkYm9yZGVyLCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgYm94LXNoYWRvdzogJGJ1aWxkO1xufSIsIkBtaXhpbiBzZXQtbXVsdGlwbGUoJHZhbHVlLCAkcHJvcGVydGllcy4uLikge1xuICAkcHJvcGVydHktbGVuZ3RoOiBsZW5ndGgoJHByb3BlcnRpZXMpO1xuICAkZXJyb3ItbXNnOiBcIlRoZSBgc2V0LW11bHRpcGxlYCBtaXhpbiByZXF1aXJlcyB5b3UgdG8gcGFzcyBpbiBhIGxpc3Qgb2YgcHJvcGVydGllcyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50XCI7XG5cbiAgQGlmICRwcm9wZXJ0eS1sZW5ndGggPCAxIHtcbiAgICBAaWYgZmVhdHVyZS1leGlzdHMoYXQtZXJyb3IpIHtcbiAgICAgIEBlcnJvciAkZXJyb3ItbXNnO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAkZXJyb3ItbXNnO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgaW4gaXMgYSB3aGl0ZS1zcGFjZWQgc2VwYXJhdGVkIGxpc3QuXG4gICRwcm9wZXJ0aWVzOiBpZigkcHJvcGVydHktbGVuZ3RoID09IDEsIG50aCgkcHJvcGVydGllcywgMSksICRwcm9wZXJ0aWVzKTtcblxuICBAZWFjaCAkcHJvcGVydHkgaW4gJHByb3BlcnRpZXMge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlXG4gIH1cbn1cbiIsIi8vICBNb2R1bGUgU2NhbGUgYW5kIGJhc2UgZm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiRiYXNlLWZvbnQtc2l6ZTogICAxNHB4O1xuJGlkZWFsLWZvbnQtc2l6ZTogIDIycHg7XG4vLyAkYmFzZS1saW5lLWhlaWdodDogbXMoMSwgJGJhc2UtZm9udC1zaXplKTtcblxuJHJoeXRobS11bml0OiBcInJlbVwiO1xuJHJoeXRobS1nYXA6IDhweDtcbiRyZW0td2l0aC1weC1mYWxsYmFjazogZmFsc2U7XG5cbiRzY3V0LXJlbS1iYXNlOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UtZm9udC1zaXplKTtcblxuXG4vLyB7eyBDb21wb25lbnQgc2l6ZSB9fVxuJGdsb2JhbC1yYWRpdXM6IDNweDtcbiIsIi8vICBHcmlkIHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuXG4kbGF5b3V0LWJhc2U6IChcbiAgZ3V0dGVyczogMS81LFxuICBjb2x1bW4td2lkdGg6IDgwcHgsXG4gIC8vIGd1dHRlci1wb3NpdGlvbjogaW5zaWRlLXN0YXRpYyxcbiAgZGVidWc6IChcbiAgICAvLyBpbWFnZTogc2hvdyxcbiAgKSxcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiB0cnVlLFxuICAgIHJlbTogZmFsc2UsXG4gICksXG4pO1xuJHN1c3k6IGxheW91dCg1ICRsYXlvdXQtYmFzZSk7XG5cbi8vIHt7IEVsZW1lbnQgdHdpY2sgcG9pbnRzIH19XG5cbi8vIHt7IERldmljZSBsYXlvdXRzIH19XG4kc3VzeS1tZWRpYTogKFxuICAnbW9iaWxlJzogJyhtYXgtd2lkdGg6IDQxNHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiAnKG1heC13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogJyhtYXgtd2lkdGg6IDEwMjRweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICd0YWJsZXQnOiAnKG1pbi13aWR0aDogNzY4cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdC1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlLW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdkZXNrdG9wJzogJyhtaW4td2lkdGg6IDEyMDBweCknLFxuICAnY2F0ZWdvcnktbWVudSc6ICcobWluLXdpZHRoOiAxMDI0cHgpJ1xuKTtcbiR0YWJsZXQ6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIHRhYmxldCksXG4gIGxheW91dDogOSAuNVxuKTtcbiR0YWJsZXQtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkdGFibGV0LCBsYXlvdXQpKTtcbiRkZXNrdG9wOiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCBkZXNrdG9wKSxcbiAgbGF5b3V0OiAxMiAxLjUgc3BsaXRcbik7XG4kZGVza3RvcC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCRkZXNrdG9wLCBsYXlvdXQpKTtcbiRkZXNrdG9wLWdyaWQtcGFkZGluZzogc2N1dC1yZW0oMTUpO1xuXG4vLyAge3sgTGF5ZXJzIC0tLS0tLSB9fVxuJGxheWVyczogKFxuICBiYXNlLFxuICBoZWFkZXItbWVudSxcbiAgZHJhd2VyLFxuICBkcmF3ZXItc2hhZG93LFxuICBkcmF3ZXItbmF2LFxuKTsiLCIvLyAgU2V0dGluZ3Ncbi8vICA9PT09PT09PVxuXG4kY29sb3ItbGlnaHQtc2F0dXJhdGlvbjogOTMlO1xuXG4vLyAgQ29sb3JzXG4vLyAgPT09PT09XG5cbiRncmF5LWJhc2U6ICAgICAjMDAwICFkZWZhdWx0O1xuJGdyYXktZGFya2VyOiAgIHRpbnQoJGdyYXktYmFzZSwgMTMuNSUpICFkZWZhdWx0O1xuJGdyYXktZGFyazogICAgIHRpbnQoJGdyYXktYmFzZSwgMjAlKSAgICFkZWZhdWx0O1xuJGdyYXk6ICAgICAgICAgIHRpbnQoJGdyYXktYmFzZSwgMzMuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHQ6ICAgIHRpbnQoJGdyYXktYmFzZSwgNDYuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHRlcjogIHRpbnQoJGdyYXktYmFzZSwgOTMuNSUpICFkZWZhdWx0O1xuXG4vLyAgVGV4dHNcbi8vICAtLS0tLVxuXG4kdGV4dC1jb2xvcjogJGdyYXktZGFyaztcblxuLy8gIFBhbGxldGVcbi8vICAtLS0tLS0tLS0tLVxuXG4kYmx1ZTogIzJkNmVjNjtcbiRibHVlLWRhcms6IHJnYigwLCA2OSwgMTY0KTtcbiRibHVlLWxpZ2h0OiAjZDhlOWZmO1xuJHllbGxvdzogI2ZjOTYwMDtcbiR5ZWxsb3ctZGFyazogI2I4NmUwMDtcbiR5ZWxsb3ctbGluazogI2ZmZDgwMDtcbiRvcmFuZ2U6ICNmYzQ3MDA7XG4kb3JhbmdlLWRhcms6ICNiODZlMDA7XG4kcmVkOiByZ2IoMjA2LCA2OCwgNjIpO1xuJGdyZWVuOiByZ2IoMjgsIDE0OSwgMjIpO1xuJHBpbms6IHJnYigxOTcsIDMxLCAxMjQpO1xuXG4kcHJpbWFyeTogc2hhZGUoIzQyOGJjYSwgNi41JSk7XG4kc3VjY2VzczogIzVjYjg1YztcbiRpbmZvOiAgICAjNWJjMGRjO1xuJHdhcm5pbmc6ICNmMGFkNGU7XG4kZGFuZ2VyOiAgI2Q5NTM0ZjtcblxuJGlucHV0LWJvcmRlcjogI2U0ZTRlNDtcbiRib3JkZXItZ3JheTogIzkxOTE5MTtcbiRiYWNrZ3JvdW5kLWdyYXk6ICNlOWU5ZTk7XG5cbi8vICBMaW5rc1xuLy8gIC0tLS0tXG5cbiRsaW5rLWNvbG9yOiAgICAgICAgICAgIzAwMCAhZGVmYXVsdDtcbiRsaW5rLWhvdmVyLWNvbG9yOiAgICAgc2hhZGUoJGxpbmstY29sb3IsIDE1JSkgIWRlZmF1bHQ7XG4kbGluay1mb2N1cy1jb2xvcjogICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay1hY3RpdmUtY29sb3I6ICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay12aXNpdGVkLWNvbG9yOiAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG5cbi8vICBOUHJvZ3Jlc3Ncbi8vICAtLS0tLS0tLS1cbiRucHJvZ3Jlc3MtY29sb3I6ICAgICRwcmltYXJ5O1xuIiwiLy8gIEZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogICByaWdodDtcblxuLy8g5YOF6Yed5bCN6Iux5paHXG4vLyBAZm9udC1mYWNlIHtcbi8vICAgZm9udC1mYW1pbHk6IEVuZ2xpc2g7XG4vLyAgIHVuaWNvZGUtcmFuZ2U6IFUrMDAtMDI0Rjtcbi8vICAgc3JjOiBsb2NhbChIZWx2ZXRpY2EpO1xuLy8gfVxuXG4kc2FuczogICAgSGVsdmV0aWNhTmV1ZS1MaWdodFxuICAgICAgICwgJ0hlbHZldGljYSBOZXVlIExpZ2h0J1xuICAgICAgICwgJ0hlbHZldGljYSBOZXVlJ1xuICAgICAgICwgIEhlbHZldGljYVxuICAgICAgICwgJ0hlaXRpIFRDJ1xuICAgICAgICwgJ0xpSGVpIFBybydcbiAgICAgICAsICdNaWNyb3NvZnQgSmhlbmdIZWknXG4gICAgICAgLCAn5b6u6Luf5q2j6buR6auUJ1xuICAgICAgICwgIEFyaWFsXG4gICAgICAgLCAgc2Fucy1zZXJpZjtcblxuJHNlcmlmOiAgJ1BUIFNlcmlmJ1xuICAgICAgICwgR2VvcmdpYVxuICAgICAgICwgVGltZXNcbiAgICAgICAsICdUaW1lcyBOZXcgUm9tYW4nXG4gICAgICAgLCAnU29uZ3RpIFRDJ1xuICAgICAgICwgJ0hpcmFnaW5vIE1pbmNobyBQcm9OJ1xuICAgICAgICwgc2VyaWY7XG5cbiRiYXNlLWZvbnQtZmFtaWx5OiAkc2FuczsiXSwibWFwcGluZ3MiOiJBOENBQTs7Ozs7RUFLRTtBOUNNc0IsQUFBQSxnQkFBZ0IsQ0FBQztFRVV2QyxVQUFVLEVBQUUsSUFBSztFQUNqQixNQUFNLEVBQUUsSUFBSztFQUNiLE9BQU8sRUFBRSxJQUFLO0VBQ2QsVUFBVSxFQUFFLGdCQUFpQjtFQUM3QixPQUFPLEVBQUUsQ0FBRSxHRmRvRDs7QUFRakUsQUFOQSxhQU1hLEVBSWIsQUFWQSxnQkFVZ0IsRUFLaEIsQUFmQSxrQkFla0IsQ0FmVjtFQUNOLE9BQU8sRUFBRSxZQUFhO0VBQ3RCLE9BQU8sRUNad0IsR0FBVyxDQUFYLElBQVc7RURhMUMsYUFBYSxFZ0VEQyxHQUFHLEdoRUVsQjs7QUFFRCxBQUFBLGFBQWEsQUFFVixNQUFNLENBQUM7RUFBRSxnQkFBZ0IsRWtFc0JWLE9BQU8sR2xFdEJ5Qjs7QUFFbEQsQUFBQSxnQkFBZ0IsQ0FBQztFQUVmLEtBQUssRUFBRSxJQUFJLENrRUZOLE9BQU8sR2xFSWI7RUFKRCxBQUFBLGdCQUFnQixBQUdiLE1BQU0sQ0FBQztJQUFFLEtBQUssRUFBRSxJQUFJLENrRUZYLE9BQUcsR2xFRXVCOztBQUV0QyxBQUFBLGtCQUFrQixDQUFDO0VBRWpCLGdCQUFnQixFa0VhQSxPQUFPLEdsRVh4QjtFQUpELEFBQUEsa0JBQWtCLEFBR2YsTUFBTSxDQUFDO0lBQUUsZ0JBQWdCLEVtRG5CbEIsT0FBRyxHbkRtQmlEIiwibmFtZXMiOltdfQ== */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.list--unstyled,
.list--big5-ordered {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.list--big5-ordered {
  text-indent: -28px;
  padding-left: 28px; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2xpc3RzLnNjc3MiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19saXN0cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19taXhpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fY2xhc3Nlcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvX3N1LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3V0aWxpdGllcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX2Zsb2F0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zaGFyZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19wcmVmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3JlbS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2luc3BlY3Quc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19vdXRwdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19kaXJlY3Rpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fZW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3JpZHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3V0dGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19nYWxsZXJ5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcm93cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmxlZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19icmVha3BvaW50LXBsdWdpbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3NjdXQvZGlzdC9fc2N1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy9fdG9vbGtpdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wbGFjZWhvbGRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ZvbnRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ludHJpbnNpYy1yYXRpby5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19uZXN0ZWQtY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wYXJhbGxheC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19ydGwuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdGFyZ2V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RyaWFuZ2xlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NlbnRlci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L192aWV3cG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L191bmRlcmxpbmUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fYXJ0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldC1tdWx0aXBsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19zY2FsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19mb250LnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLSB2ZW5kb3IgbWl4aW4gbGlicmFyaWVzIC0tLS1cbkBpbXBvcnQgXCJtaXhpbnNcIixcbiAgICAgICAgXCJjbGFzc2VzXCIsXG4gICAgICAgIFwifnN1c3lcIixcbiAgICAgICAgXCJ+c2N1dFwiLFxuICAgICAgICBcIn5zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdFwiO1xuXG4vLyAtLS0tIHZhcmlhYmxlcyBhbmQgY29uZmlnIC0tLS1cbkBpbXBvcnQgXCJzZXR0aW5ncy9zY2FsZVwiLFxuICAgICAgICBcInNldHRpbmdzL2dyaWRcIixcbiAgICAgICAgXCJzZXR0aW5ncy9jb2xvcnNcIixcbiAgICAgICAgXCJzZXR0aW5ncy9mb250XCI7Lmxpc3QtLXVuc3R5bGVkIHtAZXh0ZW5kICVzY3V0LWxpc3QtdW5zdHlsZWQ7fVxuLmxpc3QtLWJpZzUtb3JkZXJlZCB7XG4gICRpbmRlbnQ6IDI4cHg7XG4gIEBleHRlbmQgJXNjdXQtbGlzdC11bnN0eWxlZDtcbiAgdGV4dC1pbmRlbnQ6IC0gJGluZGVudDtcbiAgcGFkZGluZy1sZWZ0OiAkaW5kZW50O1xufSIsIi8vIHt7U2FzcyBtaXhpbnMgLS0tLS0tLS19fVxuQGZ1bmN0aW9uIG4oKSB7IEByZXR1cm4gdW5xdW90ZShcIipcIik7IH1cblxuQGZ1bmN0aW9uIHIoJHRpbWVzOiAxKSB7IEByZXR1cm4gJHJoeXRobS1nYXAgKiAkdGltZXM7IH1cblxuQG1peGluIHN1c3koJG1hcCkge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkbWFwLCBxdWVyeSksIG1hcC1nZXQoJG1hcCwgbGF5b3V0KSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiByZXZlcnNlLWhpZGUtdmlzdWFsbHkoKSB7XG4gIGJvcmRlcjogMDtcbiAgY2xpcDogYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogYXV0bztcbn1cblxuQG1peGluIHNoYXJlLWJyZWFrcG9pbnRzKCRtYXAsICRjc3Nwcm9wOiBjb250ZW50KSB7XG4gICRkZXNjcmlwdGlvbjogJyc7XG5cbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgQGlmICRkZXNjcmlwdGlvbiAhPSAgJycge1xuICAgICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAnIHwgJztcbiAgICB9XG4gICAgXG4gICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAkcHJvcGVydHkgKyc6ICcrIGluc3BlY3QoJHZhbHVlKTtcbiAgfVxuXG4gIGRpc3BsYXk6IG5vbmU7XG4gICN7JGNzc3Byb3B9OiAgJGRlc2NyaXB0aW9uO1xufVxuXG5AbWl4aW4gdG9nZ2xlLWZhZGUoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIH1cbn1cblxuQG1peGluIHRvZ2dsZS1zaG93KCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IDA7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9ICBcbn1cblxuQG1peGluIHNob3coKSB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICBoZWlnaHQ6IGF1dG87ICBcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyKCkge1xuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCBcbiAgJjo6LW1vei1wbGFjZWhvbGRlcixcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxufVxuXG5AbWl4aW4gZGVidWcoJGNvbG9yOiAjZmZmIHJnYmEodG9tYXRvLCAuMykpIHtcbiAgY29sb3I6ICRjb2xvclxufVxuXG5AbWl4aW4gbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSk7XG4gID4gbGkgKyBsaTpiZWZvcmUgeyBtYXJnaW4tbGVmdDogJHNwYWNlICsgNHB4OyB9XG59XG4iLCJAbWl4aW4gSGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBTZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBwYWRkaW5nOiAwIHIoMikgMCByKDEpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAvLyBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIC8vIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gIC8vIGJhY2tncm91bmQ6IHVybChcImltYWdlcy9hcnJvdy1kb3duLnN2Z1wiKVxuICAvLyAgICAgICAgICAgOTIlIDUwJSAvIDhweCAxMHB4XG4gIC8vICAgICAgICAgICBuby1yZXBlYXRcbiAgLy8gICAgICAgICAgIHRyYW5zcGFyZW50O1xuICAubm8tY3NzLWFwcGVhcmFuY2UgJiB7XG4gICAgQGluY2x1ZGUgc2N1dC1wYWRkaW5nKG4gMCk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gTm9ybWFsaXplKCkge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmUgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDA7XG59IiwiLy8gU3VzeVxuLy8gPT09PVxuXG5AaW1wb3J0ICdzdXN5L2xhbmd1YWdlL3N1c3knO1xuIiwiLy8gU3VzeSBOZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4kc3VzeS12ZXJzaW9uOiAyLjE7XG5cbkBpbXBvcnQgXCIuLi9zdVwiO1xuQGltcG9ydCBcIi4uL291dHB1dC9mbG9hdFwiO1xuXG5AaW1wb3J0IFwic3VzeS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1c3kvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1c3kvZ3JpZHNcIjtcbkBpbXBvcnQgXCJzdXN5L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRleHRcIjtcbkBpbXBvcnQgXCJzdXN5L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInN1c3kvc3BhblwiO1xuQGltcG9ydCBcInN1c3kvZ3V0dGVyc1wiO1xuQGltcG9ydCBcInN1c3kvaXNvbGF0ZVwiO1xuQGltcG9ydCBcInN1c3kvZ2FsbGVyeVwiO1xuQGltcG9ydCBcInN1c3kvcm93c1wiO1xuQGltcG9ydCBcInN1c3kvbWFyZ2luc1wiO1xuQGltcG9ydCBcInN1c3kvcGFkZGluZ1wiO1xuQGltcG9ydCBcInN1c3kvYmxlZWRcIjtcbkBpbXBvcnQgXCJzdXN5L2JyZWFrcG9pbnQtcGx1Z2luXCI7XG4iLCIvLyBTdVxuLy8gPT1cblxuQGltcG9ydCBcInN1L3V0aWxpdGllc1wiO1xuQGltcG9ydCBcInN1L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3UvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1L2dyaWRcIjtcbiIsIi8vIE1hcCBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBUcnVuY2F0ZSBMaXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiBhIGxpc3QsIHRydW5jYXRlZCB0byBhIGdpdmVuIGxlbmd0aFxuQGZ1bmN0aW9uIF9zdXN5LXRydW5jYXRlLWxpc3QoXG4gICRsaXN0LFxuICAkbGVuZ3RoXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgJF9yZXR1cm46IGlmKCRpIDw9ICRsZW5ndGgsIGFwcGVuZCgkX3JldHVybiwgbnRoKCRsaXN0LCAkaSkpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgR2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1nZXQoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46ICRtYXA7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIHR5cGUtb2YoJF9yZXR1cm4pID09IG1hcCB7XG4gICAgICAkX3JldHVybjogbWFwLWdldCgkX3JldHVybiwgJGtleSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIFNldFxuLy8gLS0tLS0tLS1cbi8vIC0gU2V0IGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtc2V0KFxuICAkbWFwLFxuICAka2V5cy12YWx1ZS4uLlxuKSB7XG4gICRfdmFsdWU6IG50aCgka2V5cy12YWx1ZSwgLTEpO1xuICAkX2tleXM6IF9zdXN5LXRydW5jYXRlLWxpc3QoJGtleXMtdmFsdWUsIGxlbmd0aCgka2V5cy12YWx1ZSkgLSAxKTtcbiAgJF9sZW5ndGg6IGxlbmd0aCgkX2tleXMpO1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkX2xlbmd0aCB7XG4gICAgJF9uOiAwIC0gJGk7XG4gICAgJF9sZXZlbDogX3N1c3ktdHJ1bmNhdGUtbGlzdCgkX2tleXMsICRfbGVuZ3RoICsgJF9uKTtcbiAgICAkX2xldmVsOiBfc3VzeS1kZWVwLWdldCgkbWFwLCAkX2xldmVsLi4uKTtcbiAgICAkX21lcmdlOiBudGgoJF9rZXlzLCAkX24pO1xuICAgICRfbWVyZ2U6ICgkX21lcmdlOiAkX3ZhbHVlKTtcbiAgICAkX3JldHVybjogaWYoJF9sZXZlbCwgbWFwLW1lcmdlKCRfbGV2ZWwsICRfbWVyZ2UpLCAkX21lcmdlKTtcbiAgICAkX3ZhbHVlOiAkX3JldHVybjtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBNZXJnZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIDIgb2JqZWN0cyBvZiBhbnkgZGVwdGgsIG1lcmdlZFxuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtbWVyZ2UoXG4gICRtYXAxLFxuICAkbWFwMlxuKSB7XG5cbiAgQGlmIHR5cGUtb2YoJG1hcDEpICE9IG1hcCBvciB0eXBlLW9mKCRtYXAyKSAhPSBtYXAge1xuICAgICRtYXAxOiAkbWFwMjtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAyIHtcbiAgICAgICRfbmV3OiAoJGtleTogX3N1c3lfZGVlcC1tZXJnZShtYXAtZ2V0KCRtYXAxLCAka2V5KSwgJHZhbHVlKSk7XG4gICAgICAkbWFwMTogbWFwLW1lcmdlKCRtYXAxLCAkX25ldyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbWFwMTtcbn1cblxuXG4vLyBEZWVwIEhhcy1LZXlcbi8vIC0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gdHJ1ZSBpZiBhIGRlZXAga2V5IGV4aXN0c1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtaGFzLWtleShcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogbnVsbDtcbiAgJF9zdG9wOiBmYWxzZTtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgbm90KCRfc3RvcCkge1xuICAgICAgJF9yZXR1cm46IG1hcC1oYXMta2V5KCRtYXAsICRrZXkpO1xuICAgIH1cblxuICAgIEBpZiAkX3JldHVybiB7XG4gICAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9zdG9wOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTZXR0aW5nc1xuLy8gPT09PT09PT1cblxuLy8gVmVyc2lvblxuLy8gLS0tLS0tLVxuJHN1LXZlcnNpb246IDEuMTtcblxuXG4vLyBEZWZhdWx0IFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBUaGUgYmFzaWMgc2V0dGluZ3NcbiRzdXN5LWRlZmF1bHRzOiAoXG4gIGNvbHVtbnM6IDQsXG4gIGd1dHRlcnM6IC4yNSxcbik7XG5cblxuLy8gVXNlciBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBEZWZpbmUgdGhlICRzdXN5IHZhcmlhYmxlIHdpdGggYSBtYXAgb2YgeW91ciBvd24gc2V0dGluZ3MuXG4vLyAtIFNldCBFSVRIRVIgJGNvbHVtbi13aWR0aCBPUiAkY29udGFpbmVyXG4vLyAtIFVzZSAkY29sdW1uLXdpZHRoIGZvciBzdGF0aWMgbGF5b3V0c1xuJHN1c3k6ICgpICFkZWZhdWx0O1xuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IEFkZCBkZWZhdWx0cyB0byBTdXN5XG5AbWl4aW4gc3VzeS1kZWZhdWx0cyhcbiAgJGRlZmF1bHRzXG4pIHtcbiAgJHN1c3ktZGVmYXVsdHM6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJGRlZmF1bHRzKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgU2V0XG4vLyAtLS0tLS0tLVxuLy8gQ2hhbmdlIG9uZSBzZXR0aW5nXG4vLyAtICRrZXkgICA6IHNldHRpbmcgbmFtZVxuLy8gLSAkdmFsdWUgOiBzZXR0aW5nIHZhbHVlXG5AbWl4aW4gc3VzeS1zZXQoXG4gICRrZXktdmFsdWUuLi5cbikge1xuICAkc3VzeTogX3N1c3ktZGVlcC1zZXQoJHN1c3ksICRrZXktdmFsdWUuLi4pICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm4gb25lIHNldHRpbmcgZnJvbSBhIGdyaWRcbi8vIC0gJGtleSAgICAgOiA8a2V5d29yZD5cbi8vIC0gJGxheW91dCAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gc3VzeS1nZXQoXG4gICRrZXksXG4gICRsYXlvdXQ6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJHN1c3kpXG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF9vcHRpb25zOiAkbGF5b3V0ICRzdXN5ICRzdXN5LWRlZmF1bHRzO1xuICAkX2JyZWFrOiBmYWxzZTtcbiAgJF9yZXR1cm46IG51bGw7XG5cbiAgQGVhY2ggJG9wdCBpbiAkX29wdGlvbnMge1xuICAgIEBpZiB0eXBlLW9mKCRvcHQpID09IG1hcCBhbmQgbm90KCRfYnJlYWspIHtcbiAgICAgICRfa2V5c2V0OiBfc3VzeS1kZWVwLWhhcy1rZXkoJG9wdCwgJGtleS4uLik7XG4gICAgICBAaWYgJF9rZXlzZXQge1xuICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1nZXQoJG9wdCwgJGtleS4uLik7XG4gICAgICAgICRfYnJlYWs6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIE1hdGggVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09XG5cblxuLy8gVmFsaWQgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGNvbHVtbiBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRjb2x1bW5zKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkY29sdW1ucykge1xuICAgICRyZXR1cm46ICRjb2x1bW5zO1xuICB9IEBlbHNlIGlmICR0eXBlID09IGxpc3Qge1xuICAgICRmYWlsOiBudWxsO1xuICAgIEBlYWNoICRjb2wgaW4gJGNvbHVtbnMge1xuICAgICAgQGlmIHR5cGUtb2YoJGNvbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgJGZhaWw6ICRmYWlsIG9yIGlmKHVuaXRsZXNzKCRjb2wpLCBudWxsLCB0cnVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHJldHVybjogaWYoJGZhaWwsICRyZXR1cm4sICRjb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiAkcmV0dXJuICE9ICRjb2x1bW5zIGFuZCBub3QoJHNpbGVudCkge1xuICAgICRyZXR1cm46IG51bGw7XG4gICAgJHdhcm46ICckY29sdW1ucyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyIG9yIGxpc3Qgb2YgdW5pdGxlc3MgbnVtYmVycy4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGNvbHVtbnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG4vLyBWYWxpZCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgZ3V0dGVyIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtZ3V0dGVycyhcbiAgJGd1dHRlcnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXJzKSB7XG4gICAgJHJldHVybjogJGd1dHRlcnM7XG4gIH0gQGVsc2UgaWYgbm90KCRzaWxlbnQpIHtcbiAgICAkd2FybjogJyRndXR0ZXJzIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRndXR0ZXJzfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBDb2x1bW4gbWF0aFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBJcyBTeW1tZXRyaWNhbFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIGdyaWQgaXMgc3ltbWV0cmljYWwuXG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gaXMtc3ltbWV0cmljYWwoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpZih0eXBlLW9mKCRjb2x1bW5zKSA9PSBudW1iZXIsICRjb2x1bW5zLCBudWxsKTtcbn1cblxuXG4vLyBTdXN5IENvdW50XG4vLyAtLS0tLS0tLS0tXG4vLyBGaW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiBhIGdpdmVuIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktY291bnQoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykgb3IgbGVuZ3RoKCRjb2x1bW5zKTtcbn1cblxuXG4vLyBTdXN5IFN1bVxuLy8gLS0tLS0tLS1cbi8vIEZpbmQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5LXN1bShcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuXG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQgPT0gd2lkZSwgMCwgaWYoJHNwcmVhZCA9PSB3aWRlciwgMSwgLTEpKTtcbiAgJGd1dHRlci1zdW06IChzdXN5LWNvdW50KCRjb2x1bW5zKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICRjb2x1bW4tc3VtOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgQGlmIG5vdCgkY29sdW1uLXN1bSkge1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGNvbHVtbnMge1xuICAgICAgJGNvbHVtbi1zdW06ICgkY29sdW1uLXN1bSBvciAwKSArICRjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtO1xufVxuXG5cbi8vIFN1c3kgU2xpY2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBvZiBjb2x1bW5zIGF0IGEgZ2l2ZW4gbG9jYXRpb24uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkc3ViLWNvbHVtbnM6ICRzcGFuO1xuXG4gIEBpZiBub3QoaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpKSB7XG4gICAgJGxvY2F0aW9uOiAkbG9jYXRpb24gb3IgMTtcbiAgICAkc3ViLWNvbHVtbnM6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRzcGFuKSB7XG4gICAgICAkc3ViLWNvbHVtbnM6IGFwcGVuZCgkc3ViLWNvbHVtbnMsIG50aCgkY29sdW1ucywgJGkpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG4vLyBTdXN5XG4vLyAtLS0tXG4vLyBGaW5kIHRoZSBzdW0gb2YgYSBjb2x1bW4tc3Bhbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5KFxuICAkc3BhbixcbiAgJGxvY2F0aW9uICAgICA6IGZhbHNlLFxuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICAgICAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgICAgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG4gICRzcGFuOiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcblxuICBAcmV0dXJuIHN1c3ktc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCk7XG59XG4iLCIvLyBGbG9hdCBBUElcbi8vID09PT09PT09PVxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbkBpbXBvcnQgXCJmbG9hdC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJmbG9hdC9zcGFuXCI7XG5AaW1wb3J0IFwiZmxvYXQvZW5kXCI7XG5AaW1wb3J0IFwiZmxvYXQvaXNvbGF0ZVwiO1xuIiwiLy8gU2hhcmVkIEFQSVxuLy8gPT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydFwiO1xuXG5AaW1wb3J0IFwic2hhcmVkL2luc3BlY3RcIjtcbkBpbXBvcnQgXCJzaGFyZWQvb3V0cHV0XCI7XG5AaW1wb3J0IFwic2hhcmVkL2RpcmVjdGlvblwiO1xuQGltcG9ydCBcInNoYXJlZC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic2hhcmVkL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNoYXJlZC9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic2hhcmVkL3BhZGRpbmdcIjtcblxuXG5cbiIsIi8vIFN1c3kgQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydC9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9wcmVmaXhcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3JlbVwiO1xuQGltcG9ydCBcInN1cHBvcnQvY2xlYXJmaXhcIjtcbiIsIi8vIEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgU3VwcG9ydCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgYnJlYWtwb2ludDogdHJ1ZSxcbiAgICBib3gtc2l6aW5nOiB0cnVlLFxuICAgIHJlbTogdHJ1ZSxcbiAgKSxcbikpO1xuXG5cbi8vIFN1c3kgU3VwcG9ydCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VuZCBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0byB0aGUgcHJvcGVyIHN1cHBvcnQgbW9kdWxlcy5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXN1cHBvcnQoXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgLy8gQmFja2dyb3VuZCBTdXBwb3J0XG4gIEBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtaW1hZ2UoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1zaXplIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtc2l6ZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLW9yaWdpbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbigkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWNsaXAge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1jbGlwKCR2YWwpO1xuICB9XG5cbiAgLy8gQm94LVNpemluZyBTdXBwb3J0XG4gIEBlbHNlIGlmICRwcm9wID09IGJveC1zaXppbmcge1xuICAgIEBpbmNsdWRlIHN1c3ktYm94LXNpemluZygkdmFsKTtcbiAgfVxuXG4gIC8vIFJlbSBTdXBwb3J0XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cblxuXG4vLyBTdXN5IFN1cHBvcnQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBzdXBwb3J0IG9mIGEgZmVhdHVyZS5cbi8vIC0gJGZlYXR1cmUgICAgICAgOiA8c3RyaW5nPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nIFwicmVtXCIgb3IgXCJib3gtc2l6aW5nXCJcbi8vIC0gJHJlcXVpcmVtZW50cyAgOiA8bWFwPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nICh2YXJpYWJsZTogcmVtLXdpdGgtcHgtZmFsbGJhY2ssIG1peGluOiByZW0pXG4vLyAtICR3YXJuICAgICAgICAgIDogPGJvb2w+XG5AZnVuY3Rpb24gc3VzeS1zdXBwb3J0KFxuICAkZmVhdHVyZSxcbiAgJHJlcXVpcmVtZW50czogKCksXG4gICR3YXJuOiB0cnVlXG4pIHtcbiAgJF9zdXBwb3J0OiBzdXN5LWdldCh1c2UtY3VzdG9tICRmZWF0dXJlKTtcblxuICBAaWYgJF9zdXBwb3J0IHtcbiAgICAkX2ZhaWw6IGZhbHNlO1xuXG4gICAgQGVhY2ggJF90eXBlLCAkX3JlcSBpbiAkcmVxdWlyZW1lbnRzIHtcbiAgICAgIEBlYWNoICRfaSBpbiAkX3JlcSB7XG4gICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcblxuICAgICAgICBAaWYgbm90KCRfcGFzcykge1xuICAgICAgICAgICRfZmFpbDogdHJ1ZTtcbiAgICAgICAgICBAaWYgJHdhcm4ge1xuICAgICAgICAgICAgQHdhcm4gXCJZb3UgcmVxdWVzdGVkIGN1c3RvbSBzdXBwb3J0IG9mICN7JGZlYXR1cmV9LCBidXQgdGhlICN7JF9pfSAjeyRfdHlwZX0gaXMgbm90IGF2YWlsYWJsZS5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3N1cHBvcnQ6IGlmKCRfZmFpbCwgZmFsc2UsICRfc3VwcG9ydCk7XG4gIH1cblxuICBAcmV0dXJuICRfc3VwcG9ydDtcbn1cbiIsIi8vIFN1c3kgUHJlZml4XG4vLyA9PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IHNpbXBsZSBwcmVmaXhlZCBwcm9wZXJ0aWVzLlxuLy8gLSAkcHJvcCAgICAgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgICAgICA6IDxjc3MgdmFsdWU+XG4vLyAtIFskcHJlZml4XSAgOiA8YnJvd3NlciBwcmVmaXggbGlzdD5cbkBtaXhpbiBzdXN5LXByZWZpeChcbiAgJHByb3AsXG4gICR2YWwsXG4gICRwcmVmaXg6IG9mZmljaWFsXG4pIHtcbiAgQGVhY2ggJGZpeCBpbiAkcHJlZml4IHtcbiAgICAkZml4OiBpZigkZml4ID09IG9mZmljaWFsIG9yIG5vdCgkZml4KSwgJHByb3AsICctI3skZml4fS0jeyRwcm9wfScpO1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRmaXgsICR2YWwpO1xuICB9XG59XG4iLCIvLyBCYWNrZ3JvdW5kIFByb3BlcnRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEJhY2tncm91bmQgSW1hZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtaW1hZ2U+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2Vcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtaW1hZ2UsIChtaXhpbjogYmFja2dyb3VuZC1pbWFnZSksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLi4uKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBTaXplXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLXNpemU+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1zaXplKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgkc2l6ZSk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemU7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIE9yaWdpblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtb3JpZ2luPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oXG4gICRvcmlnaW5cbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLW9yaWdpbikpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRvcmlnaW47XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIENsaXBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1jbGlwPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1jbGlwKFxuICAkY2xpcFxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtY2xpcCkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNsaXAoJGNsaXApO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwO1xuICB9XG59XG4iLCIvLyBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09XG5cbi8vIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkbW9kZWw6IDxib3gtc2l6aW5nPlxuQG1peGluIHN1c3ktYm94LXNpemluZyhcbiAgJG1vZGVsOiBjb250ZW50LWJveFxuKSB7XG4gIEBpZiAkbW9kZWwge1xuICAgIEBpZiBzdXN5LXN1cHBvcnQoYm94LXNpemluZywgKG1peGluOiBib3gtc2l6aW5nKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKCRtb2RlbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJlZml4OiAobW96LCB3ZWJraXQsIG9mZmljaWFsKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktcHJlZml4KGJveC1zaXppbmcsICRtb2RlbCwgJHByZWZpeCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBEZWJ1Z2dpbmdcbi8vID09PT09PT09PVxuXG4vLyBTdXN5IEluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8gT3V0cHV0IGFyZ3VtZW50cyBwYXNzZWQgdG8gYSBpbnNwZWN0LlxuLy8gLSAkbWl4aW4gIDogPHN1c3kgbWl4aW4+XG4vLyAtICRpbnNwZWMgICA6IDxtaXhpbiBhcmd1bWVudHM+XG5cbkBtaXhpbiBzdXN5LWluc3BlY3QoXG4gICRtaXhpbixcbiAgJGluc3BlY3Rcbikge1xuICAkc2hvdzogZmFsc2U7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGluc3BlY3Qge1xuICAgIEBpZiBpbmRleCgkaXRlbSwgaW5zcGVjdCkge1xuICAgICAgJHNob3c6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzaG93IG9yIHN1c3ktZ2V0KGRlYnVnIGluc3BlY3QpIHtcbiAgICAtc3VzeS0jeyRtaXhpbn06IGluc3BlY3QoJGluc3BlY3QpO1xuICB9XG59XG4iLCIvLyBPdXRwdXRcbi8vID09PT09PVxuXG4vLyBPdXRwdXRcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IENTUyB3aXRoIHByb3BlciBicm93c2VyIHN1cHBvcnQuXG4vLyAtICRzdHlsZXMgIDogPG1hcCBvZiBjc3MgcHJvcGVydHktdmFsdWUgcGFpcnM+XG5AbWl4aW4gb3V0cHV0KFxuICAkc3R5bGVzXG4pIHtcbiAgQGVhY2ggJHByb3AsICR2YWwgaW4gJHN0eWxlcyB7XG4gICAgQGluY2x1ZGUgc3VzeS1zdXBwb3J0KCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gR3JpZCBCYWNrZ3JvdW5kIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuLy8gLSBTdWItcGl4ZWwgcm91bmRpbmcgY2FuIGxlYWQgdG8gc2V2ZXJhbCBwaXhlbHMgdmFyaWF0aW9uIGJldHdlZW4gYnJvd3NlcnMuXG5cbi8vIEdyaWQgQmFja2dyb3VuZCBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGltYWdlOiBiYWNrZ3JvdW5kLWltYWdlXG4vLyAtICRzaXplOiBiYWNrZ3JvdW5kLXNpemVcbi8vIC0gJGNsaXA6IGJhY2tncm91bmQtY2xpcFxuLy8gLSBbJGZsb3ddOiBsdHIgfCBydGxcbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0IChcbiAgJGltYWdlLFxuICAkc2l6ZTogbnVsbCxcbiAgJGNsaXA6IG51bGwsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2UsXG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZSxcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBmcm9tKCRmbG93KSB0b3AsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBNYXJnaW5zIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gTWFyZ2luIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBtYXJnaW4tb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUGFkZGluZyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIFBhZGRpbmcgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBwYWRkaW5nLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBDb250YWluZXJcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGZsb2F0LWNvbnRhaW5lcihcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gIEBpbmNsdWRlIHN1c3ktY2xlYXJmaXg7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1vdXRwdXQoJHdpZHRoLCAkanVzdGlmeSwgJHByb3BlcnR5KTtcbn1cbiIsIi8vIEZsb2F0IFNwYW4gQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBTcGFuIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHdpZHRoICAgICAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG9hdF0gICAgICAgICAgIDogZnJvbSB8IHRvXG4vLyAtIFskbWFyZ2luLWJlZm9yZV0gICA6IDxsZW5ndGg+XG4vLyAtIFskbWFyZ2luLWFmdGVyXSAgICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1iZWZvcmVdICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1hZnRlcl0gICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gICAgICAgICAgICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LXNwYW4tb3V0cHV0KFxuICAkd2lkdGgsXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbSxcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsLFxuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGwsXG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbCxcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsLFxuICAkZmxvdyAgICAgICAgICAgICA6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvICAgICA6IHRvKCRmbG93KTtcbiAgJGZyb20gICA6IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aDogJHdpZHRoLFxuICAgIGZsb2F0OiBpZigkZmxvYXQgPT0gdG8sICR0bywgbnVsbCkgb3IgaWYoJGZsb2F0ID09IGZyb20sICRmcm9tLCBudWxsKSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkcGFkZGluZy1hZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IElzb2xhdGlvbiBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gSXNvbGF0ZSBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRwdXNoICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBpc29sYXRlLW91dHB1dChcbiAgJHB1c2gsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiAkZnJvbSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRwdXNoLFxuICAgIG1hcmdpbi0jeyR0b306IC0xMDAlLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFN1c3kgU2V0dGluZ3Ncbi8vID09PT09PT09PT09PT1cblxuLy8gU3VzeSBMYW5ndWFnZSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBjZW50ZXIsXG4gIGd1dHRlci1wb3NpdGlvbjogYWZ0ZXIsXG4gIGdsb2JhbC1ib3gtc2l6aW5nOiBjb250ZW50LWJveCxcbiAgZGVidWc6IChcbiAgICBpbWFnZTogaGlkZSxcbiAgICBjb2xvcjogcmdiYSgjNjZmLCAuMjUpLFxuICAgIG91dHB1dDogYmFja2dyb3VuZCxcbiAgICB0b2dnbGU6IHRvcCByaWdodCxcbiAgKSxcbikpO1xuXG5cbi8vIFZhbGlkIEtleXdvcmQgVmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFOiBET05UJ1QgVE9VQ0hcbiRzdXN5LWtleXdvcmRzOiAoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogc3RhdGljIGZsdWlkLFxuICBvdXRwdXQ6IGlzb2xhdGUgZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogbGVmdCBjZW50ZXIgcmlnaHQsXG4gIGZsb3c6IGx0ciBydGwsXG4gIGd1dHRlci1wb3NpdGlvbjogYmVmb3JlIGFmdGVyIHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljLFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94IGNvbnRlbnQtYm94LFxuICBzcGFuOiBmdWxsLFxuICBlZGdlOiBmaXJzdCBhbHBoYSBsYXN0IG9tZWdhIGZ1bGwsXG4gIHNwcmVhZDogbmFycm93IHdpZGUgd2lkZXIsXG4gIGd1dHRlci1vdmVycmlkZTogbm8tZ3V0dGVycyBuby1ndXR0ZXIsXG4gIHJvbGU6IG5lc3QsXG4gIGNsZWFyOiBicmVhayBub2JyZWFrLFxuICBkZWJ1ZyBpbWFnZTogc2hvdyBoaWRlIHNob3ctY29sdW1ucyBzaG93LWJhc2VsaW5lLFxuICBkZWJ1ZyBvdXRwdXQ6IGJhY2tncm91bmQgb3ZlcmxheSxcbik7XG5cblxuLy8gUGFyc2UgU3VzeSBLZXl3b3JkcyBhbmQgTWFwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNldHRpbmdzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gc3RyaW5nc1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IHN0cmluZyB7XG4gICAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkc3VzeS1rZXl3b3JkcyB7XG4gICAgICAgICAgQGlmIGluZGV4KCR2YWx1ZSwgJGl0ZW0pIHtcbiAgICAgICAgICAgICRfa2V5LXZhbHVlOiBhcHBlbmQoJGtleSwgJGl0ZW0pO1xuICAgICAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtc2V0KCRfcmV0dXJuLCAkX2tleS12YWx1ZS4uLik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAvLyBtYXBzXG4gICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IG1hcCB7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIENvbHVtbnMgJiBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWxheW91dChcbiAgJHNob3J0XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuICAkX2NvbHVtbnM6ICgpO1xuICAkX2d1dHRlcnM6IG51bGw7XG5cbiAgQGlmIG5vdCh1bml0bGVzcyhudGgobnRoKCRzaG9ydCwgMSksIDEpKSkge1xuICAgICRfZ3V0dGVyczogbnRoKCRzaG9ydCwgMSk7XG4gIH0gQGVsc2Uge1xuICAgICRfY29sdW1uczogKGNvbHVtbnM6IG50aCgkc2hvcnQsIDEpKTtcbiAgICAkX2d1dHRlcnM6IGlmKGxlbmd0aCgkc2hvcnQpID4gMSwgbnRoKCRzaG9ydCwgMiksICRfZ3V0dGVycyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkX2d1dHRlcnMpID09IGxpc3QgYW5kIGxlbmd0aCgkX2d1dHRlcnMpID4gMCB7XG4gICAgJF9ndXR0ZXJzOiAoXG4gICAgICBndXR0ZXJzOiBudGgoJF9ndXR0ZXJzLCAyKSAvIG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICAgY29sdW1uLXdpZHRoOiBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlcnM6IGlmKCRfZ3V0dGVycywgKGd1dHRlcnM6ICRfZ3V0dGVycyksICgpKTtcbiAgfVxuXG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfY29sdW1ucyk7XG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfZ3V0dGVycyk7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHcmlkL0NvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWdyaWQoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogcGFyc2Utc2V0dGluZ3MoJHNob3J0KTtcbiAgJF9sYXlvdXQ6ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gbnVtYmVyIG9yIGxpc3RcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IG9yIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICAgJF9sYXlvdXQ6IGFwcGVuZCgkX2xheW91dCwgJGl0ZW0pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY29udGFpbmVyOiAkaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9sYXlvdXQ6IGlmKGxlbmd0aCgkX2xheW91dCkgPiAwLCBwYXJzZS1sYXlvdXQoJF9sYXlvdXQpLCAkX2xheW91dCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkX3JldHVybiwgJF9sYXlvdXQpO1xufVxuXG5cbi8vIFBhcnNlIFNwYW5cbi8vIC0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zcGFuKFxuICAkc2hvcnQsXG4gICRrZXk6IHNwYW5cbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgICRfYXQ6IGluZGV4KCRzaG9ydCwgYXQpO1xuXG4gICAgQGlmICRfYXQge1xuICAgICAgJF9sb2NpOiAkX2F0ICsgMTtcbiAgICAgICRfbG9jYXRpb246IG50aCgkc2hvcnQsICRfbG9jaSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAobG9jYXRpb246ICRfbG9jYXRpb24pKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfYXQsIG51bGwpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9sb2NpLCBudWxsKTtcbiAgICB9XG5cbiAgICAkX2k6IDE7XG4gICAgJF9zcGFuOiAoKTtcblxuICAgIEB3aGlsZSAkX2kgPD0gbGVuZ3RoKCRzaG9ydCkge1xuICAgICAgJF90aGlzOiBudGgoJHNob3J0LCAkX2kpO1xuXG4gICAgICBAaWYgdHlwZS1vZigkX3RoaXMpID09IG51bWJlciB7XG4gICAgICAgICRfc3BhbjogYXBwZW5kKCRfc3BhbiwgJF90aGlzKTtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgIH0gQGVsc2UgaWYgJF90aGlzID09IG9mIHtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgICAgJF9pOiBsZW5ndGgoJHNob3J0KSArIDE7XG4gICAgICB9XG5cbiAgICAgICRfaTogJF9pICsgMTtcbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCRfc3BhbikgPiAwIHtcbiAgICAgICRfc3BhbjogaWYobGVuZ3RoKCRfc3BhbikgPT0gMSwgbnRoKCRfc3BhbiwgMSksICRfc3Bhbik7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJGtleTogJF9zcGFuKSk7XG4gICAgfVxuXG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgcGFyc2UtZ3JpZCgkc2hvcnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWd1dHRlcnMoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX2d1dHRlcnM6IHBhcnNlLXNwYW4oJHNob3J0LCBndXR0ZXItb3ZlcnJpZGUpO1xuICAkX3NwYW46IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJF9ndXR0ZXJzKTtcblxuICBAaWYgJF9zcGFuIGFuZCBub3QobWFwLWdldCgkX2d1dHRlcnMsIGNvbHVtbnMpKSB7XG4gICAgJF9jb250ZXh0OiAoKTtcbiAgICAkX25ldzogKCk7XG5cbiAgICBAZWFjaCAkaXRlbSBpbiAkX3NwYW4ge1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgJF9jb250ZXh0OiBhcHBlbmQoJF9jb250ZXh0LCAkaXRlbSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJF9uZXc6IGFwcGVuZCgkX25ldywgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICRfY29udGV4dDogcGFyc2UtZ3JpZCgkX2NvbnRleHQpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDAsIG51bGwsICRfbmV3KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAxLCBudGgoJF9uZXcsIDEpLCAkX25ldyk7XG4gICAgJF9uZXc6IChndXR0ZXItb3ZlcnJpZGU6IGlmKCRfbmV3ICE9ICRfc3BhbiwgJF9uZXcsICRfc3BhbikpO1xuXG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX25ldyk7XG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX2NvbnRleHQpO1xuICB9XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG4iLCIvLyBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09XG5cblxuLy8gVmFsaWRhdGUgQ29sdW1uIE1hdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1uLW1hdGgoXG4gICRtYXRoLFxuICAkY29sdW1uLXdpZHRoXG4pIHtcbiAgQGlmICRtYXRoID09IHN0YXRpYyBhbmQgbm90KCRjb2x1bW4td2lkdGgpIHtcbiAgICBAZXJyb3IgJ1N0YXRpYyBtYXRoIHJlcXVpcmVzIGEgdmFsaWQgY29sdW1uLXdpZHRoIHNldHRpbmcuJztcbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi13aWR0aDtcbn1cbiIsIi8vIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBTZXQgYSBuZXcgbGF5b3V0IHVzaW5nIGEgc2hvcnRoYW5kXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXlvdXQsICRpbnNwZWN0KTtcbn1cblxuXG4vLyBVc2UgR3JpZFxuLy8gLS0tLS0tLS1cbi8vIFVzZSBhbiBhcmJpdHJhcnkgbGF5b3V0IGZvciBhIHNlY3Rpb24gb2YgY29kZVxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIHdpdGgtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJG9sZCAgICAgIDogJHN1c3k7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qod2l0aC1sYXlvdXQsICRpbnNwZWN0KTtcblxuICBAY29udGVudDtcblxuICAkc3VzeTogJG9sZCAhZ2xvYmFsO1xufVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gYSBwYXJzZWQgbGF5b3V0IG1hcCBiYXNlZCBvbiBzaG9ydGhhbmQgc3ludGF4XG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBsYXlvdXQoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgQHJldHVybiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xufVxuXG5cbi8vIEdldCBMYXlvdXRcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIG5ldyBsYXlvdXQgYmFzZWQgb24gY3VycmVudCBhbmQgZ2l2ZW4gc2V0dGluZ3Ncbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBmdW5jdGlvbiBfZ2V0LWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRsYXlvdXQ6IGxheW91dCgkbGF5b3V0KTtcbiAgQHJldHVybiBpZigkY2xlYW4sICRsYXlvdXQsIF9zdXN5LWRlZXAtbWVyZ2UoJHN1c3ksICRsYXlvdXQpKTtcbn1cbiIsIi8vIFN1c3kgQm94IFNpemluZ1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBib3ggbW9kZWwgZ2xvYmFsbHkgb24gYWxsIGVsZW1lbnRzLlxuLy8gLSBbJGJveF06IGJvcmRlci1ib3ggfCBjb250ZW50LWJveFxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBnbG9iYWwtYm94LXNpemluZyhcbiAgJGJveDogc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpLFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdDogJGJveDtcblxuICBAaWYgJGluaGVyaXQge1xuICAgIEBhdC1yb290IHtcbiAgICAgICBodG1sIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgICAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cbiAgICAgfVxuICB9IEBlbHNlIHtcbiAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2xvYmFsLWJveC1zaXppbmcsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgdXBkYXRlLWJveC1tb2RlbCgkYm94KTtcbn1cblxuLy8gQm9yZGVyIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBIGxlZ2FjeSBzaG9ydGN1dC4uLlxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBib3JkZXItYm94LXNpemluZyhcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCwgJGluaGVyaXQpO1xufVxuXG4vLyBVcGRhdGUgQm94IE1vZGVsXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBVcGRhdGVzIGdsb2JhbCBib3ggbW9kZWwgc2V0dGluZ1xuQG1peGluIHVwZGF0ZS1ib3gtbW9kZWwoXG4gICRib3hcbikge1xuICBAaWYgJGJveCAhPSBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykge1xuICBAaW5jbHVkZSBzdXN5LXNldChnbG9iYWwtYm94LXNpemluZywgJGJveCk7XG4gIH1cbn1cbiIsIi8vIENvbnRleHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBOZXN0ZWQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBncmlkIGZvciBuZXN0ZWQgY29udGV4dC5cbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuQGZ1bmN0aW9uIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkY29udGV4dCAgICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkc3BhbiAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRjb250ZXh0KTtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGNvbnRleHQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcblxuICBAcmV0dXJuIHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xufVxuXG4vLyBOZXN0ZWQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFVzZSBhIHN1YnNldCBncmlkIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbi8vIC0gQGNvbnRlbnQgICA6IDxjb250ZW50PlxuQG1peGluIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRvbGQgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpO1xuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiBuZXN0ZWQoJGNvbnRleHQpKSkgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobmVzdGVkLCAkaW5zcGVjdCk7XG4gIEBjb250ZW50O1xuXG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6ICRvbGQpKSAhZ2xvYmFsO1xufVxuIiwiLy8gQmFja2dyb3VuZCBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IGZhbHNlO1xuXG5cbi8vIFNob3cgR3JpZC9zXG4vLyAtLS0tLS0tLS0tLVxuLy8gU2hvdyBncmlkIG9uIGFueSBlbGVtZW50IHVzaW5nIGVpdGhlciBiYWNrZ3JvdW5kIG9yIG92ZXJsYXkuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIHNob3ctZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3Q6ICRncmlkO1xuICAkX291dHB1dDogZGVidWctZ2V0KG91dHB1dCwgJGdyaWQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzaG93LWdyaWQsICRpbnNwZWN0KTtcbiAgQGlmICRfb3V0cHV0ID09IG92ZXJsYXkgYW5kIHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCkgIT0gaGlkZSB7XG4gICAgQGluY2x1ZGUgb3ZlcmxheS1ncmlkKCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvdy1ncmlkcyhcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRncmlkKTtcbn1cblxuLy8gQmFja2dyb3VuZCBHcmlkXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNob3cgYSBncmlkIGJhY2tncm91bmQgb24gYW55IGVsZW1lbnQuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIGJhY2tncm91bmQtZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGdyaWQ7XG4gICRfb3V0cHV0ICA6IGdldC1iYWNrZ3JvdW5kKCRncmlkKTtcblxuICBAaWYgbGVuZ3RoKCRfb3V0cHV0KSA+IDAge1xuICAgICRfZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpO1xuXG4gICAgJF9pbWFnZTogKCk7XG4gICAgQGVhY2ggJG5hbWUsICRsYXllciBpbiBtYXAtZ2V0KCRfb3V0cHV0LCBpbWFnZSkge1xuICAgICAgJF9kaXJlY3Rpb246IGlmKCRuYW1lID09IGJhc2VsaW5lLCB0byBib3R0b20sIHRvIHRvKCRfZmxvdykpO1xuICAgICAgJF9pbWFnZTogYXBwZW5kKCRfaW1hZ2UsIGxpbmVhci1ncmFkaWVudCgkX2RpcmVjdGlvbiwgJGxheWVyKSwgY29tbWEpO1xuICAgIH1cbiAgICAkX291dHB1dDogbWFwLW1lcmdlKCRfb3V0cHV0LCAoaW1hZ2U6ICRfaW1hZ2UpKTtcblxuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICAgIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChiYWNrZ3JvdW5kLWdyaWQsICRpbnNwZWN0KTtcbiAgfVxufVxuXG5cbi8vIE92ZXJsYXkgR3JpZFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBHZW5lcmF0ZSBhbiBpY29uIHRvIHRyaWdnZXIgZ3JpZC1vdmVybGF5cyBvbiBhbnkgZ2l2ZW4gZWxlbWVudHMuXG4vLyAkZ3JpZHMuLi4gIDogPHNlbGVjdG9yPiBbPHNldHRpbmdzPl0gWywgPHNlbGVjdG9yPl0qXG5AbWl4aW4gb3ZlcmxheS1ncmlkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGlmIG5vdCgkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHMpIHtcbiAgICBAYXQtcm9vdCBoZWFkIHsgQGluY2x1ZGUgb3ZlcmxheS1oZWFkKCRncmlkKTsgfVxuICAgIEBhdC1yb290IGhlYWQ6YmVmb3JlIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpob3ZlciB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlci1ob3ZlcjsgfVxuICAgICRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgaGVhZDpob3ZlciB+ICYsXG4gIGhlYWQ6aG92ZXIgfiBib2R5ICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLW92ZXJsYXktYmFzZTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlciB7XG4gIGNvbnRlbnQ6IFwifHx8XCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udDoge1xuICAgIGZhbWlseTogc2Fucy1zZXJpZjtcbiAgICBzaXplOiAxNnB4O1xuICAgIHdlaWdodDogYm9sZDtcbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXIgSG92ZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXItaG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuNSk7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgSGVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGhlYWQ+IHN0eWxlcyB0byBjcmVhdGUgZ3JpZCBvdmVybGF5IHRvZ2dsZVxuQG1peGluIG92ZXJsYXktaGVhZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRfdG9nZ2xlOiBkZWJ1Zy1nZXQodG9nZ2xlLCAkZ3JpZCk7XG4gICRfaG9yejogbnVsbDtcbiAgJF92ZXJ0OiBudWxsO1xuXG4gIEBlYWNoICRzaWRlIGluICRfdG9nZ2xlIHtcbiAgICAkX2hvcno6IGlmKCRzaWRlID09IGxlZnQgb3IgJHNpZGUgPT0gcmlnaHQsICRzaWRlLCAkX2hvcnopO1xuICAgICRfdmVydDogaWYoJHNpZGUgPT0gdG9wIG9yICRzaWRlID09IGJvdHRvbSwgJHNpZGUsICRfdmVydCk7XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICAjeyRfaG9yen06IDEwcHg7XG4gICN7JF92ZXJ0fTogMTBweDtcbiAgei1pbmRleDogOTk5O1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjI1KTtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gR3JpZCBPdmVybGF5IEJhc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmFzZSBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIG92ZXJsYXlcbkBtaXhpbiBncmlkLW92ZXJsYXktYmFzZSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICB6LWluZGV4OiA5OTg7XG59XG5cblxuLy8gR2V0IFN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLXN5bShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgICAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9ndXR0ZXJzICAgICAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGdyaWQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRncmlkKTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGdyaWQpO1xuXG4gICRfY29sb3IgICAgICAgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfdHJhbnMgICAgICAgICA6IHRyYW5zcGFyZW50O1xuICAkX2xpZ2h0ICAgICAgICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG5cbiAgJF9lbmQgICAgICAgICAgIDogMSArICRfZ3V0dGVycztcbiAgJF9hZnRlciAgICAgICAgIDogcGVyY2VudGFnZSgxLyRfZW5kKTtcbiAgJF9zdG9wcyAgICAgICAgIDogKCk7XG4gICRfc2l6ZSAgICAgICAgICA6IHNwYW4oMSAkZ3JpZCB3aWRlKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodDtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3BsaXQ6ICRfZ3V0dGVycy8yO1xuICAgICRfYmVmb3JlOiBwZXJjZW50YWdlKCRfc3BsaXQvJF9lbmQpO1xuICAgICRfYWZ0ZXI6IHBlcmNlbnRhZ2UoKDEgKyAkX3NwbGl0KS8kX2VuZCk7XG4gICAgJF9zdG9wczogJF90cmFucyAkX2JlZm9yZSwgJF9jb2xvciAkX2JlZm9yZSwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9XG5cbiAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICRfc2l6ZTogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkgKiAkX2VuZDtcbiAgfVxuXG4gICRfb3V0cHV0OiAoXG4gICAgaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSxcbiAgICBzaXplOiAkX3NpemUsXG4gICk7XG5cbiAgQHJldHVybiAkX291dHB1dDtcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEluc2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1pbnNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgU3BsaXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1zcGxpdChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRzdGFydCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuXG4gICAgJF9lbmQ6ICRzdGFydCArIHNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRfZW5kLCBjb21tYSk7XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIE91dHNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLW91dHNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfdHJhbnMgICA6IHRyYW5zcGFyZW50O1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGd1dHRlcjogZ2V0LXNwYW4td2lkdGgoZmlyc3QgJGxvY2F0aW9uICRncmlkKTtcblxuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuXG4gICAgICAkZ3V0dGVyOiAkX2xpZ2h0ICRndXR0ZXIsICRfdHJhbnMgJGd1dHRlciwgJF90cmFucyAkX2VuZDtcbiAgICAgICR0aGlzLXN0b3A6IGpvaW4oJHRoaXMtc3RvcCwgJGd1dHRlciwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtYXN5bShcbiAgJGdyaWRcbikge1xuICAkX3N0b3BzOiAoKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0taW5zaWRlKCRncmlkKTtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLXNwbGl0KCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tb3V0c2lkZSgkZ3JpZCk7XG4gIH1cblxuICBAcmV0dXJuIChpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpKTtcbn1cblxuXG4vLyBHZXQgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9zaG93ICAgIDogc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKTtcbiAgJF9yZXR1cm4gIDogKCk7XG5cbiAgQGlmICRfc2hvdyBhbmQgJF9zaG93ICE9ICdoaWRlJyB7XG4gICAgJF9jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICAkX3N5bTogaXMtc3ltbWV0cmljYWwoJF9jb2x1bW5zKTtcbiAgICAgICRfcmV0dXJuOiBpZigkX3N5bSwgZ2V0LWJhY2tncm91bmQtc3ltKCRncmlkKSwgZ2V0LWJhY2tncm91bmQtYXN5bSgkZ3JpZCkpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGNvbnRlbnQtYm94KSk7XG4gICAgfVxuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1jb2x1bW5zJ1xuICAgICAgYW5kIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoYmFzZS1saW5lLWhlaWdodClcbiAgICAgIGFuZCB0eXBlLW9mKCRiYXNlLWxpbmUtaGVpZ2h0KSA9PSAnbnVtYmVyJ1xuICAgICAgYW5kIG5vdCB1bml0bGVzcygkYmFzZS1saW5lLWhlaWdodCkge1xuICAgICAgJF9jb2xvcjogdmFyaWFibGUtZXhpc3RzKCdncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3InKTtcbiAgICAgICRfY29sb3I6IGlmKCRfY29sb3IsICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICMwMDApO1xuXG4gICAgICAkX2ltYWdlOiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSk7XG4gICAgICAkX3NpemU6IG1hcC1nZXQoJF9yZXR1cm4sIHNpemUpO1xuICAgICAgJF9iYXNlbGluZTogKGJhc2VsaW5lOiAoJF9jb2xvciAxcHgsIHRyYW5zcGFyZW50IDFweCkpO1xuICAgICAgJF9iYXNlbGluZS1zaXplOiAxMDAlICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoXG4gICAgICAgIGltYWdlOiBpZigkX2ltYWdlLCBtYXAtbWVyZ2UoJF9pbWFnZSwgJF9iYXNlbGluZSksICRfYmFzZWxpbmUpLFxuICAgICAgICBzaXplOiBpZigkX3NpemUsICgkX3NpemUsICRfYmFzZWxpbmUtc2l6ZSksICRfYmFzZWxpbmUtc2l6ZSksXG4gICAgICApKTtcblxuICAgICAgQGlmICRfc2hvdyA9PSAnc2hvdycge1xuICAgICAgICAkX2NsaXA6IG1hcC1nZXQoJF9yZXR1cm4sIGNsaXApO1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogam9pbigkX2NsaXAsIGJvcmRlci1ib3gsIGNvbW1hKSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJF9zaG93ID09ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICBAd2FybiAnUGxlYXNlIHByb3ZpZGUgYSAkYmFzZS1saW5lLWhlaWdodCB3aXRoIHRoZSBkZXNpcmVkIGhlaWdodCBhbmQgdW5pdHMnO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSkge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChmbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gR2V0IERlYnVnXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgdmFsdWUgb2YgYSBkZWJ1ZyBzZXR0aW5nXG4vLyAtICRrZXk6IDxzZXR0aW5nPlxuQGZ1bmN0aW9uIGRlYnVnLWdldChcbiAgJGtleSxcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGtleTogam9pbihkZWJ1ZywgJGtleSwgc3BhY2UpO1xuICBAcmV0dXJuIHN1c3ktZ2V0KCRrZXksICRncmlkKTtcbn1cbiIsIi8vIENvbnRhaW5lciBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBjb250YWluZXIgZWxlbWVudFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQG1peGluIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgICA6ICRsYXlvdXQ7XG4gICRsYXlvdXQgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcblxuICAkX3dpZHRoICAgICA6IGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG4gICRfanVzdGlmeSAgIDogcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKHN1c3ktZ2V0KGNvbnRhaW5lci1wb3NpdGlvbiwgJGxheW91dCkpO1xuICAkX3Byb3BlcnR5ICA6IGlmKHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpID09IHN0YXRpYywgd2lkdGgsIG1heC13aWR0aCk7XG5cbiAgJF9ib3ggICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkbGF5b3V0KTtcblxuICBAaWYgJF9ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJF9ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChjb250YWluZXIsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgZmxvYXQtY29udGFpbmVyKCRfd2lkdGgsICRfanVzdGlmeSwgJF9wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0KTtcbn1cblxuLy8gQ29udGFpbmVyIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gIEByZXR1cm4gZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbn1cblxuLy8gR2V0IENvbnRhaW5lciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIHRoZSBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWNvbnRhaW5lci13aWR0aChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0ICAgICAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX3dpZHRoICAgICAgICAgOiBzdXN5LWdldChjb250YWluZXIsICRsYXlvdXQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRsYXlvdXQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkbGF5b3V0KTtcblxuICBAaWYgbm90KCRfd2lkdGgpIG9yICRfd2lkdGggPT0gYXV0byB7XG4gICAgQGlmIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpIHtcbiAgICAgICRfY29sdW1ucyAgIDogc3VzeS1nZXQoY29sdW1ucywgJGxheW91dCk7XG4gICAgICAkX2d1dHRlcnMgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRsYXlvdXQpO1xuICAgICAgJF9zcHJlYWQgICAgOiBpZihpcy1zcGxpdCgkbGF5b3V0KSwgd2lkZSwgbmFycm93KTtcbiAgICAgICRfd2lkdGggICAgIDogc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSAqICRfY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF93aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfd2lkdGg7XG59XG5cbi8vIFBhcnNlIENvbnRhaW5lciBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZSB0aGUgJGNvbnRhaW5lci1wb3NpdGlvbiBpbnRvIG1hcmdpbiB2YWx1ZXMuXG4vLyAtIFskanVzdGlmeV0gICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IDxsZW5ndGg+IFs8bGVuZ3RoPl1cbkBmdW5jdGlvbiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oXG4gICRqdXN0aWZ5OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBjb250YWluZXItcG9zaXRpb24pXG4pIHtcbiAgJF9yZXR1cm46IGlmKCRqdXN0aWZ5ID09IGxlZnQsIDAsIGF1dG8pIGlmKCRqdXN0aWZ5ID09IHJpZ2h0LCAwLCBhdXRvKTtcblxuICBAaWYgbm90KGluZGV4KGxlZnQgcmlnaHQgY2VudGVyLCAkanVzdGlmeSkpIHtcbiAgICAkX3JldHVybjogbnRoKCRqdXN0aWZ5LCAxKTtcbiAgICAkX3JldHVybjogJF9yZXR1cm4gaWYobGVuZ3RoKCRqdXN0aWZ5KSA+IDEsIG50aCgkanVzdGlmeSwgMiksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIElzb2xhdGlvbiBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuXG4vLyBJc29sYXRlIFtNaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGlzb2xhdGlvbiBhcyBhbiBvdmVycmlkZS5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBtaXhpbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpbnNwZWN0OiAkaXNvbGF0ZTtcblxuICAkb3V0cHV0OiAoXG4gICAgcHVzaDogaXNvbGF0ZSgkaXNvbGF0ZSksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGlzb2xhdGUpLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChpc29sYXRlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGlzb2xhdGUtb3V0cHV0KCRvdXRwdXQuLi4pO1xufVxuXG5cbi8vIElzb2xhdGUgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYW4gaXNvbGF0aW9uIG9mZnNldCB3aWR0aC5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBmdW5jdGlvbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpc29sYXRlOiBwYXJzZS1zcGFuKCRpc29sYXRlKTtcbiAgJGlzb2xhdGlvbjogc3VzeS1nZXQoc3BhbiwgJGlzb2xhdGUpO1xuXG4gIEBpZiAkaXNvbGF0aW9uIGFuZCBub3QoZ2V0LWxvY2F0aW9uKCRpc29sYXRlKSkge1xuICAgICRuZXc6IChcbiAgICAgIHNwYW46IG51bGwsXG4gICAgICBsb2NhdGlvbjogJGlzb2xhdGlvbixcbiAgICApO1xuICAgICRpc29sYXRlOiBtYXAtbWVyZ2UoJGlzb2xhdGUsICRuZXcpO1xuICB9XG5cbiAgQHJldHVybiBnZXQtaXNvbGF0aW9uKCRpc29sYXRlKTtcbn1cblxuXG4vLyBHZXQgSXNvbGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGhcbi8vIC0gJGlucHV0OiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1pc29sYXRpb24oXG4gICRpbnB1dFxuKSB7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRpbnB1dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGlucHV0KTtcbiAgJHdpZHRoICAgICAgOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyIGFuZCBub3QodW5pdGxlc3MoJGxvY2F0aW9uKSkge1xuICAgICR3aWR0aDogJGxvY2F0aW9uO1xuICB9IEBlbHNlIGlmICRsb2NhdGlvbiB7XG4gICAgJHB1c2g6ICRsb2NhdGlvbiAtIDE7XG4gICAgQGlmICRwdXNoID4gMCB7XG4gICAgICAkcHVzaDogbWFwLW1lcmdlKCRpbnB1dCwgKFxuICAgICAgICBzcGFuOiAkcHVzaCxcbiAgICAgICAgbG9jYXRpb246IDEsXG4gICAgICAgIHNwcmVhZDogd2lkZSxcbiAgICAgICkpO1xuICAgICAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkcHVzaCk7XG4gICAgfVxuICB9XG5cbiAgQGlmIHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGlucHV0KSA9PSBzcGxpdFxuICAgICAgYW5kIHN1c3ktZ2V0KGd1dHRlcnMsICRpbnB1dCkgPiAwIHtcbiAgICAkd2lkdGg6IGlmKCR3aWR0aCA9PSBudWxsLCBndXR0ZXJzKCRpbnB1dCksICR3aWR0aCArIGd1dHRlcnMoJGlucHV0KSk7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aCBvciAwO1xufVxuIiwiLy8gR2FsbGVyeSBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIEdhbGxlcnlcbi8vIC0tLS0tLS1cbi8vIENyZWF0ZSBhbiBpc29sYXRlZCBnYWxsZXJ5XG4vLyAtICRzcGFuICAgICAgICA6IDxzcGFuPlxuLy8gLSBbJHNlbGVjdG9yXSAgOiBjaGlsZCB8IG9mLXR5cGVcbkBtaXhpbiBnYWxsZXJ5KFxuICAkc3BhbixcbiAgJHNlbGVjdG9yOiBjaGlsZFxuKSB7XG4gICRpbnNwZWN0ICAgIDogJHNwYW47XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRzcGFuICAgICAgIDogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246IDEpKTtcblxuICAkbiAgICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkY29udGV4dCAgICAgIDogc3VzeS1jb3VudCgkY29sdW1ucyk7XG4gICRmbG93ICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG5cbiAgJGluc2lkZSAgICAgICA6IGlzLWluc2lkZSgkc3Bhbik7XG4gICRmcm9tICAgICAgICAgOiBmcm9tKCRmbG93KTtcbiAgJGxpbmUgICAgICAgICA6IGZsb29yKCRjb250ZXh0IC8gJG4pO1xuICAkc3ltbWV0cmljYWwgIDogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aCAgICAgICAgICAgICA6IG51bGwsXG4gICAgZmxvYXQgICAgICAgICAgICAgOiBmcm9tLFxuICAgIG1hcmdpbi1iZWZvcmUgICAgIDogbnVsbCxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IG51bGwsXG4gICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICApO1xuXG4gIEBpZiAkaW5zaWRlIHtcbiAgICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAoXG4gICAgICBwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKSxcbiAgICAgIHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKSxcbiAgICApKTtcbiAgfVxuXG4gIEBpZiAkc3ltbWV0cmljYWwge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAod2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKSkpO1xuICB9XG5cbiAgJGJveCAgICAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGdsb2JhbC1ib3ggICA6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSA9PSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2FsbGVyeSwgJGluc3BlY3QpO1xuXG4gIC8vIENvbGxlY3RpdmUgT3V0cHV0XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggb3IgKCRpbnNpZGUgYW5kIG5vdCgkYm94KSBhbmQgbm90KCRnbG9iYWwtYm94KSkge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogYm9yZGVyLWJveCkpO1xuICB9IEBlbHNlIGlmICRib3ggPT0gY29udGVudC1ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogY29udGVudC1ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIC8vIEluZGl2aWR1YWwgTG9vcFxuICBAZm9yICRpdGVtIGZyb20gMSB0aHJvdWdoICRsaW5lIHtcbiAgICAkbnRoOiAnI3skbGluZX1uICsgI3skaXRlbX0nO1xuICAgICY6bnRoLSN7JHNlbGVjdG9yfSgjeyRudGh9KSB7XG4gICAgICAvLyBJbmRpdmlkdWFsIFByZXBcbiAgICAgICRvdXRwdXQ6IChcbiAgICAgICAgd2lkdGggICAgICAgICAgICAgOiBpZigkc3ltbWV0cmljYWwsIG51bGwsIGdldC1zcGFuLXdpZHRoKCRzcGFuKSksXG4gICAgICAgIGZsb2F0ICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgbWFyZ2luLWJlZm9yZSAgICAgOiBnZXQtaXNvbGF0aW9uKCRzcGFuKSxcbiAgICAgICAgbWFyZ2luLWFmdGVyICAgICAgOiAtMTAwJSxcbiAgICAgICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgICAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICAgICApO1xuXG4gICAgICAvLyBJbmRpdmlkdWFsIE91dHB1dFxuICAgICAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgICAgIEBpZiBnZXQtZWRnZSgkc3BhbikgPT0gZmlyc3Qge1xuICAgICAgICBAaW5jbHVkZSBicmVhaztcbiAgICAgICAgQGluY2x1ZGUgZmlyc3QoJHNwYW4pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgTG9jYXRpb24gSW5jcmVtZW50XG4gICAgICAkbG9jYXRpb246IGdldC1sb2NhdGlvbigkc3BhbikgKyAkbjtcbiAgICAgICRsb2NhdGlvbjogaWYoJGxvY2F0aW9uID4gJGNvbnRleHQsIDEsICRsb2NhdGlvbik7XG4gICAgICAkc3BhbjogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246ICRsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZ3V0dGVyIDogZ3V0dGVyKCRzcGFuKTtcbiAgJHNwYW4gICA6IHNwYW4oJHNwYW4pO1xuICAkd2lkdGggIDogaWYoJHNwbGl0IGFuZCAkZ3V0dGVyLCAkc3BhbiArICRndXR0ZXIsICRzcGFuKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNxdWlzaCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmUoJHByZSk7XG4gIEBpbmNsdWRlIHBvc3QoJHBvc3QpO1xufVxuIiwiLy8gUGFkZGluZyBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmVmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFN1ZmZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzdWZmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHN1ZmZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUGFkXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBwYWQoXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocGFkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZWZpeCgkcHJlKTtcbiAgQGluY2x1ZGUgc3VmZml4KCRwb3N0KTtcblxufVxuIiwiLy8gQmxlZWQgU3ludGF4XG4vLyA9PT09PT09PT09PT1cblxuLy8gQmxlZWRcbi8vIC0tLS0tXG4vLyBBZGQgbmVnYXRpdmUgbWFyZ2lucywgYW5kIGVxdWFsIHBvc2l0aXZlIHBhZGRpbmcgdG8gY3JlYXRlIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQoXG4gICRibGVlZDogMCBndXR0ZXIoKVxuKSB7XG4gICRpbnNwZWN0ICA6ICRibGVlZDtcbiAgJG91dHB1dCAgIDogZ2V0LWJsZWVkKCRibGVlZCk7XG5cbiAgQGlmIHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSBjb250ZW50LWJveCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKChib3gtc2l6aW5nOiBjb250ZW50LWJveCksICRvdXRwdXQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJsZWVkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuXG4vLyBCbGVlZC14XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgaG9yaXpvbnRhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXgoXG4gICRibGVlZDogZ3V0dGVyKClcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAyKSAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXggb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEJsZWVkLXlcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciB2ZXJ0aWNhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXkoXG4gICRibGVlZDogaWYoZnVuY3Rpb24tZXhpc3RzKHJoeXRobSksIHJoeXRobSgxKSwgMWVtKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwIG50aCgkdHJibCwgMikgMCkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteSBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gR2V0IEJsZWVkXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBibGVlZCBvdXRwdXQgdmFsdWVzXG4vLyAtICRibGVlZDogPHNwYW4+XG5AZnVuY3Rpb24gZ2V0LWJsZWVkKFxuICAkYmxlZWRcbikge1xuICAkYmxlZWQgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJGJsZWVkKSk7XG4gICR0cmJsICAgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG4gICRzaG9ydCAgICA6IG51bGw7XG4gICRvdXRwdXQgICA6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR0cmJsKSB7XG4gICAgJHRoaXM6IG50aCgkdHJibCwgJGkpO1xuICAgICRuZXc6ICgpO1xuICAgICRtYXJnaW46IG51bGw7XG4gICAgJHBhZGRpbmc6IG51bGw7XG4gICAgJHBhZGRpbmcteDogbnVsbDtcblxuICAgIEBpZiAkdGhpcyA+IDAge1xuICAgICAgJHRoaXM6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAkdGhpcykpO1xuICAgICAgJG1hcmdpbjogc3BhbigkdGhpcyk7XG4gICAgICAkcGFkZGluZzogJG1hcmdpbjtcbiAgICAgICRwYWRkaW5nLXg6ICRwYWRkaW5nO1xuICAgIH1cblxuICAgIEBpZiAkbWFyZ2luIGFuZCAkbWFyZ2luID4gMCB7XG4gICAgICAkbWFyZ2luOiAtICRtYXJnaW47XG5cbiAgICAgIEBpZiBpcy1pbnNpZGUoJHRoaXMpIHtcbiAgICAgICAgJGd1dHRlcjogZ3V0dGVyKCR0aGlzKTtcbiAgICAgICAgJGpvaW46IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHBhZGRpbmcsICRndXR0ZXIpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICRwYWRkaW5nLXg6IGlmKCRqb2luIGFuZCAkcGFkZGluZyA+IDAsICRwYWRkaW5nICsgJGd1dHRlciwgJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAyIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDMge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gNCB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAkbmV3KTtcbiAgfVxuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG91dHB1dCB7XG4gICAgJG91dHB1dDogaWYoJHZhbHVlID09IDAsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJHByb3A6IG51bGwpKSwgJG91dHB1dCk7XG4gIH1cblxuICBAcmV0dXJuIGJsZWVkLXNob3J0aGFuZCgkb3V0cHV0KTtcbn1cblxuLy8gQmxlZWQgU2hvcnRoYW5kXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENvbnZlcnQgYmxlZWQgb3V0cHV0IGludG8gc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuXG4vLyAtICRibGVlZDogPG91dHB1dCBtYXA+XG5AZnVuY3Rpb24gYmxlZWQtc2hvcnRoYW5kKFxuICAkYmxlZWRcbikge1xuICAkbWFyZ2luOiAoKTtcbiAgJHBhZGRpbmc6ICgpO1xuICAkcmV0dXJuOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJsZWVkIHtcbiAgICBAaWYgc3RyLWluZGV4KCRrZXksIG1hcmdpbikge1xuICAgICAgJG1hcmdpbjogbWFwLW1lcmdlKCRtYXJnaW4sICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIGlmIHN0ci1pbmRleCgka2V5LCBwYWRkaW5nKSA+IDAge1xuICAgICAgJHBhZGRpbmc6IG1hcC1tZXJnZSgkcGFkZGluZywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICRwcm9wczogKFxuICAgIG1hcmdpbjogJG1hcmdpbixcbiAgICBwYWRkaW5nOiAkcGFkZGluZyxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJG1hcCBpbiAkcHJvcHMge1xuICAgICRmb3VyOiBpZihsZW5ndGgobWFwLWtleXMoJG1hcCkpID09IDQsIHRydWUsIGZhbHNlKTtcbiAgICAkbnVsbDogaWYoaW5kZXgobWFwLXZhbHVlcygkbWFwKSwgbnVsbCksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkZm91ciBhbmQgbm90KCRudWxsKSB7XG4gICAgICAkdG9wOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS10b3AnKTtcbiAgICAgICRyaWdodDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tcmlnaHQnKTtcbiAgICAgICRib3R0b206IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWJvdHRvbScpO1xuICAgICAgJGxlZnQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWxlZnQnKTtcblxuICAgICAgJHRiOiBpZigkdG9wID09ICRib3R0b20sICR0b3AsIG51bGwpO1xuICAgICAgJHJsOiBpZigkcmlnaHQgPT0gJGxlZnQsICRyaWdodCwgbnVsbCk7XG4gICAgICAkYWxsOiBpZigkdGIgPT0gJHJsLCAkdGIsIG51bGwpO1xuXG4gICAgICAkbmV3OiBpZigkYWxsLCAkYWxsLCBudWxsKTtcblxuICAgICAgQGlmIG5vdCgkbmV3KSB7XG4gICAgICAgIEBpZiAkdGIgYW5kICRybCB7XG4gICAgICAgICAgJG5ldzogJHRiICRybDtcbiAgICAgICAgfSBAZWxzZSBpZiAkcmwge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJsICRib3R0b207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJpZ2h0ICRib3R0b20gJGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmFtZTogJG5ldykpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICRtYXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cbiIsIi8qXG4qIFNjdXQsIGEgY29sbGVjdGlvbiBvZiBTYXNzIHV0aWxpdGllc1xuKiB0byBlYXNlIGFuZCBpbXByb3ZlIG91ciBpbXBsZW1lbnRhdGlvbnMgb2YgY29tbW9uIHN0eWxlLWNvZGUgcGF0dGVybnMuXG4qIHYxLjQuMFxuKiBEb2NzIGF0IGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0XG4qL1xuXG5AbWl4aW4gc2N1dC1jbGVhcmZpeCB7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNsZWFyZml4IHtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtdW5zdHlsZWQoXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCk7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1mbG9hdGVkIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJGRpcjogbGVmdCxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xuXG4gICYgPiBsaSB7XG4gICAgZmxvYXQ6ICRkaXI7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tI3skZGlyfTogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtZmxvYXRlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkO1xufVxuXG5AZnVuY3Rpb24gc2N1dC1hdXRvT3JWYWx1ZSAoJHZhbCkge1xuICBAaWYgJHZhbCA9PSBhIG9yICR2YWwgPT0gYXV0byB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtY29vcmRzIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICAkdG9wOiBudGgoJGNvb3JkaW5hdGVzLCAxKTtcbiAgJHJpZ2h0OiBudGgoJGNvb3JkaW5hdGVzLCAyKTtcbiAgJGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyk7XG4gICRsZWZ0OiBudGgoJGNvb3JkaW5hdGVzLCA0KTtcblxuICBAaWYgJHRvcCAhPSBuIHtcbiAgICB0b3A6IHNjdXQtYXV0b09yVmFsdWUoJHRvcCk7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBuIHtcbiAgICByaWdodDogc2N1dC1hdXRvT3JWYWx1ZSgkcmlnaHQpO1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG4ge1xuICAgIGJvdHRvbTogc2N1dC1hdXRvT3JWYWx1ZSgkYm90dG9tKTtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbiB7XG4gICAgbGVmdDogc2N1dC1hdXRvT3JWYWx1ZSgkbGVmdCk7XG4gIH1cblxufVxuQGZ1bmN0aW9uIHNjdXQtc3RyaXAtdW5pdCAoXG4gICRudW1cbikge1xuXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1lbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtZW0gKFxuICAkcGl4ZWxzLFxuICAkYmFzZTogJHNjdXQtZW0tYmFzZVxuKSB7XG5cbiAgLy8gJGJhc2UgY291bGQgYmUgaW4gZW0gb3IgcHggKG5vIHVuaXQgPSBweCkuXG4gIC8vIEFkanVzdCBhY2NvcmRpbmdseSB0byBjcmVhdGUgYSAkZGl2aXNvciB0aGF0XG4gIC8vIHNlcnZlcyBhcyBjb250ZXh0IGZvciAkcGl4ZWxzLlxuICAkbXVsdGlwbGllcjogaWYodW5pdCgkYmFzZSkgPT0gZW0sIDE2LCAxKTtcbiAgJGRpdmlzb3I6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZSkgKiAkbXVsdGlwbGllcjtcblxuICAkZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1lbXM6IChzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkZGl2aXNvcikgKiAxZW07XG4gICAgJGVtLXZhbHM6IGFwcGVuZCgkZW0tdmFscywgJHZhbC1pbi1lbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZW0tdmFscztcbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1yZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LXJlbSAoXG4gICRwaXhlbHNcbikge1xuXG4gICRyZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1yZW1zOiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkc2N1dC1yZW0tYmFzZSAqIDFyZW07XG4gICAgJHJlbS12YWxzOiBhcHBlbmQoJHJlbS12YWxzLCAkdmFsLWluLXJlbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcmVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkcmVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRyZW0tdmFscztcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1ib3JkZXIgKFxuICAkc3R5bGUsXG4gICRzaWRlczogbiB5XG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaWRlcykgPT0gMiB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaWRlcykgPT0gNCB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDMpICE9IG4ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgNCkgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlNjdXQtYm9yZGVyIHJlcXVpcmVzIGEgJHNpZGVzIGFyZ3VtZW50IG9mIDIgb3IgNCB2YWx1ZXMuXCJcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jaXJjbGUgKFxuICAkc2l6ZSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBAaWYgJGNvbG9yID09IGluaGVyaXQge1xuICAgIC8vIElmIHVzZXIgd2FudHMgdG8gaW5oZXJpdCB0aGUgY29sb3IsXG4gICAgLy8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBib3JkZXJcbiAgICAvLyBjb2xvciBkZWZhdWx0cyB0byB0aGUgdGV4dCBjb2xvciBvZiB0aGUgZWxlbWVudC5cbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGhlaWdodDogMDtcbiAgICB3aWR0aDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHVzZSBiYWNrZ3JvdW5kLWNvbG9yLlxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jb2xvci1zd2FwIChcbiAgJG9mZixcbiAgJG9uLFxuICAkZHVyYXRpb246IDAsXG4gICRiZzogZmFsc2Vcbikge1xuXG4gICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IG51bGw7XG4gICRvZmYtaXMtbGlzdDogdHlwZS1vZigkb2ZmKSA9PSBsaXN0O1xuICAkb24taXMtbGlzdDogdHlwZS1vZigkb24pID09IGxpc3Q7XG5cbiAgLy8gSWYgJG9mZiBJUyBhIGxpc3QsXG4gIC8vIGFzc2lnbiBjb2xvciBhbmQgYmFja2dyb3VuZC1jb2xvci5cbiAgQGlmICRvZmYtaXMtbGlzdCB7XG4gICAgY29sb3I6IG50aCgkb2ZmLCAxKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9mZiwgMik7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvciwgY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBUUlVFLFxuICAvLyBhc3NpZ24gYmFja2dyb3VuZC1jb2xvci5cbiAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9mZi1pcy1saXN0KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgRkFMU0UsXG4gIC8vIGFzc2lnbiBjb2xvci5cbiAgQGVsc2Uge1xuICAgIGNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGNvbG9yO1xuICB9XG5cbiAgLy8gT25seSBzZXQtdXAgdHJhbnNpdGlvbiBpZiAkZHVyYXRpb24gIT0gMC5cbiAgQGlmICRkdXJhdGlvbiAhPSAwIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzO1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuXG4gICAgLy8gJG9uIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgJG9mZiwgYWJvdmUuXG4gICAgQGlmICRvbi1pcy1saXN0IHtcbiAgICAgIGNvbG9yOiBudGgoJG9uLCAxKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb24sIDIpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvbi1pcy1saXN0KSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb247XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgY29sb3I6ICRvbjtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtaGQtYnAgKFxuICAkcmF0aW86IDEuM1xuKSB7XG5cbiAgQG1lZGlhICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAoJHJhdGlvIC8gMSkpLFxuICAgICAgICAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgICAgICAgIChtaW4tcmVzb2x1dGlvbjogKHJvdW5kKDk2ICogJHJhdGlvKSAqIDFkcGkpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oaWRlLXZpc3VhbGx5IHtcblxuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcblxufVxuXG4lc2N1dC1oaWRlLXZpc3VhbGx5IHtcbiAgQGluY2x1ZGUgc2N1dC1oaWRlLXZpc3VhbGx5O1xufVxuQG1peGluIHNjdXQtaW1hZ2UtcmVwbGFjZSB7XG5cbiAgdGV4dC1pbmRlbnQ6IDEwMiU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG5cbn1cblxuJXNjdXQtaW1hZ2UtcmVwbGFjZSB7XG4gIEBpbmNsdWRlIHNjdXQtaW1hZ2UtcmVwbGFjZTtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LXJlbSBhbmQgc2N1dC1zdHJpcC11bml0XG5cbkBtaXhpbiBzY3V0LXJlbS1mYWxsYmFjayAoXG4gICRwaXhlbHMsXG4gICRwcm9wZXJ0eTogZm9udC1zaXplXG4pIHtcblxuICAkcHgtdmFsczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXB4OiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgKiAxcHg7XG4gICAgJHB4LXZhbHM6IGFwcGVuZCgkcHgtdmFscywgJHZhbC1pbi1weCk7XG4gIH1cbiAgJHJlbS12YWxzOiBzY3V0LXJlbSgkcGl4ZWxzKTtcblxuICAjeyRwcm9wZXJ0eX06ICRweC12YWxzO1xuICAjeyRwcm9wZXJ0eX06ICRyZW0tdmFscztcblxufVxuQG1peGluIHNjdXQtcmVzZXQtYm9yZGVyLWJveCB7XG4gIC8vIE1ha2UgZXZlcnl0aGluZyBhIGJvcmRlci1ib3gsIGJlY2F1c2Ugd2h5IG5vdD9cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1hbnRpYWxpYXMge1xuICAvLyBBbnRpYWxpYXMhXG4gIGJvZHkge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXNlbWFudGljaXplIHtcbiAgLy8gTWFrZSBoZWFkZXJzIGFuZCA8Yj4gc2VtYW50aWMsIG5vdCBwcmVzZW50YXRpb25hbC5cbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wb2ludGVyIHtcbiAgLy8gQ2xpY2thYmxlIGZvcm0gZWxlbWVudHMgc2hvdWxkIGhhdmUgYSBwb2ludGVyLlxuICBsYWJlbCxcbiAgc2VsZWN0LFxuICBvcHRpb24sXG4gIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZvcm0ge1xuICBmaWVsZHNldCB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWJ1dHRvbiB7XG4gIC8vIFJlc2V0IGRlZmF1bHQgYnV0dG9uIHN0eWxlcywgd2hpY2ggYXJlIG5ldmVyIHVzZWQuXG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdLFxuICBbdHlwZT1cInJlc2V0XCJdIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogYXV0bztcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBhcmFncmFwaCB7XG4gIC8vIFNvbWUgcGFyYWdyYXBoIG1hcmdpbnMganVzdCBnZXQgaW4gdGhlIHdheS5cbiAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LW1lZGlhIHtcbiAgLy8gWW91IHdhbnQgdGhlc2UgZWxlbWVudHMgZmx1aWQsIHByb2JhYmx5LlxuICBpbWcsXG4gIHZpZGVvIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZpZ3VyZSB7XG4gIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbnMuXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8vIENhbGwgdGhlbSBhbGwsIG1pbnVzIGV4Y2x1c2lvbnMhXG5AbWl4aW4gc2N1dC1yZXNldCAoJGV4Y2x1ZGU6IGZhbHNlKSB7XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJvcmRlci1ib3gpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1ib3JkZXItYm94O1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGFudGlhbGlhcykpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWFudGlhbGlhcztcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBzZW1hbnRpY2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXNlbWFudGljaXplO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBvaW50ZXIpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wb2ludGVyO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZvcm0pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1mb3JtO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJ1dHRvbikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJ1dHRvbjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwYXJhZ3JhcGgpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wYXJhZ3JhcGg7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgbWVkaWEpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1tZWRpYTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmaWd1cmUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1maWd1cmU7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtc2VsZWN0ZWQgKFxuICAkYWN0aXZlOiBmYWxzZVxuKSB7XG5cbiAgQGlmICRhY3RpdmUge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtdHJpYW5nbGUgKFxuICAkZGlyZWN0aW9uOiByaWdodCxcbiAgJHNpemU6IDAuNzVlbSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIC8vIEZvciBpbXByb3ZlZCBhcHBlYXJhbmNlIGluIHNvbWUgV2Via2l0IGJyb3dzZXJzXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcblxuICAvLyBTZXQgdXAgc29tZSB2YXJpYWJsZXNcbiAgJHdpZHRoOiBudWxsO1xuICAkaGVpZ2h0OiBudWxsO1xuICAkYm9yZGVyLXdpZHRoczogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gbGlzdCB7XG4gICAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR3aWR0aDogJHNpemU7XG4gICAgJGhlaWdodDogJHNpemU7XG4gIH1cblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICAvLyBGb3IgdXAgYW5kIGRvd24sIHdpZHRoIGdldHMgdHdvIGJvcmRlcnMgYnV0IGhlaWdodCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgc2Vjb25kIGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICRoZWlnaHQgKCR3aWR0aCAvIDIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgLy8gRm9yIHJpZ2h0IGFuZCBsZWZ0LCBoZWlnaHQgZ2V0cyB0d28gYm9yZGVycyBidXQgd2lkdGggb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIGZpcnN0IGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgJHdpZHRoO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBGb3IgcmlnaHQgdHJpYW5nbGVzICh0aGUgcmVzdCksIGJvdGggc2lkZXMgZ2V0IHR3byBib3JkZXJzLFxuICAgIC8vIHNvIGRpdmlkZSBib3RoIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAoJHdpZHRoIC8gMik7XG4gIH1cblxuICBib3JkZXItd2lkdGg6ICRib3JkZXItd2lkdGhzO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG5cbiAgLy8gU1RBTkRBUkQgVFJJQU5HTEVTXG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cblxuICAvLyBDT1JORVIgVFJJQU5HTEVTXG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdG9wLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdHJpYW5nbGUge1xuICBAaW5jbHVkZSBzY3V0LXRyaWFuZ2xlO1xufVxuQG1peGluIHNjdXQtY2VudGVyLWFic29sdXRlbHkgKFxuICAkZGltZW5zaW9uc1xuKSB7XG5cbiAgJHdpZHRoOiBudGgoJGRpbWVuc2lvbnMsIDEpO1xuICAkaGVpZ2h0OiBudGgoJGRpbWVuc2lvbnMsIDIpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJHdpZHRoICE9IG4ge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAoLSR3aWR0aCAvIDIpO1xuICB9XG5cbiAgQGlmICRoZWlnaHQgIT0gbiB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6ICgtJGhlaWdodCAvIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1ibG9jayAoXG4gICRtYXgtd2lkdGg6IGZhbHNlXG4pIHtcblxuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBAaWYgJG1heC13aWR0aCB7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICB9XG5cbn1cblxuJXNjdXQtY2VudGVyLWJsb2NrIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItYmxvY2s7XG59XG5cbkBtaXhpbiBzY3V0LWNlbnRlci10cmFuc2Zvcm0gKFxuICAkYXhpczogZmFsc2UgLy8gb3IgeCBvciB5XG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICRheGlzICE9IHgge1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgfVxuXG4gIEBpZiAkYXhpcyAhPSB5IHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgJHRyYW5zbGF0ZS12YWw6IG51bGw7XG5cbiAgQGlmIG5vdCgkYXhpcykge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geCB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIC1tcy10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICB0cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXgge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeCk7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuQG1peGluIHNjdXQtZmlsbCAoXG4gICR3aWR0aC1oZWlnaHQ6IGZhbHNlXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgQGlmICR3aWR0aC1oZWlnaHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtZmlsbCB7XG4gIEBpbmNsdWRlIHNjdXQtZmlsbDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtY3VzdG9tIChcbiAgJGNvbnRlbnQ6IFwiXFwyMDIyXCIsXG4gICRtYXJrZXItd2lkdGg6IDAuNzVlbSxcbiAgJHBhZDogMCxcbiAgJG5vLW1hcmdpbjogZmFsc2Vcbikge1xuXG4gICRjb250ZW50LXZhbDogbnVsbDtcbiAgJGNvdW50ZXI6IGluZGV4KCRjb250ZW50LCBjb3VudCk7XG4gIEBpZiAkY291bnRlciB7XG4gICAgQGlmIGxlbmd0aCgkY29udGVudCkgPT0gMyB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyLCBudGgoJGNvbnRlbnQsIDMpKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAyIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICRjb250ZW50LXZhbDogJGNvbnRlbnQ7XG4gIH1cblxuICBwYWRkaW5nLWxlZnQ6ICRtYXJrZXItd2lkdGggKyAkcGFkO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gICYgPiBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiAkY291bnRlciB7XG4gICAgICBjb3VudGVyLWluY3JlbWVudDogc2N1dGxpc3Rjb3VudGVyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkY29udGVudC12YWw7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IC0kbWFya2VyLXdpZHRoO1xuICAgICAgd2lkdGg6ICRtYXJrZXItd2lkdGg7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC1mbG9hdGVkYCwgd2hpY2ggZGVwZW5kcyBpbiB0dXJuIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1kaXZpZGVkIChcbiAgJGRpdmlkZXI6IFwifFwiLFxuICAkc3BhY2U6IDAuNWVtLFxuICAkZGlyOiBsZWZ0LFxuICAkaGVpZ2h0OiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQoJGRpcjogJGRpciwgJG5vLW1hcmdpbjogJG5vLW1hcmdpbik7XG5cbiAgJHBzZXVkbzogaWYoJGRpciA9PSBsZWZ0LCAnYmVmb3JlJywgJ2FmdGVyJyk7XG5cbiAgLy8gSWYgYW4gZXhwbGljaXQgaGVpZ2h0IGlzIHBhc3NlZCxcbiAgLy8gdGhpbmdzIGFyZSBkaWZmZXJlbnQ6IEFsbCA8bGk+c1xuICAvLyBuZWVkIHRoZSBwc2V1ZG8tZWxlbWVudCAodG8gZm9yY2UgaGVpZ2h0KSxcbiAgLy8gYnV0IHRoZSBmaXJzdCdzIG11c3QgYmUgaGlkZGVuLlxuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICAmID4gbGkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICAmID4gbGk6I3skcHNldWRvfSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgJiA+IGxpOmZpcnN0LWNoaWxkOiN7JHBzZXVkb30ge1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gICYgPiBsaSArIGxpOiN7JHBzZXVkb30ge1xuICAgIEBpZiBub3QoJGhlaWdodCkge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjZTtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtYmFyIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQ7XG59XG5cbiVzY3V0LWxpc3QtYnJlYWRjcnVtYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKFwiL1wiKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWlubGluZSAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtaW5saW5lO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtcHVuY3R1YXRlZCAoXG4gICRkaXZpZGVyOiBcIiwgXCIsXG4gICRkaXNwbGF5OiBpbmxpbmUsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6ICRkaXNwbGF5O1xuICAgICY6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWNvbW1hIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXB1bmN0dWF0ZWQ7XG59XG5AbWl4aW4gc2N1dC1tYXJnaW4gKFxuICAkbWFyZ2luXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDEgYW5kICRtYXJnaW4gIT0gbiB7XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMiB7XG4gICAgJG1hcmdpbi15OiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgQGlmICRtYXJnaW4teSAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDMge1xuICAgICRtYXJnaW4teS10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLXktYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgQGlmICRtYXJnaW4teS10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi15LWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSA0IHtcbiAgICAkbWFyZ2luLXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4tcmlnaHQ6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgICRtYXJnaW4tbGVmdDogbnRoKCRtYXJnaW4sIDQpO1xuICAgIEBpZiAkbWFyZ2luLXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1yaWdodCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi1yaWdodDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWxlZnQgIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi1sZWZ0O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1wYWRkaW5nIChcbiAgJHBhZGRpbmdcbikge1xuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDEgYW5kICRwYWRkaW5nICE9IG4ge1xuICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDIge1xuICAgICRwYWRkaW5nLXk6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICBAaWYgJHBhZGRpbmcteSAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15O1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXk7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAzIHtcbiAgICAkcGFkZGluZy15LXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLXktYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgIEBpZiAkcGFkZGluZy15LXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15LXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteS1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gNCB7XG4gICAgJHBhZGRpbmctdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXJpZ2h0OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICAkcGFkZGluZy1sZWZ0OiBudGgoJHBhZGRpbmcsIDQpO1xuICAgIEBpZiAkcGFkZGluZy10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmctdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctcmlnaHQgIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy1yaWdodDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1sZWZ0ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy1sZWZ0O1xuICAgIH1cbiAgfVxufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1hYnNvbHV0ZSAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWFic29sdXRlIHtcbiAgQGluY2x1ZGUgc2N1dC1hYnNvbHV0ZTtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtZml4ZWQgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1maXhlZCB7XG4gIEBpbmNsdWRlIHNjdXQtZml4ZWQ7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LXJlbGF0aXZlIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cbkBtaXhpbiBzY3V0LXJhdGlvLWJveCAoXG4gICRyYXRpbzogMS8xXG4pIHtcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVGhlIGNvbnRhaW5lcidzIGhlaWdodCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZVxuICAvLyBjb250YWluZXIncyB3aWR0aCwgaXMgc2V0IGJ5IGFzc2lnbmluZ1xuICAvLyBwYWRkaW5nLXRvcCB0byBhIHBzZXVkby1lbGVtZW50LlxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgcGFkZGluZy10b3A6ICgxIC8gJHJhdGlvKSAqIDEwMCU7XG4gIH1cblxufVxuXG4lc2N1dC1yYXRpby1ib3gge1xuICBAaW5jbHVkZSBzY3V0LXJhdGlvLWJveDtcbn1cbkBtaXhpbiBzY3V0LXNpemUoXG4gICRzaXplXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAxIHtcbiAgICB3aWR0aDogICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICB3aWR0aDogIG50aCgkc2l6ZSwgMSk7XG4gICAgaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAtJGhlaWdodDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAjeyR3cmFwcGVyfTphZnRlcixcbiAgI3skZm9vdGVyfSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG5cbn1cblxuLy8gZGVwcmVjYXRlZFxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3RlciAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbil7XG4gIEBpbmNsdWRlIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCgkaGVpZ2h0LCAkd3JhcHBlciwgJGZvb3Rlcik7XG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZsdWlkIChcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICN7JGZvb3Rlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcbiAgICBoZWlnaHQ6IDFweDtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLWliIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICAvLyBUaGUgaW5uZXIgZWxlbWVudCBpcyB2ZXJ0aWNhbGx5IGNlbnRlcmVkXG4gIC8vIGJ5IG1pZGRsZS1hbGlnbmluZyBpdCB3aXRoIGFuIGlubGluZSBwc2V1ZG8tZWxlbWVudFxuICAvLyB3aG9zZSBoZWlnaHQgaXMgMTAwJS5cblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgLy8gQSBzbWFsbCBuZWdhdGl2ZSByaWdodCBtYXJnaW4gaXMgc2V0XG4gICAgLy8gdG8gYWNjb3VudCBmb3IgdGhlIGRlZmF1bHRcbiAgICAvLyB3b3JkLXNwYWNpbmcgb2YgaW5saW5lLWJsb2NrLlxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVlbTtcbiAgfVxuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC12Y2VudGVyLWliIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLWliO1xufVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLWxoIChcbiAgJGhlaWdodFxuKSB7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJGhlaWdodDtcblxufVxuQG1peGluIHNjdXQtdmNlbnRlci10ZCAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgZGlzcGxheTogdGFibGU7XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG5cbiVzY3V0LXZjZW50ZXItdGQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdGQ7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1jZW50ZXItdHJhbnNmb3JtXG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItdHQgKCkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbiVzY3V0LXZjZW50ZXItdHQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdHQ7XG59XG4vLyBzcGFjZVxuJHNjdXQtc3BhY2U6IFwiXFwwMDIwXCI7XG4vLyBub24tYnJlYWtpbmcgc3BhY2VcbiRzY3V0LW5ic3A6IFwiXFwwMGEwXCI7XG5cbi8vIHF1b3RhdGlvbiBtYXJrXG4kc2N1dC1xdW90OiBcIlxcMDAyMlwiO1xuLy8gbGVmdCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LWxzcXVvOiBcIlxcMjAxOFwiO1xuLy8gcmlnaHQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1yc3F1bzogXCJcXDIwMTlcIjtcbi8vIGxlZnQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1sZHF1bzogXCJcXDIwMUNcIjtcbi8vIHJpZ2h0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtcmRxdW86IFwiXFwyMDFEXCI7XG4vLyBsZWZ0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbHNhcXVvOiBcIlxcMjAzOVwiO1xuLy8gcmlnaHQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yc2FxdW86IFwiXFwyMDNBXCI7XG4vLyBsZWZ0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbGFxdW86IFwiXFwwMGFiXCI7XG4vLyByaWdodCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJhcXVvOiBcIlxcMDBiYlwiO1xuXG4vLyBlbSBkYXNoIChtdXR0b24pXG4kc2N1dC1tZGFzaDogXCJcXDIwMTRcIjtcbi8vIGVuIGRhc2ggKG51dClcbiRzY3V0LW5kYXNoOiBcIlxcMjAxM1wiO1xuLy8gaHlwaGVuXG4kc2N1dC1oeXBoZW46IFwiXFwyMDEwXCI7XG5cbi8vIGFtcGVyc2FuZFxuJHNjdXQtYW1wOiBcIlxcMDAyNlwiO1xuLy8gZ3JlYXRlciB0aGFuXG4kc2N1dC1ndDogXCJcXDAwM2VcIjtcbi8vIGxlc3MgdGhhblxuJHNjdXQtbHQ6IFwiXFwwMDNjXCI7XG4vLyB0aW1lc1xuJHNjdXQtdGltZXM6IFwiXFwwMEQ3XCI7XG4vLyBiaWcgdGltZXNcbiRzY3V0LWJpZ3RpbWVzOiBcIlxcMjcxNVwiO1xuLy8gY2hlY2ttYXJrXG4kc2N1dC1jaGVja21hcms6IFwiXFwyNzEzXCI7XG5cbi8vIHNlY3Rpb24gc2lnbiAoZG91YmxlIFMsIGh1cnJpY2FuZSwgc2VjdGlvbmFsIHN5bWJvbCwgdGhlIGxlZ2FsIGRvdWdobnV0LCBzaWdudW0gc2VjdGlvbmlzKVxuJHNjdXQtc2VjdDogXCJcXDAwYTdcIjtcbi8vIHBhcmFncmFwaCBzeW1ib2wgKHBpbGNyb3cpXG4kc2N1dC1wYXJhOiBcIlxcMDBiNlwiO1xuXG4vLyBtaWRkb3QgKGludGVycHVuY3QsIGludGVycG9pbnQpXG4kc2N1dC1taWRkb3Q6IFwiXFwwMGI3XCI7XG4vLyBvLXNsYXNoIChzbGFzaGVkIG8pXG4kc2N1dC1vc2xhc2g6IFwiXFwwMGY4XCI7XG4vLyBidWxsZXRcbiRzY3V0LWJ1bGw6IFwiXFwyMDIyXCI7XG4vLyB3aGl0ZSBidWxsZXRcbiRzY3V0LXdoaWJ1bGw6IFwiXFwyNUU2XCI7XG4vLyBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1oZWxsaXA6IFwiXFwyMDI2XCI7XG4vLyB2ZXJ0aWNhbCBlbGxpcHNpc1xuJHNjdXQtdmVsbGlwOiBcIlxcMjJFRVwiO1xuLy8gbWlkbGluZSBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1taWRoZWxsaXA6IFwiXFwyMkVGXCI7XG5cbi8vIHVwLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC11dHJpOiBcIlxcMjViMlwiO1xuLy8gZG93bi1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtZHRyaTogXCJcXDI1YmNcIjtcbi8vIGxlZnQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWx0cmk6IFwiXFwyNWMwXCI7XG4vLyByaWdodC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtcnRyaTogXCJcXDI1YjZcIjtcbi8vIHVwLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC11c3RyaTogXCJcXDI1YjRcIjtcbi8vIGRvd24tcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWRzdHJpOiBcIlxcMjViZVwiO1xuLy8gbGVmdC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtbHN0cmk6IFwiXFwyNWMyXCI7XG4vLyByaWdodC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtcnN0cmk6IFwiXFwyNWI4XCI7XG4vLyBkaWFtb25kXG4kc2N1dC1kaWFtb25kOiBcIlxcMjVjNlwiO1xuLy8gZmlzaGV5ZVxuJHNjdXQtZmlzaGV5ZTogXCJcXDI1YzlcIjtcbi8vIGJ1bGxzZXllXG4kc2N1dC1idWxsc2V5ZTogXCJcXDI1Y2VcIjtcbi8vIGNpcmNsZVxuJHNjdXQtY2lyY2xlOiBcIlxcMjVjZlwiO1xuLy8gd2hpdGUgY2lyY2xlXG4kc2N1dC13aGl0ZWNpcmNsZTogXCJcXDI1Y2JcIjtcbi8vIHNxdWFyZVxuJHNjdXQtc3F1YXJlOiBcIlxcMjVhMFwiO1xuLy8gd2hpdGUgc3F1YXJlXG4kc2N1dC13aGl0ZXNxdWFyZTogXCJcXDI1YTFcIjtcbi8vIHNtYWxsIHNxdWFyZVxuJHNjdXQtc3NxdWFyZTogXCJcXDI1YWFcIjtcbi8vIHNtYWxsIHdoaXRlIHNxdWFyZVxuJHNjdXQtc3doaXRlc3F1YXJlOiBcIlxcMjVhYlwiO1xuXG4vLyBnZW5lcmFsIGN1cnJlbmN5XG4kc2N1dC1jdXJyZW5jeTogXCJcXDAwYTRcIjtcbi8vIGNlbnRcbiRzY3V0LWNlbnQ6IFwiXFwwMGEyXCI7XG4vLyBkb2xsYXJcbiRzY3V0LWRvbGxhcjogXCJcXDAwMjRcIjtcbi8vIHBvdW5kXG4kc2N1dC1wb3VuZDogXCJcXDAwYTNcIjtcbi8vIGV1cm9cbiRzY3V0LWV1cm86IFwiXFwyMGFjXCI7XG4vLyB5ZW5cbiRzY3V0LXllbjogXCJcXDAwYTVcIjtcbi8vIHJ1cGVlXG4kc2N1dC1ydXBlZTogXCJcXDIwQjlcIjtcbkBmdW5jdGlvbiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KSB7XG4gIC8vIFJldHVybiB0aGUgbGlzdCBvZiBgc3JjYCB2YWx1ZXMsIGluIG9yZGVyLCB0aGF0XG4gIC8vIGEgZ29vZCBgQGZvbnQtZmFjZWAgd2lsbCBuZWVkLCBpbmNsdWRpbmcgb25seVxuICAvLyB0aG9zZSBmb3JtYXRzIHNwZWNpZmllZCBpbiB0aGUgbGlzdCBgJGZvcm1hdHNgLlxuICAkcmVzdWx0OiAoKTtcbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAkZW90LXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRlb3QtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmMikge1xuICAgICR3b2ZmMi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYyLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZikge1xuICAgICR3b2ZmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB0dGYpIHtcbiAgICAkdHRmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHR0Zi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHN2Zykge1xuICAgICRzdmctdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fScpIGZvcm1hdCgnc3ZnJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRzdmctdmFsLCBjb21tYSk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AbWl4aW4gc2N1dC1mb250LWZhY2UgKFxuICAkZm9udC1mYW1pbHksXG4gICRmaWxlLXBhdGgsXG4gICR3ZWlnaHQ6IG5vcm1hbCxcbiAgJHN0eWxlOiBub3JtYWwsXG4gICRmb3JtYXRzOiBlb3Qgd29mZjIgd29mZiB0dGYgc3ZnXG4pIHtcblxuICBAaWYgaW5kZXgoJ2l0YWxpYycgJ29ibGlxdWUnLCAkd2VpZ2h0KSB7XG4gICAgJHN0eWxlOiAkd2VpZ2h0O1xuICAgICR3ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuXG4gICAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAgIHNyYzogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgIH1cbiAgICBzcmM6IG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpO1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGFuZ2luZy1pbmRlbnQgKFxuICAkaW5kZW50OiAxZW1cbikge1xuXG4gIC8vIHBhZGRpbmctbGVmdCBjcmVhdGVzIHRoZSBpbmRlbnQsXG4gIC8vIHdoaWxlIHRleHQtaW5kZW50IHB1bGxzIHRoZSBmaXJzdCBsaW5lXG4gIC8vIGJhY2sgdG8gdGhlIGVkZ2UuXG5cbiAgcGFkZGluZy1sZWZ0OiAkaW5kZW50O1xuICB0ZXh0LWluZGVudDogLSRpbmRlbnQ7XG5cbn1cblxuJXNjdXQtaGFuZ2luZy1pbmRlbnQge1xuICBAaW5jbHVkZSBzY3V0LWhhbmdpbmctaW5kZW50O1xufVxuQG1peGluIHNjdXQtaW5kZW50ZWQtcHMgKFxuICAkaW5kZW50OiAxLjVlbSxcbiAgJG5vLWZpcnN0LWluZGVudDogdHJ1ZVxuKSB7XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtaW5kZW50OiAkaW5kZW50O1xuICB9XG5cbiAgQGlmICRuby1maXJzdC1pbmRlbnQge1xuICAgIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB0ZXh0LWluZGVudDogMDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1pbmRlbnRlZC1wcyB7XG4gIEBpbmNsdWRlIHNjdXQtaW5kZW50ZWQtcHM7XG59XG5AbWl4aW4gc2N1dC1rZXktdmFsIChcbiAgJGRpdmlkZXI6IFwiOlwiLFxuICAkcGFkOiAwLjI1ZW0sXG4gICRpbmRlbnQ6IDFlbSxcbiAgJHNwYWNpbmc6IDAsXG4gICRwYWQtbGVmdDogMFxuKSB7XG5cbiAgJiA+IGR0IHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkcGFkO1xuICAgICAgQGlmICRwYWQtbGVmdCAhPSAwIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRwYWQtbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmID4gZGQge1xuICAgIG1hcmdpbi1sZWZ0OiAkaW5kZW50O1xuICAgIEBpZiAkc3BhY2luZyAhPSAwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWtleS12YWwge1xuICBAaW5jbHVkZSBzY3V0LWtleS12YWw7XG59XG5AbWl4aW4gc2N1dC1saW5rLWJiIChcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkd2lkdGg6IDFweFxuKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gIGJvcmRlci1ib3R0b20td2lkdGg6ICR3aWR0aDtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgfVxuXG59XG5cbiVzY3V0LWxpbmstYmIge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstYmI7XG59XG4vLyBTQ1VUIExJTksgVU5TVFlMRURcbi8vIGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0LyNsaW5rLXVuc3R5bGVkXG5cbkBtaXhpbiBzY3V0LWxpbmstdW5zdHlsZWQoKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcblxufVxuXG4lc2N1dC1saW5rLXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLXVuc3R5bGVkKCk7XG59XG5cbkBtaXhpbiBzY3V0LXJldmVyc2UtaXRhbGljcyAoXG4gICRlbGVtZW50czogbnVsbFxuKSB7XG5cbiAgJGVsZW1lbnQtbGlzdDogZW0sIGNpdGUsIGk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgI3tqb2luKCRlbGVtZW50LWxpc3QsICRlbGVtZW50cyl9IHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cblxufVxuXG4lc2N1dC1yZXZlcnNlLWl0YWxpY3Mge1xuICBAaW5jbHVkZSBzY3V0LXJldmVyc2UtaXRhbGljcztcbn1cblxuQG1peGluIHNjdXQtc2lkZS1saW5lZCAoXG4gICRoZWlnaHQ6IDFweCxcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkdi1hZGp1c3Q6IGZhbHNlLFxuICAkZG91YmxlOiBmYWxzZVxuKSB7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDUwJTtcblxuICAgIGJvcmRlci10b3Atc3R5bGU6ICRzdHlsZTtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAkaGVpZ2h0O1xuXG4gICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgJHYtYWRqdXN0ICE9IGZhbHNlIHtcbiAgICAgIGJvdHRvbTogJHYtYWRqdXN0O1xuICAgIH1cblxuICAgIEBpZiAkZG91YmxlICE9IGZhbHNlIHtcbiAgICAgIGhlaWdodDogJGRvdWJsZTtcbiAgICAgIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6ICRoZWlnaHQ7XG4gICAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0OiAkc3BhY2U7XG4gICAgbWFyZ2luLWxlZnQ6IC01MCU7XG4gIH1cbiAgJjphZnRlciB7XG4gICAgbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXNpZGUtbGluZWQge1xuICBAaW5jbHVkZSBzY3V0LXNpZGUtbGluZWQ7XG59XG5AbWl4aW4gc2N1dC10cnVuY2F0ZSB7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbn1cblxuJXNjdXQtdHJ1bmNhdGUge1xuICBAaW5jbHVkZSBzY3V0LXRydW5jYXRlO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInRvb2xraXQvcGxhY2Vob2xkZXJzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcInRvb2xraXQvY29sb3JzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9mb250c1wiO1xuQGltcG9ydCBcInRvb2xraXQvaW50cmluc2ljLXJhdGlvXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9uZXN0ZWQtY29udGV4dFwiO1xuQGltcG9ydCBcInRvb2xraXQvcGFyYWxsYXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3J0bFwiO1xuQGltcG9ydCBcInRvb2xraXQvdGFyZ2V0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC90cmlhbmdsZVwiO1xuQGltcG9ydCBcInRvb2xraXQvY2VudGVyXCI7XG5AaW1wb3J0IFwidG9vbGtpdC92aWV3cG9ydFwiO1xuQGltcG9ydCBcInRvb2xraXQvdW5kZXJsaW5lXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9hcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3NldC1tdWx0aXBsZVwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRUb29sa2l0LVNldHRpbmdzOiAoXG4gICdjbGVhcmZpeCBleHRlbmQnOiBmYWxzZSxcbiAgJ2NvbG9yIHN0YWNrIGFtb3VudHMnOiAyNSUgNTAlIDc1JSA4NSUgOTAlLFxuICAndGludCBzaGFkZSBhbW91bnRzJzogNzUlIDUwJSAyNSUsXG4gICd0aW50IGNvbG9yJzogI2ZmZixcbiAgJ3NoYWRlIGNvbG9yJzogIzAwMCxcbiAgJ2NvbG9yIHNjYWxlIHN0ZXBzJzogNixcbiAgJ2xpZ2F0dXJlIGV4dGVuZCc6IGZhbHNlLFxuICAnZm9udCBmYWNlIHdlaWdodCc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBzdHlsZSc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZic6IGZhbHNlLFxuICAnaWNvbiBmb250IGV4dGVuZCc6IGZhbHNlLFxuICAnaWNvbiBmb250IHNwZWFrJzogZmFsc2UsXG4gICdmYWRlIGluIGR1cmF0aW9uJzogMXMsXG4gICdmYWRlIGluIGxvYWRpbmcgY2xhc3MnOiAnLndmLWxvYWRpbmcnLFxuICAnZmFkZSBpbiBleHRlbmQnOiBmYWxzZSxcbiAgJ2ludHJpbnNpYyByYXRpbyc6IDE2LzksXG4gICdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnOiAxMDAlLFxuICAnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJzogJz4gKicsXG4gICdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nOiB0b3AsXG4gICdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJzogZmFsc2UsXG4gICduZXN0ZWQgY29udGV4dCBjb250ZXh0cyc6IDEwMCUsXG4gICduZXN0ZWQgY29udGV4dCBwb3NpdGlvbic6IGxlZnQsXG4gICd0cmlhbmdsZSBjb2xvcic6ICMwMDAsXG4gICd0cmlhbmdsZSBoZWlnaHQnOiAxZW0sXG4gICd0cmlhbmdsZSB3aWR0aCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIGFuZ2xlJzogMCxcbiAgJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJzogMSxcbiAgJ3BhcmFsbGF4IGVsZW1lbnQnOiAnYm9keScsXG4gICdwYXJhbGxheCBpb3MnOiB0cnVlLFxuICAncGFyYWxsYXggZGlzdGFuY2UnOiAwLFxuICAndmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICd2ZXJ0aWNhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnOiA1MCUsXG4gICdob3Jpem9udGFsIGZpeGVkJzogZmFsc2UsXG4gICdob3Jpem9udGFsIGV4dGVuZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJzogZmFsc2UsXG4gICd1bmRlcmxpbmUgYmFja2dyb3VuZCc6ICNmZmYsXG4gICd1bmRlcmxpbmUgY29sb3InOiAjMDBlLFxuICAndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnOiB0cnVlLFxuICAndW5kZXJsaW5lIGRpc3RhbmNlJzogMSxcbiAgJ3VuZGVybGluZSB3aWR0aCc6IDIsXG4gICd1bmRlcmxpbmUgZXh0ZW5kJzogZmFsc2UsXG4gICdhcnQgcGl4ZWwgc2l6ZSc6IDFweCxcbiAgJ2FydCBjb2xvcic6IGJsYWNrLFxuICAnYXJ0IGJvcmRlciByYWRpdXMnOiAwJVxuKTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBOZXcgU2V0dGluZ3MgbW9kdWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdsb2JhbFxuJEdsb2JhbFNldHRpbmdzOiAkVG9vbGtpdC1TZXR0aW5ncyAhZGVmYXVsdDtcbi8vIFVzZXJcbiRVc2VyU2V0dGluZ3M6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVzZXIgU2V0dGluZyBFeGlzdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJFJldHVybjtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1oYXMoJHNldHRpbmcpIHtcbiAgQHJldHVybiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIEdldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEdsb2JhbFNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctZ2V0LW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkdmFsdWVzOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkdmFsdWVzOiBtYXAtbWVyZ2UoJHZhbHVlcywgKCRzZXR0aW5nOiBzZXR0aW5nLWdldCgkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICR2YWx1ZXM7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtZ2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1nZXQoJHNldHRpbmcpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZ3MgU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgJHNldHRpbmdzKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZS1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJFJldHVybjogKCk7XG5cbiAgQGVhY2ggJEtleSwgJFZhbHVlIGluICRVc2VyU2V0dGluZ3Mge1xuICAgICRSZXR1cm46IGlmKCRzZXR0aW5nID09ICRLZXksICRSZXR1cm4sIG1hcC1tZXJnZSgkUmV0dXJuLCAoJEtleTogJFZhbHVlKSkpO1xuICB9XG5cbiAgJFVzZXJTZXR0aW5nczogJFJldHVybiAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRjbGVhci10aGUtc2V0dGluZ3M6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcmVzZXQoKSB7XG4gICRVc2VyU2V0dGluZ3M6ICgpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLXJlc2V0KCk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBQaWNrXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2soJHNldHRpbmcsICRpbnB1dCkge1xuICBAcmV0dXJuIGlmKCRpbnB1dCAhPSBudWxsLCAkaW5wdXQsIHNldHRpbmctZ2V0KCRzZXR0aW5nKSk7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2stbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZywgJGlucHV0IGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogc2V0dGluZy1waWNrKCRpbnB1dCwgJHNldHRpbmcpKSk7XG4gIH1cblxuICBAcmV0dXJuICRSZXR1cm47XG59IiwiJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFBsYWNlaG9sZGVyIEdldC9TZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCkge1xuICAkdW5pcXVlLWlkOiB1bmlxdWUtaWQoKTtcbiAgJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6IG1hcC1tZXJnZSgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgKCRpZDogJHVuaXF1ZS1pZCkpICFnbG9iYWw7XG4gIEByZXR1cm4gJHVuaXF1ZS1pZDtcbn1cblxuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCkge1xuICBAcmV0dXJuIG1hcC1nZXQoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICRpZCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhdGUgUGxhY2Vob2xkZXIgQ2xhc3MgYW5kIEV4dGVuZFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKTtcblxuICBAaWYgJHBsYWNlaG9sZGVyLWlkID09IG51bGwge1xuICAgICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKTtcbiAgICBAYXQtcm9vdCAlI3skcGxhY2Vob2xkZXItaWR9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZXh0ZW5kICUjeyRwbGFjZWhvbGRlci1pZH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU3RhdGljIE1peGluIEhlbHBlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gbWl4aW4tZHJ5ZXIoJGlkLCAkZXh0ZW5kOiB0cnVlKSB7XG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNb2Rlcm4gQ2xlYXJmaXggTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNsZWFyZml4KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnY2xlYXJmaXggZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjbGVhcmZpeCcpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb21wYXNzIEV4dGVuc2lvbiBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUaW50IGFuZCBTaGFkZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMdW1hXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBsdW1hKCRjb2xvcikge1xuICBAcmV0dXJuIChyZWQoJGNvbG9yKSAqIC4yOTkpICsgKGdyZWVuKCRjb2xvcikgKiAuNTg3KSArIChibHVlKCRjb2xvcikgKiAuMTE0KTtcbn1cblxuQGZ1bmN0aW9uIGx1bWEtZ3RlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPj0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWx0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpIDw9IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1kaWZmKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQHJldHVybiBsdW1hKCRjb2xvcjEpIC0gbHVtYSgkY29sb3IyKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTdGFja3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXN0YWNrKCRtYWluLCAkc2Vjb25kYXJ5LCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ2NvbG9yIHN0YWNrIGFtb3VudHMnKTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJGFtb3VudHMpID09IDEge1xuICAgICRhbW91bnRzOiBudGgoJGFtb3VudHMsIDEpO1xuICB9XG5cbiAgJHN0YWNrOiAkbWFpbjtcblxuICBAZWFjaCAkYW1vdW50IGluICRhbW91bnRzIHtcbiAgICAkc3RhY2s6IGpvaW4oJHN0YWNrLCBtaXgoJHNlY29uZGFyeSwgbnRoKCRzdGFjaywgMSksICRhbW91bnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0YWNrO1xufVxuXG4vLyBUaW50IFN0YWNrXG5AZnVuY3Rpb24gdGludC1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFNoYWRlIFN0YWNrXG5AZnVuY3Rpb24gc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFRpbnQvU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgJGNvbG9yczogKCk7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgndGludCBzaGFkZSBhbW91bnRzJyk7XG4gIH1cbiAgJGxlbmd0aDogbGVuZ3RoKCRhbW91bnRzKTtcblxuICAvLyBTaGFkZXNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgc2hhZGUoJGNvbG9yLCBudGgoJGFtb3VudHMsICRpKSkpO1xuICB9XG5cbiAgLy8gQmFzZVxuICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgJGNvbG9yKTtcblxuICAvLyBUaW50c1xuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRsZW5ndGggLSAxIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgdGludCgkY29sb3IsIG50aCgkYW1vdW50cywgJGxlbmd0aCAtICRpKSkpO1xuICB9XG5cbiAgQHJldHVybiAkY29sb3JzO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFNjYWxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc2NhbGUoJG1haW4sICRzZWNvbmRhcnksICRzdGVwczogbnVsbCkge1xuICAkc3RlcHM6IGlmKCRzdGVwcyAhPSBudWxsLCAkc3RlcHMsIHRvb2xraXQtZ2V0KCdjb2xvciBzY2FsZSBzdGVwcycpKTtcblxuICAkbGlzdDogJG1haW47XG5cbiAgJHJlZDE6IHJlZCgkbWFpbik7XG4gICRyZWQyOiByZWQoJHNlY29uZGFyeSk7XG4gICRyZWQtZGlmZjogKCgkcmVkMSAtICRyZWQyKSAvICgoJHN0ZXBzIC0gMSkpKTtcblxuICAkaHVlMTogaHVlKCRtYWluKTtcbiAgJGh1ZTI6IGh1ZSgkc2Vjb25kYXJ5KTtcbiAgQGlmICgkaHVlMiArIDM1OSAtICRodWUxKSA8IGFicygkaHVlMSAtICRodWUyKSB7XG4gICAgJGh1ZTI6ICRodWUyICsgMzU5O1xuICB9XG4gICRodWUtZGlmZjogKCRodWUyIC0gJGh1ZTEpIC8gKCRzdGVwcyAtIDEpO1xuXG4gICRzYXQxOiBzYXR1cmF0aW9uKCRtYWluKTtcbiAgJHNhdDI6IHNhdHVyYXRpb24oJHNlY29uZGFyeSk7XG4gICRzYXQtZGlmZjogMDtcbiAgQGlmICRzYXQxID4gJHNhdDIge1xuICAgICRzYXQtZGlmZjogKCRzYXQyIC0gJHNhdDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MSAtICRzYXQyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRsdGUxOiBsaWdodG5lc3MoJG1haW4pO1xuICAkbHRlMjogbGlnaHRuZXNzKCRzZWNvbmRhcnkpO1xuICAkbHRlLWRpZmY6IDA7XG4gIEBpZiAkbHRlMSA+ICRsdGUyIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMiAtICRsdGUxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTEgLSAkbHRlMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkYWxwMTogYWxwaGEoJG1haW4pO1xuICAkYWxwMjogYWxwaGEoJHNlY29uZGFyeSk7XG4gICRhbHAtZGlmZjogMDtcbiAgQGlmICRhbHAxID4gJGFscDIge1xuICAgICRhbHAtZGlmZjogKCRhbHAyIC0gJGFscDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMSAtICRhbHAyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRodWUtaG9sZDogJGh1ZTE7XG4gICRzYXQtaG9sZDogJHNhdDE7XG4gICRsdGUtaG9sZDogJGx0ZTE7XG4gICRhbHAtaG9sZDogJGFscDE7XG4gICRjb2xvci1ob2xkOiAwO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJHN0ZXBzIHtcbiAgICAkaHVlLWhvbGQ6ICRodWUtaG9sZCArICRodWUtZGlmZjtcbiAgICAkc2F0LWhvbGQ6ICRzYXQtaG9sZCArICRzYXQtZGlmZjtcbiAgICAkbHRlLWhvbGQ6ICRsdGUtaG9sZCArICRsdGUtZGlmZjtcbiAgICAkYWxwLWhvbGQ6ICRhbHAtaG9sZCArICRhbHAtZGlmZjtcblxuICAgICRjb2xvci1ob2xkOiBoc2xhKCRodWUtaG9sZCwgJHNhdC1ob2xkLCAkbHRlLWhvbGQsICRhbHAtaG9sZCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGNvbG9yLWhvbGQpO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFbmFibGUgbGlnYXR1cmVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnbGlnYXR1cmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnZW5hYmxlIGxpZ2F0dXJlcycpIHtcbiAgICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXM7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2E9MSwgZGxpZz0xXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1zLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtby1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIixcImRsaWdcIjtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFjZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZm9udC1mYWNlKCRuYW1lLCAkZmlsZXMsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGlubGluZS13b2ZmOiBudWxsKSB7XG4gICR3ZWlnaHQ6IGlmKCR3ZWlnaHQgIT0gbnVsbCwgJHdlaWdodCwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSB3ZWlnaHQnKSk7XG4gICRzdHlsZTogaWYoJHN0eWxlICE9IG51bGwsICRzdHlsZSwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBzdHlsZScpKTtcbiAgJGlubGluZS13b2ZmOiBpZigkaW5saW5lLXdvZmYgIT0gbnVsbCwgJGlubGluZS13b2ZmLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIGlubGluZSB3b2ZmJykpO1xuXG4gICRmb250LXN0YWNrOiAoKTtcbiAgJGZvbnQtc3JjOiAnJztcbiAgJGVvdDogZmFsc2U7XG4gICRmb250LWV4dGVuc2lvbnM6ICgnZW90JzogJ2VtYmVkZGVkLW9wZW50eXBlJywgJ3dvZmYyJzogJ3dvZmYyJywgJ3dvZmYnOiAnd29mZicsICd0dGYnOiAndHJ1ZXR5cGUnLCAnc3ZnJzogJ3N2ZycpO1xuXG4gIEBlYWNoICRleHQsICRmb3JtYXQgaW4gJGZvbnQtZXh0ZW5zaW9ucyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRmaWxlcywgJGV4dCkge1xuICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhpbmxpbmUtZm9udC1maWxlcykgYW5kICRpbmxpbmUtd29mZiA9PSB0cnVlIGFuZCAoJGV4dCA9PSAnd29mZicgb3IgJGV4dCA9PSAnd29mZjInKSB7XG4gICAgICAgICRmb250LXNyYzogaW5saW5lLWZvbnQtZmlsZXMobWFwLWdldCgkZmlsZXMsICRleHQpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIGZ1bmN0aW9uLWV4aXN0cyhmb250LXVybCkge1xuICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkZm9udC1zdGFjazogYXBwZW5kKCRmb250LXN0YWNrLCAkZm9udC1zcmMsICdjb21tYScpO1xuICAgIH1cblxuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRuYW1lO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6ICRlb3Q7XG4gICAgfVxuICAgIEBpZiBsZW5ndGgoJGZvbnQtc3RhY2spID4gMCB7XG4gICAgICBzcmM6ICRmb250LXN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEljb24gRm9udFxuLy8gRnJvbSBodHRwOi8vaWNvbW9vbi5pb1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaWNvbi1mb250KCRmb250LXN0YWNrLCAkc3BlYWs6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHNwZWFrOiBpZigkc3BlYWsgIT0gbnVsbCwgJHNwZWFrLCB0b29sa2l0LWdldCgnaWNvbiBmb250IHNwZWFrJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjaztcbiAgQGlmICRzcGVhayA9PSBmYWxzZSB7XG4gICAgc3BlYWs6IG5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gaWNvbi1mb250LS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCAge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpY29uIGZvbnQgY29yZScpIHtcbiAgICAgIEBpbmNsdWRlIGljb24tZm9udC0tY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZCk7XG5cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWRlIEluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjb250ZW50LWZhZGUtaW4oJGR1cmF0aW9uOiBudWxsLCAkbG9hZGluZzogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZHVyYXRpb246IGlmKCRkdXJhdGlvbiAhPSBudWxsLCAkZHVyYXRpb24sIHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykpO1xuICAkbG9hZGluZzogaWYoJGxvYWRpbmcgIT0gbnVsbCwgJGxvYWRpbmcsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUgYW5kICRkdXJhdGlvbiA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpIGFuZCAkbG9hZGluZyA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjb250ZW50IGZhZGUgaW4nKSB7XG4gICAgICBAaW5jbHVkZSBjb250ZW50LWZhZGUtaW4oJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaWYgbm90IG1peGluLWV4aXN0cygnc2luZ2xlLXRyYW5zaXRpb24nKSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG9wYWNpdHkgJGR1cmF0aW9uKTtcbiAgICB9XG5cbiAgICAjeyRsb2FkaW5nfSAmIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZsdWlkIEVtYmVkcyBhbmQgd2hhdGV2ZXIgV0lUSCBOTyBKQVZBU0NJUFQhXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBwYXJlbnQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gY2hpbGQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICB0b3A6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG5cbiAgcGFkZGluZy0jeyRwb3NpdGlvbn06ICgxIC8gJHJhdGlvKSAqICR3aWR0aDtcbiAgd2lkdGg6ICR3aWR0aDtcbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRlbGVtZW50czogaWYoJGVsZW1lbnRzICE9IG51bGwsICRlbGVtZW50cywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZCk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xuXG4gIEBlYWNoICRlbGVtZW50IGluICRlbGVtZW50cyB7XG4gICAgI3skZWxlbWVudH0ge1xuICAgIFx0QGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXIoJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpbygkcmF0aW8sICR3aWR0aCwgJGVsZW1lbnRzLCAkZXh0ZW5kLCAkcG9zaXRpb24pO1xufVxuXG5AbWl4aW4gaXItcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG59IiwiLy8gc2ltcGxlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbnRleHQgb2YgYSBuZXN0ZWQgcGVyY2VudGFnZS5cbkBmdW5jdGlvbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG5cbiAgLy8gRmlyc3QgbGV2ZWwgZGVlcCBpcyBhbHdheXMgMTAwJVxuICAkcGVyY2VudGFnZTogMTAwJTtcblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBsZXZlbFxuICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgIC8vIEludmVydCB0aGUgcGVyY2VudGFnZSB0byBmaW5kIGNvbnRleHRcbiAgICAkcGVyY2VudGFnZTogcGVyY2VudGFnZSgkcGVyY2VudGFnZSAvICRjb250ZXh0KTtcbiAgfVxuICAvLyBSZXR1cm4gZmluYWwgcGVyY2VudGFnZVxuICBAcmV0dXJuICRwZXJjZW50YWdlO1xufVxuXG4vLyBtaXhpbiB0byBtYWtlIHRoaW5ncyBlYXNpZXJcbkBtaXhpbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nKSk7XG5cbiAgd2lkdGg6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cyk7XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJjZW50ZXJcIiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0uNTtcbiAgfVxuICBAaWYgJHBvc2l0aW9uID09IFwicmlnaHRcIiB7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtMSArIDEwMCU7XG4gIH1cbn0iLCIvLyBNYWdpYyBwYXJhbGxheCBtaXhpbnNcbkBtaXhpbiBwYXJhbGxheC1pbml0KCRwZXJzcGVjdGl2ZTogbnVsbCwgJGVsZW1lbnQ6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcblxuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJGVsZW1lbnQ6IGlmKCRlbGVtZW50ICE9IG51bGwsICRlbGVtZW50LCB0b29sa2l0LWdldCgncGFyYWxsYXggZWxlbWVudCcpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIEBpZiAkZWxlbWVudCA9PSAnYm9keScge1xuICAgIEBhdC1yb290IHtcbiAgICAgIGh0bWwsIGJvZHkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICBib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGVsZW1lbnQgPT0gdGhpcyB7XG4gICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGF0LXJvb3QgI3skZWxlbWVudH0ge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmU6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBvdmVyZmxvdzogYXV0bztcbiAgQGlmIG1peGluLWV4aXN0cyhwZXJzcGVjdGl2ZSkge1xuICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSAqIDFweCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgICBwZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICB9XG4gIC8vIEFsbG93cyBmb3Igc21vb3RoIHNjcm9sbGluZyBidXQgZGlzYWJsZXMgcGFyYWxsYXggZWZmZWN0cy5cbiAgQGlmICRwYXJhbGxheC1pb3MgPT0gZmFsc2Uge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAvLyBNYWtlIHN1cmUgM0QgcGVyc3BlY3RpdmUgaXMgcHJlc2VydmVkXG4gICYsICYgKiB7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0tc3R5bGUpIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZShwcmVzZXJ2ZS0zZCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheCgkZGlzdGFuY2U6IG51bGwsICRwZXJzcGVjdGl2ZTogbnVsbCkge1xuXG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGRpc3RhbmNlJykpO1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcblxuICAkdHJhbnNmb3JtOiB0cmFuc2xhdGVaKCRkaXN0YW5jZSAqICRwZXJzcGVjdGl2ZSAqIDFweCkgc2NhbGUoYWJzKCRkaXN0YW5jZSAtIDEpKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnNmb3JtKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gICAgdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICB9XG5cbiAgei1pbmRleDogJGRpc3RhbmNlICogMTAwO1xufVxuIiwiQG1peGluIHJ0bCgkcHJvcGVydHksICR2YWx1ZSkge1xuICAkX3Byb3BlcnR5OiAkcHJvcGVydHk7XG4gICN7JHByb3BlcnR5fTogJHZhbHVlO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA9PSA0IHtcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgI3skcHJvcGVydHl9OiBudGgoJHZhbHVlLCAxKSBudGgoJHZhbHVlLCA0KSBudGgoJHZhbHVlLCAzKSBudGgoJHZhbHVlLCAyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpIC0gMSkgKyAncmlnaHQnO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykgLSAxKSArICdsZWZ0JztcbiAgICB9XG5cbiAgICBAaWYgJHByb3BlcnR5ICE9ICRfcHJvcGVydHkge1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiQG1peGluIHRhcmdldCgkdGFyZ2V0KSB7XG4gIEBhdC1yb290IHtcbiAgICAvKiEgQHt0YXJnZXQ6ICN7JHRhcmdldH19ICovXG4gICAgJiB7XG4gICAgICBAY29udGVudDsgIFxuICAgIH1cbiAgICAvKiEge3RhcmdldDogI3skdGFyZ2V0fX1AICovICBcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRHJhdyB0cmlhbmdsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gdHJpYW5nbGUoJGNvbG9yOiBudWxsLCAkaGVpZ2h0OiBudWxsLCAkd2lkdGg6IG51bGwsICRhbmdsZTogbnVsbCkge1xuXG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGNvbG9yJykpO1xuICAkaGVpZ2h0OiBpZigkaGVpZ2h0ICE9IG51bGwsICRoZWlnaHQsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBoZWlnaHQnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIHdpZHRoJykpO1xuICAkYW5nbGU6IGlmKCRhbmdsZSAhPSBudWxsLCAkYW5nbGUsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBhbmdsZScpKTtcblxuICBAaWYgbnRoKCRhbmdsZSwgMSkgPT0gXCJ0b3BcIiBvciBudGgoJGFuZ2xlLCAxKSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IFwiI3skYW5nbGV9XCI7XG4gIH1cblxuICBAaWYgJGFuZ2xlID09IFwidG9wXCIge1xuICAgICRhbmdsZTogMDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiA3O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJyaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAxO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDQ7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiAzO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA2O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNTtcbiAgfVxuXG4gIEBpZiB1bml0KCRoZWlnaHQpID09IFwiXCIgb3IgdW5pdCgkaGVpZ2h0KSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skaGVpZ2h0fSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIGhlaWdodC5cIlxuICB9XG5cbiAgQGlmIHVuaXQoJHdpZHRoKSA9PSBcIlwiIG9yIHVuaXQoJHdpZHRoKSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skd2lkdGh9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3Igd2lkdGguXCJcbiAgfVxuXG4gIC8vIG9mZnNldCA0NWRlZyB0byBtYWtlIGVhY2ggc2lkZSBzdGFydCBhdCAwXG4gICRkZWc6ICRhbmdsZSArIDQ1O1xuICAvLyBpZiB1bml0cywgcmVtb3ZlIHVuaXRzXG4gIEBpZiB1bml0KCRkZWcpID09IGRlZyB7XG4gICAgJGRlZzogJGRlZyAvIDFkZWc7XG4gIH1cbiAgLy8gc2hpZnQgdG8gYmUgb24gYSBzY2FsZSBmcm9tIDAgdG8gOTAuXG4gIEB3aGlsZSAkZGVnID4gOTAge1xuICAgICRkZWc6ICRkZWcgLSA5MDtcbiAgfVxuICBAd2hpbGUgJGRlZyA8IDAge1xuICAgICRkZWc6ICRkZWcgKyA5MDtcbiAgfVxuICAvLyBHZXQgYSByYXRpbyBvZiA5MCB0byBtdWx0aXBseSBieS5cbiAgJGRlZzogJGRlZyAvIDkwO1xuXG4gIC8vIG1ha2Ugc3VyZSBtZXRyaWNzIGFyZSByZXNldFxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gIC8vIHJ1biB0aHJvdWdoIHNpZGVzXG4gIEBpZiAkYW5nbGUgPD0gNDUgb3IgJGFuZ2xlID4gMzE1IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKSAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gNDUgYW5kICRhbmdsZSA8PSAxMzUge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqICRkZWcpIDAgKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGg7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDEzNSBhbmQgJGFuZ2xlIDw9IDIyNSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAoJHdpZHRoICogJGRlZykgMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDIyNSBhbmQgJGFuZ2xlIDw9IDMxNSB7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aCAoJGhlaWdodCAqICRkZWcpIDA7XG4gIH1cbn0iLCIvLyBWZXJ0aWNhbGx5IGNlbnRlciBhbnl0aGluZywgbGl0ZXJhbGx5IGFueXRoaW5nLlxuLy8gaHR0cDovL3plcm9zaXh0aHJlZS5zZS92ZXJ0aWNhbC1hbGlnbi1hbnl0aGluZy13aXRoLWp1c3QtMy1saW5lcy1vZi1jc3MvXG5AbWl4aW4gdmVydGljYWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuXG4gIHRvcDogJG1pZHBvaW50O1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3ZlcnRpY2FsIGNlbnRlcicpIHtcbiAgICAgIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhvcml6b250YWwgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgQGlmICRtaWRwb2ludCAhPSAwJSB7XG4gICAgbGVmdDogJG1pZHBvaW50O1xuICB9XG5cbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBYnNvbHV0ZSBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFic29sdXRlLWNlbnRlcigkdmVydGljYWw6IG51bGwsICRob3Jpem9udGFsOiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHZlcnRpY2FsOiBpZigkdmVydGljYWwgIT0gbnVsbCwgJHZlcnRpY2FsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgdG9wOiAkdmVydGljYWw7XG4gIEBpZiAkaG9yaXpvbnRhbCAhPSAwJSB7XG4gICAgbGVmdDogJGhvcml6b250YWw7XG4gIH1cblxuICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENTUyBsZXZlbCA0IFZpZXdwb3J0XG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtZGV2aWNlLWFkYXB0LyN0aGUtYXR2aWV3cG9ydC1ydWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiB2aWV3cG9ydCB7XG4gIEAtd2Via2l0LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tcy12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQHZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4iLCJAbWl4aW4gdW5kZXJsaW5lKCRiYWNrZ3JvdW5kOiBudWxsLCAkY29sb3I6IG51bGwsICRjbGVhci1kZXNjZW5kZXJzOiBudWxsLCAkZGlzdGFuY2U6IG51bGwsICR3aWR0aDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkYmFja2dyb3VuZDogaWYoJGJhY2tncm91bmQgIT0gbnVsbCwgJGJhY2tncm91bmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgYmFja2dyb3VuZCcpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNvbG9yJykpO1xuICAkY2xlYXItZGVzY2VuZGVyczogaWYoJGNsZWFyLWRlc2NlbmRlcnMgIT0gbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnMsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycycpKTtcbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGRpc3RhbmNlJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgd2lkdGgnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgJFBYOiAuMDYyNWVtO1xuXG4gIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKCRleHRlbmQpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHMoYmFja2dyb3VuZC1pbWFnZSkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhsaW5lYXItZ3JhZGllbnQpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKFxuICAgICAgbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKVxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSk7XG4gIH1cbiAgYmFja2dyb3VuZC1zaXplOiAoMiAqICRQWCkgKCgxICsgJHdpZHRoKSAqICRQWCk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgKCgkd2lkdGgpICogJFBYKSArICRkaXN0YW5jZTtcblxuICBAaWYgJGNsZWFyLWRlc2NlbmRlcnMge1xuICAgIHRleHQtc2hhZG93OiAoMSAqICRQWCkgKDEgKiAkUFgpIDAgJGJhY2tncm91bmQsICgtMSAqICRQWCkgMCAwICRiYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd1bmRlcmxpbmUnKSB7XG4gICAgICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBUlQhXG4vLyBJbnNwaXJlZCBieSBodHRwOi8vZWxydW1vcmRlbGFsdXouZ2l0aHViLmlvL1BpeGVsYXRvci9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFydCgkYXJ0LCAkcHgtc2l6ZTogbnVsbCwgJGNvbG9yOiBudWxsLCAkcmFkaXVzOiBudWxsKSB7XG4gICRweC1zaXplOiBpZigkcHgtc2l6ZSAhPSBudWxsLCAkcHgtc2l6ZSwgdG9vbGtpdC1nZXQoJ2FydCBwaXhlbCBzaXplJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCdhcnQgY29sb3InKSk7XG4gICRyYWRpdXM6IGlmKCRyYWRpdXMgIT0gbnVsbCwgJHJhZGl1cywgdG9vbGtpdC1nZXQoJ2FydCBib3JkZXIgcmFkaXVzJykpO1xuXG4gICRidWlsZDogKCk7XG4gICR5OiAkcHgtc2l6ZTtcbiAgJHg6IDA7XG5cbiAgaGVpZ2h0OiAkcHgtc2l6ZTtcbiAgd2lkdGg6ICRweC1zaXplO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyX2xlbmd0aCgkYXJ0KSB7XG4gICAgJGNoYXI6IHN0cl9zbGljZSgkYXJ0LCAkaSwgJGkpO1xuICAgICR4OiAkeCArICRweC1zaXplO1xuXG4gICAgQGlmICRjaGFyID09ICduJyB7XG4gICAgICAkeTogJHkgKyAkcHgtc2l6ZTtcbiAgICAgICR4OiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY2hhciAhPSAnICcge1xuICAgICAgJGJvcmRlcjogJHggJHkgMCAkY29sb3I7XG4gICAgICAkYnVpbGQ6IGFwcGVuZCgkYnVpbGQsICRib3JkZXIsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBib3gtc2hhZG93OiAkYnVpbGQ7XG59IiwiQG1peGluIHNldC1tdWx0aXBsZSgkdmFsdWUsICRwcm9wZXJ0aWVzLi4uKSB7XG4gICRwcm9wZXJ0eS1sZW5ndGg6IGxlbmd0aCgkcHJvcGVydGllcyk7XG4gICRlcnJvci1tc2c6IFwiVGhlIGBzZXQtbXVsdGlwbGVgIG1peGluIHJlcXVpcmVzIHlvdSB0byBwYXNzIGluIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzIHRoZSBzZWNvbmQgYXJndW1lbnRcIjtcblxuICBAaWYgJHByb3BlcnR5LWxlbmd0aCA8IDEge1xuICAgIEBpZiBmZWF0dXJlLWV4aXN0cyhhdC1lcnJvcikge1xuICAgICAgQGVycm9yICRlcnJvci1tc2c7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICRlcnJvci1tc2c7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCBpbiBpcyBhIHdoaXRlLXNwYWNlZCBzZXBhcmF0ZWQgbGlzdC5cbiAgJHByb3BlcnRpZXM6IGlmKCRwcm9wZXJ0eS1sZW5ndGggPT0gMSwgbnRoKCRwcm9wZXJ0aWVzLCAxKSwgJHByb3BlcnRpZXMpO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSBpbiAkcHJvcGVydGllcyB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWVcbiAgfVxufVxuIiwiLy8gIE1vZHVsZSBTY2FsZSBhbmQgYmFzZSBmb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJGJhc2UtZm9udC1zaXplOiAgIDE0cHg7XG4kaWRlYWwtZm9udC1zaXplOiAgMjJweDtcbi8vICRiYXNlLWxpbmUtaGVpZ2h0OiBtcygxLCAkYmFzZS1mb250LXNpemUpO1xuXG4kcmh5dGhtLXVuaXQ6IFwicmVtXCI7XG4kcmh5dGhtLWdhcDogOHB4O1xuJHJlbS13aXRoLXB4LWZhbGxiYWNrOiBmYWxzZTtcblxuJHNjdXQtcmVtLWJhc2U6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZS1mb250LXNpemUpO1xuXG5cbi8vIHt7IENvbXBvbmVudCBzaXplIH19XG4kZ2xvYmFsLXJhZGl1czogM3B4O1xuIiwiLy8gIEdyaWQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG5cbiRsYXlvdXQtYmFzZTogKFxuICBndXR0ZXJzOiAxLzUsXG4gIGNvbHVtbi13aWR0aDogODBweCxcbiAgLy8gZ3V0dGVyLXBvc2l0aW9uOiBpbnNpZGUtc3RhdGljLFxuICBkZWJ1ZzogKFxuICAgIC8vIGltYWdlOiBzaG93LFxuICApLFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IHRydWUsXG4gICAgcmVtOiBmYWxzZSxcbiAgKSxcbik7XG4kc3VzeTogbGF5b3V0KDUgJGxheW91dC1iYXNlKTtcblxuLy8ge3sgRWxlbWVudCB0d2ljayBwb2ludHMgfX1cblxuLy8ge3sgRGV2aWNlIGxheW91dHMgfX1cbiRzdXN5LW1lZGlhOiAoXG4gICdtb2JpbGUnOiAnKG1heC13aWR0aDogNDE0cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6ICcobWF4LXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiAnKG1heC13aWR0aDogMTAyNHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3RhYmxldCc6ICcobWluLXdpZHRoOiA3NjhweCknLFxuICAndGFibGV0LXBvcnRyYWl0LW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ2Rlc2t0b3AnOiAnKG1pbi13aWR0aDogMTIwMHB4KScsXG4gICdjYXRlZ29yeS1tZW51JzogJyhtaW4td2lkdGg6IDEwMjRweCknXG4pO1xuJHRhYmxldDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgdGFibGV0KSxcbiAgbGF5b3V0OiA5IC41XG4pO1xuJHRhYmxldC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCR0YWJsZXQsIGxheW91dCkpO1xuJGRlc2t0b3A6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIGRlc2t0b3ApLFxuICBsYXlvdXQ6IDEyIDEuNSBzcGxpdFxuKTtcbiRkZXNrdG9wLWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJGRlc2t0b3AsIGxheW91dCkpO1xuJGRlc2t0b3AtZ3JpZC1wYWRkaW5nOiBzY3V0LXJlbSgxNSk7XG5cbi8vICB7eyBMYXllcnMgLS0tLS0tIH19XG4kbGF5ZXJzOiAoXG4gIGJhc2UsXG4gIGhlYWRlci1tZW51LFxuICBkcmF3ZXIsXG4gIGRyYXdlci1zaGFkb3csXG4gIGRyYXdlci1uYXYsXG4pOyIsIi8vICBTZXR0aW5nc1xuLy8gID09PT09PT09XG5cbiRjb2xvci1saWdodC1zYXR1cmF0aW9uOiA5MyU7XG5cbi8vICBDb2xvcnNcbi8vICA9PT09PT1cblxuJGdyYXktYmFzZTogICAgICMwMDAgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrZXI6ICAgdGludCgkZ3JheS1iYXNlLCAxMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrOiAgICAgdGludCgkZ3JheS1iYXNlLCAyMCUpICAgIWRlZmF1bHQ7XG4kZ3JheTogICAgICAgICAgdGludCgkZ3JheS1iYXNlLCAzMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodDogICAgdGludCgkZ3JheS1iYXNlLCA0Ni41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodGVyOiAgdGludCgkZ3JheS1iYXNlLCA5My41JSkgIWRlZmF1bHQ7XG5cbi8vICBUZXh0c1xuLy8gIC0tLS0tXG5cbiR0ZXh0LWNvbG9yOiAkZ3JheS1kYXJrO1xuXG4vLyAgUGFsbGV0ZVxuLy8gIC0tLS0tLS0tLS0tXG5cbiRibHVlOiAjMmQ2ZWM2O1xuJGJsdWUtZGFyazogcmdiKDAsIDY5LCAxNjQpO1xuJGJsdWUtbGlnaHQ6ICNkOGU5ZmY7XG4keWVsbG93OiAjZmM5NjAwO1xuJHllbGxvdy1kYXJrOiAjYjg2ZTAwO1xuJHllbGxvdy1saW5rOiAjZmZkODAwO1xuJG9yYW5nZTogI2ZjNDcwMDtcbiRvcmFuZ2UtZGFyazogI2I4NmUwMDtcbiRyZWQ6IHJnYigyMDYsIDY4LCA2Mik7XG4kZ3JlZW46IHJnYigyOCwgMTQ5LCAyMik7XG4kcGluazogcmdiKDE5NywgMzEsIDEyNCk7XG5cbiRwcmltYXJ5OiBzaGFkZSgjNDI4YmNhLCA2LjUlKTtcbiRzdWNjZXNzOiAjNWNiODVjO1xuJGluZm86ICAgICM1YmMwZGM7XG4kd2FybmluZzogI2YwYWQ0ZTtcbiRkYW5nZXI6ICAjZDk1MzRmO1xuXG4kaW5wdXQtYm9yZGVyOiAjZTRlNGU0O1xuJGJvcmRlci1ncmF5OiAjOTE5MTkxO1xuJGJhY2tncm91bmQtZ3JheTogI2U5ZTllOTtcblxuLy8gIExpbmtzXG4vLyAgLS0tLS1cblxuJGxpbmstY29sb3I6ICAgICAgICAgICAjMDAwICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICBzaGFkZSgkbGluay1jb2xvciwgMTUlKSAhZGVmYXVsdDtcbiRsaW5rLWZvY3VzLWNvbG9yOiAgICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLWFjdGl2ZS1jb2xvcjogICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLXZpc2l0ZWQtY29sb3I6ICAgJGdyYXktZGFyayAhZGVmYXVsdDtcblxuLy8gIE5Qcm9ncmVzc1xuLy8gIC0tLS0tLS0tLVxuJG5wcm9ncmVzcy1jb2xvcjogICAgJHByaW1hcnk7XG4iLCIvLyAgRm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiAgIHJpZ2h0O1xuXG4vLyDlg4Xph53lsI3oi7Hmlodcbi8vIEBmb250LWZhY2Uge1xuLy8gICBmb250LWZhbWlseTogRW5nbGlzaDtcbi8vICAgdW5pY29kZS1yYW5nZTogVSswMC0wMjRGO1xuLy8gICBzcmM6IGxvY2FsKEhlbHZldGljYSk7XG4vLyB9XG5cbiRzYW5zOiAgICBIZWx2ZXRpY2FOZXVlLUxpZ2h0XG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUgTGlnaHQnXG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUnXG4gICAgICAgLCAgSGVsdmV0aWNhXG4gICAgICAgLCAnSGVpdGkgVEMnXG4gICAgICAgLCAnTGlIZWkgUHJvJ1xuICAgICAgICwgJ01pY3Jvc29mdCBKaGVuZ0hlaSdcbiAgICAgICAsICflvq7ou5/mraPpu5Hpq5QnXG4gICAgICAgLCAgQXJpYWxcbiAgICAgICAsICBzYW5zLXNlcmlmO1xuXG4kc2VyaWY6ICAnUFQgU2VyaWYnXG4gICAgICAgLCBHZW9yZ2lhXG4gICAgICAgLCBUaW1lc1xuICAgICAgICwgJ1RpbWVzIE5ldyBSb21hbidcbiAgICAgICAsICdTb25ndGkgVEMnXG4gICAgICAgLCAnSGlyYWdpbm8gTWluY2hvIFByb04nXG4gICAgICAgLCBzZXJpZjtcblxuJGJhc2UtZm9udC1mYW1pbHk6ICRzYW5zOyJdLCJtYXBwaW5ncyI6IkE4Q0FBOzs7OztFQUtFO0E5Q01zQixBOEN1QnhCLGU5Q3ZCdUMsRUFDdkMsQThDc0JBLG1COUN0Qm1CLEM4Q3NCQztFQVZsQixlQUFlLEVBQUUsSUFBSztFQUN0QixZQUFZLEVBQUUsQ0FBRTtFQUdkLFVBQVUsRUFBRSxDQUFFO0VBQ2QsYUFBYSxFQUFFLENBQUUsR0FPcEI7O0E5Q3hCRCxBQUFBLG1CQUFtQixDQUFDO0VBR2xCLFdBQVcsRUFGRixLQUFJO0VBR2IsWUFBWSxFQUhILElBQUksR0FJZCIsIm5hbWVzIjpbXX0= */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
@media (min-width: 1200px) {
  .vertical-tab {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: flex-start; } }
.vertical-tab__tabs {
  border-bottom: 2px solid #e9e9e9; }

@media (min-width: 1200px) {
  .vertical-tab__tabs {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-flow: column nowrap;
    flex-flow: column nowrap;
    -webkit-box-align: start;
    -ms-flex-align: start;
    align-items: flex-start;
    margin-right: 16px;
    border-bottom: none;
    border-right: 1px solid #e9e9e9; } }
.vertical-tab__tab {
  padding-right: 8px;
  padding-bottom: 8px;
  padding-left: 8px; }

.vertical-tab__tab.active {
  border-bottom: 4px solid #e9e9e9; }

@media (min-width: 1200px) {
  .vertical-tab__tab.active {
    border-bottom: none;
    border-right: 4px solid #e9e9e9; } }
@media (min-width: 1200px) {
  .vertical-tab__tab {
    white-space: nowrap;
    padding: 8px 16px; }

  .vertical-tab__tab:hover {
    border-right: 4px solid #e9e9e9; } }
.vertical-tab__content {
  opacity: 0;
  visibility: hidden;
  -webkit-transition: opacity .2s ease 0s, visibility .2s ease .2s;
  transition: opacity .2s ease 0s, visibility .2s ease .2s;
  overflow: hidden;
  height: 0; }

.vertical-tab__content.active {
  opacity: 1;
  visibility: visible;
  -webkit-transition-delay: 0s;
  transition-delay: 0s;
  overflow: auto;
  height: auto; }

.no-js .vertical-tab__content {
  opacity: 1;
  visibility: visible;
  -webkit-transition-delay: 0s;
  transition-delay: 0s;
  height: auto; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX3ZlcnRpY2FsLXRhYi5zY3NzIiwic291cmNlcyI6WyIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fdmVydGljYWwtdGFiLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX21peGlucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19jbGFzc2VzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2N1dC9kaXN0L19zY3V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL190b29sa2l0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BsYWNlaG9sZGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fZm9udHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9faW50cmluc2ljLXJhdGlvLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX25lc3RlZC1jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BhcmFsbGF4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3J0bC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190YXJnZXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdHJpYW5nbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2VudGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3ZpZXdwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3VuZGVybGluZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19hcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0LW11bHRpcGxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3NjYWxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2ZvbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tIHZlbmRvciBtaXhpbiBsaWJyYXJpZXMgLS0tLVxuQGltcG9ydCBcIm1peGluc1wiLFxuICAgICAgICBcImNsYXNzZXNcIixcbiAgICAgICAgXCJ+c3VzeVwiLFxuICAgICAgICBcIn5zY3V0XCIsXG4gICAgICAgIFwifnNhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0XCI7XG5cbi8vIC0tLS0gdmFyaWFibGVzIGFuZCBjb25maWcgLS0tLVxuQGltcG9ydCBcInNldHRpbmdzL3NjYWxlXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZ3JpZFwiLFxuICAgICAgICBcInNldHRpbmdzL2NvbG9yc1wiLFxuICAgICAgICBcInNldHRpbmdzL2ZvbnRcIjsudmVydGljYWwtdGFiIHtcbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG59XG4udmVydGljYWwtdGFiX190YWJzIHtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRiYWNrZ3JvdW5kLWdyYXk7XG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBtYXJnaW4tcmlnaHQ6IHIoMik7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkYmFja2dyb3VuZC1ncmF5O1xuICB9XG59XG4udmVydGljYWwtdGFiX190YWIge1xuICBwYWRkaW5nOiBuKCkgcigxKSByKDEpO1xuICAmLmFjdGl2ZSB7XG4gICAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkICRiYWNrZ3JvdW5kLWdyYXk7XG4gICAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkge1xuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbiAgICAgIGJvcmRlci1yaWdodDogNHB4IHNvbGlkICRiYWNrZ3JvdW5kLWdyYXk7XG4gICAgfVxuICB9XG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHBhZGRpbmc6IHIoMSkgcigyKTtcbiAgICAmOmhvdmVyIHsgYm9yZGVyLXJpZ2h0OiA0cHggc29saWQgJGJhY2tncm91bmQtZ3JheTsgfVxuICB9XG59XG4udmVydGljYWwtdGFiX19jb250ZW50IHtcbiAgQGluY2x1ZGUgdG9nZ2xlLXNob3coKTtcbiAgLm5vLWpzICYgeyBAaW5jbHVkZSBzaG93KCk7IH1cbn0iLCIvLyB7e1Nhc3MgbWl4aW5zIC0tLS0tLS0tfX1cbkBmdW5jdGlvbiBuKCkgeyBAcmV0dXJuIHVucXVvdGUoXCIqXCIpOyB9XG5cbkBmdW5jdGlvbiByKCR0aW1lczogMSkgeyBAcmV0dXJuICRyaHl0aG0tZ2FwICogJHRpbWVzOyB9XG5cbkBtaXhpbiBzdXN5KCRtYXApIHtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJG1hcCwgcXVlcnkpLCBtYXAtZ2V0KCRtYXAsIGxheW91dCkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gcmV2ZXJzZS1oaWRlLXZpc3VhbGx5KCkge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG59XG5cbkBtaXhpbiBzaGFyZS1icmVha3BvaW50cygkbWFwLCAkY3NzcHJvcDogY29udGVudCkge1xuICAkZGVzY3JpcHRpb246ICcnO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRtYXAge1xuICAgIEBpZiAkZGVzY3JpcHRpb24gIT0gICcnIHtcbiAgICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJyB8ICc7XG4gICAgfVxuICAgIFxuICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJHByb3BlcnR5ICsnOiAnKyBpbnNwZWN0KCR2YWx1ZSk7XG4gIH1cblxuICBkaXNwbGF5OiBub25lO1xuICAjeyRjc3Nwcm9wfTogICRkZXNjcmlwdGlvbjtcbn1cblxuQG1peGluIHRvZ2dsZS1mYWRlKCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICB9XG59XG5cbkBtaXhpbiB0b2dnbGUtc2hvdygpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAwO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgfSAgXG59XG5cbkBtaXhpbiBzaG93KCkge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgaGVpZ2h0OiBhdXRvOyAgXG59XG5cbkBtaXhpbiBpbnB1dC1wbGFjZWhvbGRlcigpIHtcbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgXG4gICY6Oi1tb3otcGxhY2Vob2xkZXIsXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbn1cblxuQG1peGluIGRlYnVnKCRjb2xvcjogI2ZmZiByZ2JhKHRvbWF0bywgLjMpKSB7XG4gIGNvbG9yOiAkY29sb3Jcbn1cblxuQG1peGluIGxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpO1xuICA+IGxpICsgbGk6YmVmb3JlIHsgbWFyZ2luLWxlZnQ6ICRzcGFjZSArIDRweDsgfVxufVxuIiwiQG1peGluIEhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG5AbWl4aW4gU2VsZWN0IHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgcGFkZGluZzogMCByKDIpIDAgcigxKTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgLy8gaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICAvLyBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAvLyBiYWNrZ3JvdW5kOiB1cmwoXCJpbWFnZXMvYXJyb3ctZG93bi5zdmdcIilcbiAgLy8gICAgICAgICAgIDkyJSA1MCUgLyA4cHggMTBweFxuICAvLyAgICAgICAgICAgbm8tcmVwZWF0XG4gIC8vICAgICAgICAgICB0cmFuc3BhcmVudDtcbiAgLm5vLWNzcy1hcHBlYXJhbmNlICYge1xuICAgIEBpbmNsdWRlIHNjdXQtcGFkZGluZyhuIDApO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIE5vcm1hbGl6ZSgpIHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lIHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwO1xufSIsIi8vIFN1c3lcbi8vID09PT1cblxuQGltcG9ydCAnc3VzeS9sYW5ndWFnZS9zdXN5JztcbiIsIi8vIFN1c3kgTmV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuJHN1c3ktdmVyc2lvbjogMi4xO1xuXG5AaW1wb3J0IFwiLi4vc3VcIjtcbkBpbXBvcnQgXCIuLi9vdXRwdXQvZmxvYXRcIjtcblxuQGltcG9ydCBcInN1c3kvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdXN5L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdXN5L2dyaWRzXCI7XG5AaW1wb3J0IFwic3VzeS9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VzeS9jb250ZXh0XCI7XG5AaW1wb3J0IFwic3VzeS9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VzeS9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzdXN5L3NwYW5cIjtcbkBpbXBvcnQgXCJzdXN5L2d1dHRlcnNcIjtcbkBpbXBvcnQgXCJzdXN5L2lzb2xhdGVcIjtcbkBpbXBvcnQgXCJzdXN5L2dhbGxlcnlcIjtcbkBpbXBvcnQgXCJzdXN5L3Jvd3NcIjtcbkBpbXBvcnQgXCJzdXN5L21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzdXN5L3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2JsZWVkXCI7XG5AaW1wb3J0IFwic3VzeS9icmVha3BvaW50LXBsdWdpblwiO1xuIiwiLy8gU3Vcbi8vID09XG5cbkBpbXBvcnQgXCJzdS91dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJzdS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdS9ncmlkXCI7XG4iLCIvLyBNYXAgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gVHJ1bmNhdGUgTGlzdFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSBsaXN0LCB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBsZW5ndGhcbkBmdW5jdGlvbiBfc3VzeS10cnVuY2F0ZS1saXN0KFxuICAkbGlzdCxcbiAgJGxlbmd0aFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGlzdCkge1xuICAgICRfcmV0dXJuOiBpZigkaSA8PSAkbGVuZ3RoLCBhcHBlbmQoJF9yZXR1cm4sIG50aCgkbGlzdCwgJGkpKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIEdldFxuLy8gLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtZ2V0KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiAkbWFwO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiB0eXBlLW9mKCRfcmV0dXJuKSA9PSBtYXAge1xuICAgICAgJF9yZXR1cm46IG1hcC1nZXQoJF9yZXR1cm4sICRrZXkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBTZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFNldCBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLXNldChcbiAgJG1hcCxcbiAgJGtleXMtdmFsdWUuLi5cbikge1xuICAkX3ZhbHVlOiBudGgoJGtleXMtdmFsdWUsIC0xKTtcbiAgJF9rZXlzOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRrZXlzLXZhbHVlLCBsZW5ndGgoJGtleXMtdmFsdWUpIC0gMSk7XG4gICRfbGVuZ3RoOiBsZW5ndGgoJF9rZXlzKTtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJF9sZW5ndGgge1xuICAgICRfbjogMCAtICRpO1xuICAgICRfbGV2ZWw6IF9zdXN5LXRydW5jYXRlLWxpc3QoJF9rZXlzLCAkX2xlbmd0aCArICRfbik7XG4gICAgJF9sZXZlbDogX3N1c3ktZGVlcC1nZXQoJG1hcCwgJF9sZXZlbC4uLik7XG4gICAgJF9tZXJnZTogbnRoKCRfa2V5cywgJF9uKTtcbiAgICAkX21lcmdlOiAoJF9tZXJnZTogJF92YWx1ZSk7XG4gICAgJF9yZXR1cm46IGlmKCRfbGV2ZWwsIG1hcC1tZXJnZSgkX2xldmVsLCAkX21lcmdlKSwgJF9tZXJnZSk7XG4gICAgJF92YWx1ZTogJF9yZXR1cm47XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgTWVyZ2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiAyIG9iamVjdHMgb2YgYW55IGRlcHRoLCBtZXJnZWRcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLW1lcmdlKFxuICAkbWFwMSxcbiAgJG1hcDJcbikge1xuXG4gIEBpZiB0eXBlLW9mKCRtYXAxKSAhPSBtYXAgb3IgdHlwZS1vZigkbWFwMikgIT0gbWFwIHtcbiAgICAkbWFwMTogJG1hcDI7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwMiB7XG4gICAgICAkX25ldzogKCRrZXk6IF9zdXN5X2RlZXAtbWVyZ2UobWFwLWdldCgkbWFwMSwgJGtleSksICR2YWx1ZSkpO1xuICAgICAgJG1hcDE6IG1hcC1tZXJnZSgkbWFwMSwgJF9uZXcpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG1hcDE7XG59XG5cblxuLy8gRGVlcCBIYXMtS2V5XG4vLyAtLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIHRydWUgaWYgYSBkZWVwIGtleSBleGlzdHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWhhcy1rZXkoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46IG51bGw7XG4gICRfc3RvcDogZmFsc2U7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIG5vdCgkX3N0b3ApIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KTtcbiAgICB9XG5cbiAgICBAaWYgJF9yZXR1cm4ge1xuICAgICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfc3RvcDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU2V0dGluZ3Ncbi8vID09PT09PT09XG5cbi8vIFZlcnNpb25cbi8vIC0tLS0tLS1cbiRzdS12ZXJzaW9uOiAxLjE7XG5cblxuLy8gRGVmYXVsdCBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVGhlIGJhc2ljIHNldHRpbmdzXG4kc3VzeS1kZWZhdWx0czogKFxuICBjb2x1bW5zOiA0LFxuICBndXR0ZXJzOiAuMjUsXG4pO1xuXG5cbi8vIFVzZXIgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gRGVmaW5lIHRoZSAkc3VzeSB2YXJpYWJsZSB3aXRoIGEgbWFwIG9mIHlvdXIgb3duIHNldHRpbmdzLlxuLy8gLSBTZXQgRUlUSEVSICRjb2x1bW4td2lkdGggT1IgJGNvbnRhaW5lclxuLy8gLSBVc2UgJGNvbHVtbi13aWR0aCBmb3Igc3RhdGljIGxheW91dHNcbiRzdXN5OiAoKSAhZGVmYXVsdDtcblxuXG4vLyBTdXN5IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBBZGQgZGVmYXVsdHMgdG8gU3VzeVxuQG1peGluIHN1c3ktZGVmYXVsdHMoXG4gICRkZWZhdWx0c1xuKSB7XG4gICRzdXN5LWRlZmF1bHRzOiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRkZWZhdWx0cykgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IFNldFxuLy8gLS0tLS0tLS1cbi8vIENoYW5nZSBvbmUgc2V0dGluZ1xuLy8gLSAka2V5ICAgOiBzZXR0aW5nIG5hbWVcbi8vIC0gJHZhbHVlIDogc2V0dGluZyB2YWx1ZVxuQG1peGluIHN1c3ktc2V0KFxuICAka2V5LXZhbHVlLi4uXG4pIHtcbiAgJHN1c3k6IF9zdXN5LWRlZXAtc2V0KCRzdXN5LCAka2V5LXZhbHVlLi4uKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgR2V0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJuIG9uZSBzZXR0aW5nIGZyb20gYSBncmlkXG4vLyAtICRrZXkgICAgIDogPGtleXdvcmQ+XG4vLyAtICRsYXlvdXQgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIHN1c3ktZ2V0KFxuICAka2V5LFxuICAkbGF5b3V0OiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRzdXN5KVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfb3B0aW9uczogJGxheW91dCAkc3VzeSAkc3VzeS1kZWZhdWx0cztcbiAgJF9icmVhazogZmFsc2U7XG4gICRfcmV0dXJuOiBudWxsO1xuXG4gIEBlYWNoICRvcHQgaW4gJF9vcHRpb25zIHtcbiAgICBAaWYgdHlwZS1vZigkb3B0KSA9PSBtYXAgYW5kIG5vdCgkX2JyZWFrKSB7XG4gICAgICAkX2tleXNldDogX3N1c3ktZGVlcC1oYXMta2V5KCRvcHQsICRrZXkuLi4pO1xuICAgICAgQGlmICRfa2V5c2V0IHtcbiAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtZ2V0KCRvcHQsICRrZXkuLi4pO1xuICAgICAgICAkX2JyZWFrOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBNYXRoIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PVxuXG5cbi8vIFZhbGlkIENvbHVtbnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBjb2x1bW4gc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW5zKFxuICAkY29sdW1ucyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkY29sdW1ucyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGNvbHVtbnMpIHtcbiAgICAkcmV0dXJuOiAkY29sdW1ucztcbiAgfSBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAkZmFpbDogbnVsbDtcbiAgICBAZWFjaCAkY29sIGluICRjb2x1bW5zIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRjb2wpID09IG51bWJlciB7XG4gICAgICAgICRmYWlsOiAkZmFpbCBvciBpZih1bml0bGVzcygkY29sKSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGZhaWw6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgICRyZXR1cm46IGlmKCRmYWlsLCAkcmV0dXJuLCAkY29sdW1ucyk7XG4gIH1cblxuICBAaWYgJHJldHVybiAhPSAkY29sdW1ucyBhbmQgbm90KCRzaWxlbnQpIHtcbiAgICAkcmV0dXJuOiBudWxsO1xuICAgICR3YXJuOiAnJGNvbHVtbnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlciBvciBsaXN0IG9mIHVuaXRsZXNzIG51bWJlcnMuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRjb2x1bW5zfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cblxuLy8gVmFsaWQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGd1dHRlciBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWd1dHRlcnMoXG4gICRndXR0ZXJzLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRndXR0ZXJzKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkZ3V0dGVycykge1xuICAgICRyZXR1cm46ICRndXR0ZXJzO1xuICB9IEBlbHNlIGlmIG5vdCgkc2lsZW50KSB7XG4gICAgJHdhcm46ICckZ3V0dGVycyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skZ3V0dGVyc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQ29sdW1uIG1hdGhcbi8vID09PT09PT09PT09XG5cblxuLy8gSXMgU3ltbWV0cmljYWxcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgYSBncmlkIGlzIHN5bW1ldHJpY2FsLlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIGlzLXN5bW1ldHJpY2FsKFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaWYodHlwZS1vZigkY29sdW1ucykgPT0gbnVtYmVyLCAkY29sdW1ucywgbnVsbCk7XG59XG5cblxuLy8gU3VzeSBDb3VudFxuLy8gLS0tLS0tLS0tLVxuLy8gRmluZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gYSBnaXZlbiBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LWNvdW50KFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpIG9yIGxlbmd0aCgkY29sdW1ucyk7XG59XG5cblxuLy8gU3VzeSBTdW1cbi8vIC0tLS0tLS0tXG4vLyBGaW5kIHRoZSB0b3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeS1zdW0oXG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcblxuICAkc3ByZWFkOiBpZigkc3ByZWFkID09IHdpZGUsIDAsIGlmKCRzcHJlYWQgPT0gd2lkZXIsIDEsIC0xKSk7XG4gICRndXR0ZXItc3VtOiAoc3VzeS1jb3VudCgkY29sdW1ucykgKyAkc3ByZWFkKSAqICRndXR0ZXJzO1xuICAkY29sdW1uLXN1bTogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gIEBpZiBub3QoJGNvbHVtbi1zdW0pIHtcbiAgICBAZWFjaCAkY29sdW1uIGluICRjb2x1bW5zIHtcbiAgICAgICRjb2x1bW4tc3VtOiAoJGNvbHVtbi1zdW0gb3IgMCkgKyAkY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi1zdW0gKyAkZ3V0dGVyLXN1bTtcbn1cblxuXG4vLyBTdXN5IFNsaWNlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgb2YgY29sdW1ucyBhdCBhIGdpdmVuIGxvY2F0aW9uLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktc2xpY2UoXG4gICRzcGFuLFxuICAkbG9jYXRpb24sXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJHN1Yi1jb2x1bW5zOiAkc3BhbjtcblxuICBAaWYgbm90KGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSkge1xuICAgICRsb2NhdGlvbjogJGxvY2F0aW9uIG9yIDE7XG4gICAgJHN1Yi1jb2x1bW5zOiAoKTtcbiAgICBAZm9yICRpIGZyb20gJGxvY2F0aW9uIHRvICgkbG9jYXRpb24gKyAkc3Bhbikge1xuICAgICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRpKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3ViLWNvbHVtbnM7XG59XG5cblxuLy8gU3VzeVxuLy8gLS0tLVxuLy8gRmluZCB0aGUgc3VtIG9mIGEgY29sdW1uLXNwYW4uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbiAgICAgOiBmYWxzZSxcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgICAgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICAgICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAkc3Bhbjogc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG5cbiAgQHJldHVybiBzdXN5LXN1bSgkc3BhbiwgJGd1dHRlcnMsICRzcHJlYWQpO1xufVxuIiwiLy8gRmxvYXQgQVBJXG4vLyA9PT09PT09PT1cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5AaW1wb3J0IFwiZmxvYXQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiZmxvYXQvc3BhblwiO1xuQGltcG9ydCBcImZsb2F0L2VuZFwiO1xuQGltcG9ydCBcImZsb2F0L2lzb2xhdGVcIjtcbiIsIi8vIFNoYXJlZCBBUElcbi8vID09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnRcIjtcblxuQGltcG9ydCBcInNoYXJlZC9pbnNwZWN0XCI7XG5AaW1wb3J0IFwic2hhcmVkL291dHB1dFwiO1xuQGltcG9ydCBcInNoYXJlZC9kaXJlY3Rpb25cIjtcbkBpbXBvcnQgXCJzaGFyZWQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInNoYXJlZC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzaGFyZWQvbWFyZ2luc1wiO1xuQGltcG9ydCBcInNoYXJlZC9wYWRkaW5nXCI7XG5cblxuXG4iLCIvLyBTdXN5IEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnQvc3VwcG9ydFwiO1xuQGltcG9ydCBcInN1cHBvcnQvcHJlZml4XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9yZW1cIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2NsZWFyZml4XCI7XG4iLCIvLyBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IFN1cHBvcnQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogZmFsc2UsXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kLW9wdGlvbnM6IGZhbHNlLFxuICAgIGJyZWFrcG9pbnQ6IHRydWUsXG4gICAgYm94LXNpemluZzogdHJ1ZSxcbiAgICByZW06IHRydWUsXG4gICksXG4pKTtcblxuXG4vLyBTdXN5IFN1cHBvcnQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlbmQgcHJvcGVydHktdmFsdWUgcGFpcnMgdG8gdGhlIHByb3BlciBzdXBwb3J0IG1vZHVsZXMuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1zdXBwb3J0KFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gIC8vIEJhY2tncm91bmQgU3VwcG9ydFxuICBAaWYgJHByb3AgPT0gYmFja2dyb3VuZC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWltYWdlKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtc2l6ZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLXNpemUoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1vcmlnaW4ge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1jbGlwIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtY2xpcCgkdmFsKTtcbiAgfVxuXG4gIC8vIEJveC1TaXppbmcgU3VwcG9ydFxuICBAZWxzZSBpZiAkcHJvcCA9PSBib3gtc2l6aW5nIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJveC1zaXppbmcoJHZhbCk7XG4gIH1cblxuICAvLyBSZW0gU3VwcG9ydFxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJHByb3AsICR2YWwpO1xuICB9XG59XG5cblxuLy8gU3VzeSBTdXBwb3J0IFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3Igc3VwcG9ydCBvZiBhIGZlYXR1cmUuXG4vLyAtICRmZWF0dXJlICAgICAgIDogPHN0cmluZz5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyBcInJlbVwiIG9yIFwiYm94LXNpemluZ1wiXG4vLyAtICRyZXF1aXJlbWVudHMgIDogPG1hcD5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyAodmFyaWFibGU6IHJlbS13aXRoLXB4LWZhbGxiYWNrLCBtaXhpbjogcmVtKVxuLy8gLSAkd2FybiAgICAgICAgICA6IDxib29sPlxuQGZ1bmN0aW9uIHN1c3ktc3VwcG9ydChcbiAgJGZlYXR1cmUsXG4gICRyZXF1aXJlbWVudHM6ICgpLFxuICAkd2FybjogdHJ1ZVxuKSB7XG4gICRfc3VwcG9ydDogc3VzeS1nZXQodXNlLWN1c3RvbSAkZmVhdHVyZSk7XG5cbiAgQGlmICRfc3VwcG9ydCB7XG4gICAgJF9mYWlsOiBmYWxzZTtcblxuICAgIEBlYWNoICRfdHlwZSwgJF9yZXEgaW4gJHJlcXVpcmVtZW50cyB7XG4gICAgICBAZWFjaCAkX2kgaW4gJF9yZXEge1xuICAgICAgICAkX3Bhc3M6IGNhbGwodW5xdW90ZShcIiN7JF90eXBlfS1leGlzdHNcIiksICRfaSk7XG5cbiAgICAgICAgQGlmIG5vdCgkX3Bhc3MpIHtcbiAgICAgICAgICAkX2ZhaWw6IHRydWU7XG4gICAgICAgICAgQGlmICR3YXJuIHtcbiAgICAgICAgICAgIEB3YXJuIFwiWW91IHJlcXVlc3RlZCBjdXN0b20gc3VwcG9ydCBvZiAjeyRmZWF0dXJlfSwgYnV0IHRoZSAjeyRfaX0gI3skX3R5cGV9IGlzIG5vdCBhdmFpbGFibGUuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zdXBwb3J0OiBpZigkX2ZhaWwsIGZhbHNlLCAkX3N1cHBvcnQpO1xuICB9XG5cbiAgQHJldHVybiAkX3N1cHBvcnQ7XG59XG4iLCIvLyBTdXN5IFByZWZpeFxuLy8gPT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBzaW1wbGUgcHJlZml4ZWQgcHJvcGVydGllcy5cbi8vIC0gJHByb3AgICAgICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICAgICAgOiA8Y3NzIHZhbHVlPlxuLy8gLSBbJHByZWZpeF0gIDogPGJyb3dzZXIgcHJlZml4IGxpc3Q+XG5AbWl4aW4gc3VzeS1wcmVmaXgoXG4gICRwcm9wLFxuICAkdmFsLFxuICAkcHJlZml4OiBvZmZpY2lhbFxuKSB7XG4gIEBlYWNoICRmaXggaW4gJHByZWZpeCB7XG4gICAgJGZpeDogaWYoJGZpeCA9PSBvZmZpY2lhbCBvciBub3QoJGZpeCksICRwcm9wLCAnLSN7JGZpeH0tI3skcHJvcH0nKTtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkZml4LCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gQmFja2dyb3VuZCBQcm9wZXJ0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIEltYWdlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWltYWdlPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLWltYWdlLCAobWl4aW46IGJhY2tncm91bmQtaW1hZ2UpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS4uLik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgU2l6ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1zaXplPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1zaXplKFxuICAkc2l6ZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtc2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoJHNpemUpO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBPcmlnaW5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLW9yaWdpbj5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtb3JpZ2luKFxuICAkb3JpZ2luXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1vcmlnaW4pKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1vcmlnaW4oJG9yaWdpbik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkb3JpZ2luO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBDbGlwXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtY2xpcD5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtY2xpcChcbiAgJGNsaXBcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLWNsaXApKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1jbGlwKCRjbGlwKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcDtcbiAgfVxufVxuIiwiLy8gQm94IFNpemluZ1xuLy8gPT09PT09PT09PVxuXG4vLyBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJG1vZGVsOiA8Ym94LXNpemluZz5cbkBtaXhpbiBzdXN5LWJveC1zaXppbmcoXG4gICRtb2RlbDogY29udGVudC1ib3hcbikge1xuICBAaWYgJG1vZGVsIHtcbiAgICBAaWYgc3VzeS1zdXBwb3J0KGJveC1zaXppbmcsIChtaXhpbjogYm94LXNpemluZyksICR3YXJuOiBmYWxzZSkge1xuICAgICAgQGluY2x1ZGUgYm94LXNpemluZygkbW9kZWwpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByZWZpeDogKG1veiwgd2Via2l0LCBvZmZpY2lhbCk7XG4gICAgICBAaW5jbHVkZSBzdXN5LXByZWZpeChib3gtc2l6aW5nLCAkbW9kZWwsICRwcmVmaXgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRGVidWdnaW5nXG4vLyA9PT09PT09PT1cblxuLy8gU3VzeSBJbnNwZWN0XG4vLyAtLS0tLS0tLS0tLS1cbi8vIE91dHB1dCBhcmd1bWVudHMgcGFzc2VkIHRvIGEgaW5zcGVjdC5cbi8vIC0gJG1peGluICA6IDxzdXN5IG1peGluPlxuLy8gLSAkaW5zcGVjICAgOiA8bWl4aW4gYXJndW1lbnRzPlxuXG5AbWl4aW4gc3VzeS1pbnNwZWN0KFxuICAkbWl4aW4sXG4gICRpbnNwZWN0XG4pIHtcbiAgJHNob3c6IGZhbHNlO1xuXG4gIEBlYWNoICRpdGVtIGluICRpbnNwZWN0IHtcbiAgICBAaWYgaW5kZXgoJGl0ZW0sIGluc3BlY3QpIHtcbiAgICAgICRzaG93OiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2hvdyBvciBzdXN5LWdldChkZWJ1ZyBpbnNwZWN0KSB7XG4gICAgLXN1c3ktI3skbWl4aW59OiBpbnNwZWN0KCRpbnNwZWN0KTtcbiAgfVxufVxuIiwiLy8gT3V0cHV0XG4vLyA9PT09PT1cblxuLy8gT3V0cHV0XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBDU1Mgd2l0aCBwcm9wZXIgYnJvd3NlciBzdXBwb3J0LlxuLy8gLSAkc3R5bGVzICA6IDxtYXAgb2YgY3NzIHByb3BlcnR5LXZhbHVlIHBhaXJzPlxuQG1peGluIG91dHB1dChcbiAgJHN0eWxlc1xuKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsIGluICRzdHlsZXMge1xuICAgIEBpbmNsdWRlIHN1c3ktc3VwcG9ydCgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIERpcmVjdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEZsb3cgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgZmxvdzogbHRyLFxuKSk7XG5cbi8vIEdldCBEaXJlY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIG9yICd0bycgZGlyZWN0aW9uIG9mIGEgbHRyIG9yIHJ0bCBmbG93LlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuLy8gLSBbJGtleV0gICA6IGZyb20gfCB0b1xuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGtleTogZnJvbVxuKSB7XG4gICRyZXR1cm46IGlmKCRmbG93ID09IHJ0bCwgKGZyb206IHJpZ2h0LCB0bzogbGVmdCksIChmcm9tOiBsZWZ0LCB0bzogcmlnaHQpKTtcbiAgQHJldHVybiBtYXAtZ2V0KCRyZXR1cm4sICRrZXkpO1xufVxuXG4vLyBUb1xuLy8gLS1cbi8vIFJldHVybiB0aGUgJ3RvJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gdG8oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgdG8pO1xufVxuXG4vLyBGcm9tXG4vLyAtLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gZnJvbShcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCBmcm9tKTtcbn1cbiIsIi8vIEdyaWQgQmFja2dyb3VuZCBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cbi8vIC0gU3ViLXBpeGVsIHJvdW5kaW5nIGNhbiBsZWFkIHRvIHNldmVyYWwgcGl4ZWxzIHZhcmlhdGlvbiBiZXR3ZWVuIGJyb3dzZXJzLlxuXG4vLyBHcmlkIEJhY2tncm91bmQgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRpbWFnZTogYmFja2dyb3VuZC1pbWFnZVxuLy8gLSAkc2l6ZTogYmFja2dyb3VuZC1zaXplXG4vLyAtICRjbGlwOiBiYWNrZ3JvdW5kLWNsaXBcbi8vIC0gWyRmbG93XTogbHRyIHwgcnRsXG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkLW91dHB1dCAoXG4gICRpbWFnZSxcbiAgJHNpemU6IG51bGwsXG4gICRjbGlwOiBudWxsLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlLFxuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemUsXG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRjbGlwLFxuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogZnJvbSgkZmxvdykgdG9wLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFNoYXJlZCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICAgICAgICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGNvbnRhaW5lci1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICAkb3V0cHV0OiAoXG4gICAgI3skcHJvcGVydHl9OiAkd2lkdGggb3IgMTAwJSxcbiAgICBtYXJnaW4tbGVmdDogbnRoKCRqdXN0aWZ5LCAxKSxcbiAgICBtYXJnaW4tcmlnaHQ6IG50aCgkanVzdGlmeSwgMiksXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gTWFyZ2lucyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIE1hcmdpbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gbWFyZ2luLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3skZnJvbX06ICRiZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFBhZGRpbmcgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBQYWRkaW5nIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gcGFkZGluZy1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgQ29udGFpbmVyXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBmbG9hdC1jb250YWluZXIoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICBAaW5jbHVkZSBzdXN5LWNsZWFyZml4O1xuICBAaW5jbHVkZSBjb250YWluZXItb3V0cHV0KCR3aWR0aCwgJGp1c3RpZnksICRwcm9wZXJ0eSk7XG59XG4iLCIvLyBGbG9hdCBTcGFuIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgU3BhbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICR3aWR0aCAgICAgICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvYXRdICAgICAgICAgICA6IGZyb20gfCB0b1xuLy8gLSBbJG1hcmdpbi1iZWZvcmVdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJG1hcmdpbi1hZnRlcl0gICAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYmVmb3JlXSAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYWZ0ZXJdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICAgICAgICAgICAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1zcGFuLW91dHB1dChcbiAgJHdpZHRoLFxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb20sXG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbCxcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsLFxuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGwsXG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbCxcbiAgJGZsb3cgICAgICAgICAgICAgOiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0byAgICAgOiB0bygkZmxvdyk7XG4gICRmcm9tICAgOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGg6ICR3aWR0aCxcbiAgICBmbG9hdDogaWYoJGZsb2F0ID09IHRvLCAkdG8sIG51bGwpIG9yIGlmKCRmbG9hdCA9PSBmcm9tLCAkZnJvbSwgbnVsbCksXG4gICAgbWFyZ2luLSN7JGZyb219OiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJHBhZGRpbmctYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgRW5kcyBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRW5kIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgbGFzdC1mbG93OiB0byxcbikpO1xuXG4vLyBGbG9hdCBMYXN0XG4vLyAtLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtbGFzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAkbGFzdC1mbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBsYXN0LWZsb3cpLFxuICAkbWFyZ2luOiAwXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiBpZigkbGFzdC1mbG93ID09IHRvLCAkdG8sIG51bGwpLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4sXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG4vLyBGbG9hdCBGaXJzdFxuLy8gLS0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1maXJzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0je2Zyb20oJGZsb3cpfTogMCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBJc29sYXRpb24gQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIElzb2xhdGUgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkcHVzaCAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gaXNvbGF0ZS1vdXRwdXQoXG4gICRwdXNoLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogJGZyb20sXG4gICAgbWFyZ2luLSN7JGZyb219OiAkcHVzaCxcbiAgICBtYXJnaW4tI3skdG99OiAtMTAwJSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTdXN5IFNldHRpbmdzXG4vLyA9PT09PT09PT09PT09XG5cbi8vIFN1c3kgTGFuZ3VhZ2UgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogZmx1aWQsXG4gIG91dHB1dDogZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogY2VudGVyLFxuICBndXR0ZXItcG9zaXRpb246IGFmdGVyLFxuICBnbG9iYWwtYm94LXNpemluZzogY29udGVudC1ib3gsXG4gIGRlYnVnOiAoXG4gICAgaW1hZ2U6IGhpZGUsXG4gICAgY29sb3I6IHJnYmEoIzY2ZiwgLjI1KSxcbiAgICBvdXRwdXQ6IGJhY2tncm91bmQsXG4gICAgdG9nZ2xlOiB0b3AgcmlnaHQsXG4gICksXG4pKTtcblxuXG4vLyBWYWxpZCBLZXl3b3JkIFZhbHVlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURTogRE9OVCdUIFRPVUNIXG4kc3VzeS1rZXl3b3JkczogKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IHN0YXRpYyBmbHVpZCxcbiAgb3V0cHV0OiBpc29sYXRlIGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGxlZnQgY2VudGVyIHJpZ2h0LFxuICBmbG93OiBsdHIgcnRsLFxuICBndXR0ZXItcG9zaXRpb246IGJlZm9yZSBhZnRlciBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYyxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveCBjb250ZW50LWJveCxcbiAgc3BhbjogZnVsbCxcbiAgZWRnZTogZmlyc3QgYWxwaGEgbGFzdCBvbWVnYSBmdWxsLFxuICBzcHJlYWQ6IG5hcnJvdyB3aWRlIHdpZGVyLFxuICBndXR0ZXItb3ZlcnJpZGU6IG5vLWd1dHRlcnMgbm8tZ3V0dGVyLFxuICByb2xlOiBuZXN0LFxuICBjbGVhcjogYnJlYWsgbm9icmVhayxcbiAgZGVidWcgaW1hZ2U6IHNob3cgaGlkZSBzaG93LWNvbHVtbnMgc2hvdy1iYXNlbGluZSxcbiAgZGVidWcgb3V0cHV0OiBiYWNrZ3JvdW5kIG92ZXJsYXksXG4pO1xuXG5cbi8vIFBhcnNlIFN1c3kgS2V5d29yZHMgYW5kIE1hcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zZXR0aW5ncyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBzdHJpbmcge1xuICAgICAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHN1c3kta2V5d29yZHMge1xuICAgICAgICAgIEBpZiBpbmRleCgkdmFsdWUsICRpdGVtKSB7XG4gICAgICAgICAgICAkX2tleS12YWx1ZTogYXBwZW5kKCRrZXksICRpdGVtKTtcbiAgICAgICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLXNldCgkX3JldHVybiwgJF9rZXktdmFsdWUuLi4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgLy8gbWFwc1xuICAgICAgfSBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBtYXAge1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBDb2x1bW5zICYgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1sYXlvdXQoXG4gICRzaG9ydFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcbiAgJF9jb2x1bW5zOiAoKTtcbiAgJF9ndXR0ZXJzOiBudWxsO1xuXG4gIEBpZiBub3QodW5pdGxlc3MobnRoKG50aCgkc2hvcnQsIDEpLCAxKSkpIHtcbiAgICAkX2d1dHRlcnM6IG50aCgkc2hvcnQsIDEpO1xuICB9IEBlbHNlIHtcbiAgICAkX2NvbHVtbnM6IChjb2x1bW5zOiBudGgoJHNob3J0LCAxKSk7XG4gICAgJF9ndXR0ZXJzOiBpZihsZW5ndGgoJHNob3J0KSA+IDEsIG50aCgkc2hvcnQsIDIpLCAkX2d1dHRlcnMpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJF9ndXR0ZXJzKSA9PSBsaXN0IGFuZCBsZW5ndGgoJF9ndXR0ZXJzKSA+IDAge1xuICAgICRfZ3V0dGVyczogKFxuICAgICAgZ3V0dGVyczogbnRoKCRfZ3V0dGVycywgMikgLyBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICAgIGNvbHVtbi13aWR0aDogbnRoKCRfZ3V0dGVycywgMSksXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9ndXR0ZXJzOiBpZigkX2d1dHRlcnMsIChndXR0ZXJzOiAkX2d1dHRlcnMpLCAoKSk7XG4gIH1cblxuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2NvbHVtbnMpO1xuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2d1dHRlcnMpO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3JpZC9Db250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ncmlkKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46IHBhcnNlLXNldHRpbmdzKCRzaG9ydCk7XG4gICRfbGF5b3V0OiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIG51bWJlciBvciBsaXN0XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIG9yIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qge1xuICAgICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCBvciB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAgICRfbGF5b3V0OiBhcHBlbmQoJF9sYXlvdXQsICRpdGVtKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNvbnRhaW5lcjogJGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfbGF5b3V0OiBpZihsZW5ndGgoJF9sYXlvdXQpID4gMCwgcGFyc2UtbGF5b3V0KCRfbGF5b3V0KSwgJF9sYXlvdXQpO1xuICB9XG5cbiAgQHJldHVybiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfbGF5b3V0KTtcbn1cblxuXG4vLyBQYXJzZSBTcGFuXG4vLyAtLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc3BhbihcbiAgJHNob3J0LFxuICAka2V5OiBzcGFuXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICAkX2F0OiBpbmRleCgkc2hvcnQsIGF0KTtcblxuICAgIEBpZiAkX2F0IHtcbiAgICAgICRfbG9jaTogJF9hdCArIDE7XG4gICAgICAkX2xvY2F0aW9uOiBudGgoJHNob3J0LCAkX2xvY2kpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGxvY2F0aW9uOiAkX2xvY2F0aW9uKSk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2F0LCBudWxsKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfbG9jaSwgbnVsbCk7XG4gICAgfVxuXG4gICAgJF9pOiAxO1xuICAgICRfc3BhbjogKCk7XG5cbiAgICBAd2hpbGUgJF9pIDw9IGxlbmd0aCgkc2hvcnQpIHtcbiAgICAgICRfdGhpczogbnRoKCRzaG9ydCwgJF9pKTtcblxuICAgICAgQGlmIHR5cGUtb2YoJF90aGlzKSA9PSBudW1iZXIge1xuICAgICAgICAkX3NwYW46IGFwcGVuZCgkX3NwYW4sICRfdGhpcyk7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICB9IEBlbHNlIGlmICRfdGhpcyA9PSBvZiB7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICAgICRfaTogbGVuZ3RoKCRzaG9ydCkgKyAxO1xuICAgICAgfVxuXG4gICAgICAkX2k6ICRfaSArIDE7XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkX3NwYW4pID4gMCB7XG4gICAgICAkX3NwYW46IGlmKGxlbmd0aCgkX3NwYW4pID09IDEsIG50aCgkX3NwYW4sIDEpLCAkX3NwYW4pO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRrZXk6ICRfc3BhbikpO1xuICAgIH1cblxuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIHBhcnNlLWdyaWQoJHNob3J0KSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ndXR0ZXJzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9ndXR0ZXJzOiBwYXJzZS1zcGFuKCRzaG9ydCwgZ3V0dGVyLW92ZXJyaWRlKTtcbiAgJF9zcGFuOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRfZ3V0dGVycyk7XG5cbiAgQGlmICRfc3BhbiBhbmQgbm90KG1hcC1nZXQoJF9ndXR0ZXJzLCBjb2x1bW5zKSkge1xuICAgICRfY29udGV4dDogKCk7XG4gICAgJF9uZXc6ICgpO1xuXG4gICAgQGVhY2ggJGl0ZW0gaW4gJF9zcGFuIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICRfY29udGV4dDogYXBwZW5kKCRfY29udGV4dCwgJGl0ZW0pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRfbmV3OiBhcHBlbmQoJF9uZXcsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2NvbnRleHQ6IHBhcnNlLWdyaWQoJF9jb250ZXh0KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAwLCBudWxsLCAkX25ldyk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMSwgbnRoKCRfbmV3LCAxKSwgJF9uZXcpO1xuICAgICRfbmV3OiAoZ3V0dGVyLW92ZXJyaWRlOiBpZigkX25ldyAhPSAkX3NwYW4sICRfbmV3LCAkX3NwYW4pKTtcblxuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9uZXcpO1xuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9jb250ZXh0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuIiwiLy8gVmFsaWRhdGlvblxuLy8gPT09PT09PT09PVxuXG5cbi8vIFZhbGlkYXRlIENvbHVtbiBNYXRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbi1tYXRoKFxuICAkbWF0aCxcbiAgJGNvbHVtbi13aWR0aFxuKSB7XG4gIEBpZiAkbWF0aCA9PSBzdGF0aWMgYW5kIG5vdCgkY29sdW1uLXdpZHRoKSB7XG4gICAgQGVycm9yICdTdGF0aWMgbWF0aCByZXF1aXJlcyBhIHZhbGlkIGNvbHVtbi13aWR0aCBzZXR0aW5nLic7XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4td2lkdGg7XG59XG4iLCIvLyBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gU2V0IGEgbmV3IGxheW91dCB1c2luZyBhIHNob3J0aGFuZFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIGxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGF5b3V0LCAkaW5zcGVjdCk7XG59XG5cblxuLy8gVXNlIEdyaWRcbi8vIC0tLS0tLS0tXG4vLyBVc2UgYW4gYXJiaXRyYXJ5IGxheW91dCBmb3IgYSBzZWN0aW9uIG9mIGNvZGVcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiB3aXRoLWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRvbGQgICAgICA6ICRzdXN5O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHdpdGgtbGF5b3V0LCAkaW5zcGVjdCk7XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3k6ICRvbGQgIWdsb2JhbDtcbn1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIGEgcGFyc2VkIGxheW91dCBtYXAgYmFzZWQgb24gc2hvcnRoYW5kIHN5bnRheFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gbGF5b3V0KFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbn1cblxuXG4vLyBHZXQgTGF5b3V0XG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuZXcgbGF5b3V0IGJhc2VkIG9uIGN1cnJlbnQgYW5kIGdpdmVuIHNldHRpbmdzXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AZnVuY3Rpb24gX2dldC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkbGF5b3V0OiBsYXlvdXQoJGxheW91dCk7XG4gIEByZXR1cm4gaWYoJGNsZWFuLCAkbGF5b3V0LCBfc3VzeS1kZWVwLW1lcmdlKCRzdXN5LCAkbGF5b3V0KSk7XG59XG4iLCIvLyBTdXN5IEJveCBTaXppbmdcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgYm94IG1vZGVsIGdsb2JhbGx5IG9uIGFsbCBlbGVtZW50cy5cbi8vIC0gWyRib3hdOiBib3JkZXItYm94IHwgY29udGVudC1ib3hcbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gZ2xvYmFsLWJveC1zaXppbmcoXG4gICRib3g6IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSxcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3Q6ICRib3g7XG5cbiAgQGlmICRpbmhlcml0IHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgaHRtbCB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gICAgICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG4gICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdsb2JhbC1ib3gtc2l6aW5nLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHVwZGF0ZS1ib3gtbW9kZWwoJGJveCk7XG59XG5cbi8vIEJvcmRlciBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gQSBsZWdhY3kgc2hvcnRjdXQuLi5cbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gYm9yZGVyLWJveC1zaXppbmcoXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGdsb2JhbC1ib3gtc2l6aW5nKGJvcmRlci1ib3gsICRpbmhlcml0KTtcbn1cblxuLy8gVXBkYXRlIEJveCBNb2RlbFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVXBkYXRlcyBnbG9iYWwgYm94IG1vZGVsIHNldHRpbmdcbkBtaXhpbiB1cGRhdGUtYm94LW1vZGVsKFxuICAkYm94XG4pIHtcbiAgQGlmICRib3ggIT0gc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpIHtcbiAgQGluY2x1ZGUgc3VzeS1zZXQoZ2xvYmFsLWJveC1zaXppbmcsICRib3gpO1xuICB9XG59XG4iLCIvLyBDb250ZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gTmVzdGVkIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgZ3JpZCBmb3IgbmVzdGVkIGNvbnRleHQuXG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGNvbnRleHQgICAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJHNwYW4gICAgICAgOiBzdXN5LWdldChzcGFuLCAkY29udGV4dCk7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRjb250ZXh0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbn1cblxuLy8gTmVzdGVkIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBVc2UgYSBzdWJzZXQgZ3JpZCBmb3IgYSBuZXN0ZWQgY29udGV4dFxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG4vLyAtIEBjb250ZW50ICAgOiA8Y29udGVudD5cbkBtaXhpbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkb2xkICAgICAgOiBzdXN5LWdldChjb2x1bW5zKTtcbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogbmVzdGVkKCRjb250ZXh0KSkpICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KG5lc3RlZCwgJGluc3BlY3QpO1xuICBAY29udGVudDtcblxuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiAkb2xkKSkgIWdsb2JhbDtcbn1cbiIsIi8vIEJhY2tncm91bmQgR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiBmYWxzZTtcblxuXG4vLyBTaG93IEdyaWQvc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFNob3cgZ3JpZCBvbiBhbnkgZWxlbWVudCB1c2luZyBlaXRoZXIgYmFja2dyb3VuZCBvciBvdmVybGF5LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBzaG93LWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0OiAkZ3JpZDtcbiAgJF9vdXRwdXQ6IGRlYnVnLWdldChvdXRwdXQsICRncmlkKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc2hvdy1ncmlkLCAkaW5zcGVjdCk7XG4gIEBpZiAkX291dHB1dCA9PSBvdmVybGF5IGFuZCBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpICE9IGhpZGUge1xuICAgIEBpbmNsdWRlIG92ZXJsYXktZ3JpZCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gIH1cbn1cblxuQG1peGluIHNob3ctZ3JpZHMoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkZ3JpZCk7XG59XG5cbi8vIEJhY2tncm91bmQgR3JpZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTaG93IGEgZ3JpZCBiYWNrZ3JvdW5kIG9uIGFueSBlbGVtZW50LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRncmlkO1xuICAkX291dHB1dCAgOiBnZXQtYmFja2dyb3VuZCgkZ3JpZCk7XG5cbiAgQGlmIGxlbmd0aCgkX291dHB1dCkgPiAwIHtcbiAgICAkX2Zsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKTtcblxuICAgICRfaW1hZ2U6ICgpO1xuICAgIEBlYWNoICRuYW1lLCAkbGF5ZXIgaW4gbWFwLWdldCgkX291dHB1dCwgaW1hZ2UpIHtcbiAgICAgICRfZGlyZWN0aW9uOiBpZigkbmFtZSA9PSBiYXNlbGluZSwgdG8gYm90dG9tLCB0byB0bygkX2Zsb3cpKTtcbiAgICAgICRfaW1hZ2U6IGFwcGVuZCgkX2ltYWdlLCBsaW5lYXItZ3JhZGllbnQoJF9kaXJlY3Rpb24sICRsYXllciksIGNvbW1hKTtcbiAgICB9XG4gICAgJF9vdXRwdXQ6IG1hcC1tZXJnZSgkX291dHB1dCwgKGltYWdlOiAkX2ltYWdlKSk7XG5cbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmFja2dyb3VuZC1ncmlkLCAkaW5zcGVjdCk7XG4gIH1cbn1cblxuXG4vLyBPdmVybGF5IEdyaWRcbi8vIC0tLS0tLS0tLS0tLVxuLy8gR2VuZXJhdGUgYW4gaWNvbiB0byB0cmlnZ2VyIGdyaWQtb3ZlcmxheXMgb24gYW55IGdpdmVuIGVsZW1lbnRzLlxuLy8gJGdyaWRzLi4uICA6IDxzZWxlY3Rvcj4gWzxzZXR0aW5ncz5dIFssIDxzZWxlY3Rvcj5dKlxuQG1peGluIG92ZXJsYXktZ3JpZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpZiBub3QoJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzKSB7XG4gICAgQGF0LXJvb3QgaGVhZCB7IEBpbmNsdWRlIG92ZXJsYXktaGVhZCgkZ3JpZCk7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmJlZm9yZSB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlcjsgfVxuICAgIEBhdC1yb290IGhlYWQ6aG92ZXIgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXItaG92ZXI7IH1cbiAgICAkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIGhlYWQ6aG92ZXIgfiAmLFxuICBoZWFkOmhvdmVyIH4gYm9keSAmIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1vdmVybGF5LWJhc2U7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXIge1xuICBjb250ZW50OiBcInx8fFwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGZvbnQ6IHtcbiAgICBmYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgc2l6ZTogMTZweDtcbiAgICB3ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyIEhvdmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjUpO1xuICBjb2xvcjogcmVkO1xufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IEhlYWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDxoZWFkPiBzdHlsZXMgdG8gY3JlYXRlIGdyaWQgb3ZlcmxheSB0b2dnbGVcbkBtaXhpbiBvdmVybGF5LWhlYWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkX3RvZ2dsZTogZGVidWctZ2V0KHRvZ2dsZSwgJGdyaWQpO1xuICAkX2hvcno6IG51bGw7XG4gICRfdmVydDogbnVsbDtcblxuICBAZWFjaCAkc2lkZSBpbiAkX3RvZ2dsZSB7XG4gICAgJF9ob3J6OiBpZigkc2lkZSA9PSBsZWZ0IG9yICRzaWRlID09IHJpZ2h0LCAkc2lkZSwgJF9ob3J6KTtcbiAgICAkX3ZlcnQ6IGlmKCRzaWRlID09IHRvcCBvciAkc2lkZSA9PSBib3R0b20sICRzaWRlLCAkX3ZlcnQpO1xuICB9XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgI3skX2hvcnp9OiAxMHB4O1xuICAjeyRfdmVydH06IDEwcHg7XG4gIHotaW5kZXg6IDk5OTtcbiAgY29sb3I6ICMzMzM7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC4yNSk7XG59XG5cblxuLy8gW1ByaXZhdGVdIEdyaWQgT3ZlcmxheSBCYXNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJhc2Ugc3R5bGVzIGZvciBnZW5lcmF0aW5nIGEgZ3JpZCBvdmVybGF5XG5AbWl4aW4gZ3JpZC1vdmVybGF5LWJhc2UoKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBjb250ZW50OiBcIiBcIjtcbiAgei1pbmRleDogOTk4O1xufVxuXG5cbi8vIEdldCBTeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1zeW0oXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgICAgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfZ3V0dGVycyAgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRncmlkKTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkZ3JpZCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRncmlkKTtcblxuICAkX2NvbG9yICAgICAgICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX3RyYW5zICAgICAgICAgOiB0cmFuc3BhcmVudDtcbiAgJF9saWdodCAgICAgICAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuXG4gICRfZW5kICAgICAgICAgICA6IDEgKyAkX2d1dHRlcnM7XG4gICRfYWZ0ZXIgICAgICAgICA6IHBlcmNlbnRhZ2UoMS8kX2VuZCk7XG4gICRfc3RvcHMgICAgICAgICA6ICgpO1xuICAkX3NpemUgICAgICAgICAgOiBzcGFuKDEgJGdyaWQgd2lkZSk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQ7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3NwbGl0OiAkX2d1dHRlcnMvMjtcbiAgICAkX2JlZm9yZTogcGVyY2VudGFnZSgkX3NwbGl0LyRfZW5kKTtcbiAgICAkX2FmdGVyOiBwZXJjZW50YWdlKCgxICsgJF9zcGxpdCkvJF9lbmQpO1xuICAgICRfc3RvcHM6ICRfdHJhbnMgJF9iZWZvcmUsICRfY29sb3IgJF9iZWZvcmUsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfVxuXG4gIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAkX3NpemU6IHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpICogJF9lbmQ7XG4gIH1cblxuICAkX291dHB1dDogKFxuICAgIGltYWdlOiAoY29sdW1uczogJF9zdG9wcyksXG4gICAgc2l6ZTogJF9zaXplLFxuICApO1xuXG4gIEByZXR1cm4gJF9vdXRwdXQ7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBJbnNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0taW5zaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIFNwbGl0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tc3BsaXQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkc3RhcnQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcblxuICAgICRfZW5kOiAkc3RhcnQgKyBzcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkX2VuZCwgY29tbWEpO1xuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBPdXRzaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1vdXRzaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3RyYW5zICAgOiB0cmFuc3BhcmVudDtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRndXR0ZXI6IGdldC1zcGFuLXdpZHRoKGZpcnN0ICRsb2NhdGlvbiAkZ3JpZCk7XG5cbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcblxuICAgICAgJGd1dHRlcjogJF9saWdodCAkZ3V0dGVyLCAkX3RyYW5zICRndXR0ZXIsICRfdHJhbnMgJF9lbmQ7XG4gICAgICAkdGhpcy1zdG9wOiBqb2luKCR0aGlzLXN0b3AsICRndXR0ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLWFzeW0oXG4gICRncmlkXG4pIHtcbiAgJF9zdG9wczogKCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLWluc2lkZSgkZ3JpZCk7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1zcGxpdCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLW91dHNpZGUoJGdyaWQpO1xuICB9XG5cbiAgQHJldHVybiAoaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSk7XG59XG5cblxuLy8gR2V0IEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfc2hvdyAgICA6IHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCk7XG4gICRfcmV0dXJuICA6ICgpO1xuXG4gIEBpZiAkX3Nob3cgYW5kICRfc2hvdyAhPSAnaGlkZScge1xuICAgICRfY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgJF9zeW06IGlzLXN5bW1ldHJpY2FsKCRfY29sdW1ucyk7XG4gICAgICAkX3JldHVybjogaWYoJF9zeW0sIGdldC1iYWNrZ3JvdW5kLXN5bSgkZ3JpZCksIGdldC1iYWNrZ3JvdW5kLWFzeW0oJGdyaWQpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBjb250ZW50LWJveCkpO1xuICAgIH1cblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctY29sdW1ucydcbiAgICAgIGFuZCBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKGJhc2UtbGluZS1oZWlnaHQpXG4gICAgICBhbmQgdHlwZS1vZigkYmFzZS1saW5lLWhlaWdodCkgPT0gJ251bWJlcidcbiAgICAgIGFuZCBub3QgdW5pdGxlc3MoJGJhc2UtbGluZS1oZWlnaHQpIHtcbiAgICAgICRfY29sb3I6IHZhcmlhYmxlLWV4aXN0cygnZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yJyk7XG4gICAgICAkX2NvbG9yOiBpZigkX2NvbG9yLCAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yLCAjMDAwKTtcblxuICAgICAgJF9pbWFnZTogbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpO1xuICAgICAgJF9zaXplOiBtYXAtZ2V0KCRfcmV0dXJuLCBzaXplKTtcbiAgICAgICRfYmFzZWxpbmU6IChiYXNlbGluZTogKCRfY29sb3IgMXB4LCB0cmFuc3BhcmVudCAxcHgpKTtcbiAgICAgICRfYmFzZWxpbmUtc2l6ZTogMTAwJSAkYmFzZS1saW5lLWhlaWdodDtcblxuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKFxuICAgICAgICBpbWFnZTogaWYoJF9pbWFnZSwgbWFwLW1lcmdlKCRfaW1hZ2UsICRfYmFzZWxpbmUpLCAkX2Jhc2VsaW5lKSxcbiAgICAgICAgc2l6ZTogaWYoJF9zaXplLCAoJF9zaXplLCAkX2Jhc2VsaW5lLXNpemUpLCAkX2Jhc2VsaW5lLXNpemUpLFxuICAgICAgKSk7XG5cbiAgICAgIEBpZiAkX3Nob3cgPT0gJ3Nob3cnIHtcbiAgICAgICAgJF9jbGlwOiBtYXAtZ2V0KCRfcmV0dXJuLCBjbGlwKTtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGpvaW4oJF9jbGlwLCBib3JkZXItYm94LCBjb21tYSkpKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRfc2hvdyA9PSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgQHdhcm4gJ1BsZWFzZSBwcm92aWRlIGEgJGJhc2UtbGluZS1oZWlnaHQgd2l0aCB0aGUgZGVzaXJlZCBoZWlnaHQgYW5kIHVuaXRzJztcbiAgICB9XG4gIH1cblxuICBAaWYgbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIEdldCBEZWJ1Z1xuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgZGVidWcgc2V0dGluZ1xuLy8gLSAka2V5OiA8c2V0dGluZz5cbkBmdW5jdGlvbiBkZWJ1Zy1nZXQoXG4gICRrZXksXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRrZXk6IGpvaW4oZGVidWcsICRrZXksIHNwYWNlKTtcbiAgQHJldHVybiBzdXN5LWdldCgka2V5LCAkZ3JpZCk7XG59XG4iLCIvLyBDb250YWluZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgY29udGFpbmVyIGVsZW1lbnRcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgICAgOiAkbGF5b3V0O1xuICAkbGF5b3V0ICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG5cbiAgJF93aWR0aCAgICAgOiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xuICAkX2p1c3RpZnkgICA6IHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihzdXN5LWdldChjb250YWluZXItcG9zaXRpb24sICRsYXlvdXQpKTtcbiAgJF9wcm9wZXJ0eSAgOiBpZihzdXN5LWdldChtYXRoLCAkbGF5b3V0KSA9PSBzdGF0aWMsIHdpZHRoLCBtYXgtd2lkdGgpO1xuXG4gICRfYm94ICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJGxheW91dCk7XG5cbiAgQGlmICRfYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRfYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoY29udGFpbmVyLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGZsb2F0LWNvbnRhaW5lcigkX3dpZHRoLCAkX2p1c3RpZnksICRfcHJvcGVydHkpO1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGxheW91dCk7XG59XG5cbi8vIENvbnRhaW5lciBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICBAcmV0dXJuIGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG59XG5cbi8vIEdldCBDb250YWluZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSB0aGUgY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XTogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1jb250YWluZXItd2lkdGgoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dCAgICAgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF93aWR0aCAgICAgICAgIDogc3VzeS1nZXQoY29udGFpbmVyLCAkbGF5b3V0KTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkbGF5b3V0KTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGxheW91dCk7XG5cbiAgQGlmIG5vdCgkX3dpZHRoKSBvciAkX3dpZHRoID09IGF1dG8ge1xuICAgIEBpZiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSB7XG4gICAgICAkX2NvbHVtbnMgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRsYXlvdXQpO1xuICAgICAgJF9ndXR0ZXJzICAgOiBzdXN5LWdldChndXR0ZXJzLCAkbGF5b3V0KTtcbiAgICAgICRfc3ByZWFkICAgIDogaWYoaXMtc3BsaXQoJGxheW91dCksIHdpZGUsIG5hcnJvdyk7XG4gICAgICAkX3dpZHRoICAgICA6IHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkgKiAkX2NvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3dpZHRoO1xufVxuXG4vLyBQYXJzZSBDb250YWluZXIgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyc2UgdGhlICRjb250YWluZXItcG9zaXRpb24gaW50byBtYXJnaW4gdmFsdWVzLlxuLy8gLSBbJGp1c3RpZnldICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCA8bGVuZ3RoPiBbPGxlbmd0aD5dXG5AZnVuY3Rpb24gcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKFxuICAkanVzdGlmeTogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgY29udGFpbmVyLXBvc2l0aW9uKVxuKSB7XG4gICRfcmV0dXJuOiBpZigkanVzdGlmeSA9PSBsZWZ0LCAwLCBhdXRvKSBpZigkanVzdGlmeSA9PSByaWdodCwgMCwgYXV0byk7XG5cbiAgQGlmIG5vdChpbmRleChsZWZ0IHJpZ2h0IGNlbnRlciwgJGp1c3RpZnkpKSB7XG4gICAgJF9yZXR1cm46IG50aCgkanVzdGlmeSwgMSk7XG4gICAgJF9yZXR1cm46ICRfcmV0dXJuIGlmKGxlbmd0aCgkanVzdGlmeSkgPiAxLCBudGgoJGp1c3RpZnksIDIpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU3BhbiBTeW50YXhcbi8vID09PT09PT09PT09XG5cbi8vIFNwYW4gW21peGluXVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBzcGFubmluZyBlbGVtZW50IHVzaW5nIHNob3J0aGFuZCBzeW50YXguXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbjogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRvdXRwdXQ6IHNwYW4tbWF0aCgkc3Bhbik7XG4gICRuZXN0aW5nOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjbGVhcjogc3VzeS1nZXQoY2xlYXIsICRzcGFuKTtcblxuICAkYm94OiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRjb250ZW50LWJveDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuICAkYm94OiAkYm94IG9yIGlmKGlzLWluc2lkZSgkc3BhbikgYW5kICRjb250ZW50LWJveCwgYm9yZGVyLWJveCwgbnVsbCk7XG5cbiAgQGlmICRjbGVhciA9PSBicmVhayB7XG4gICAgQGluY2x1ZGUgYnJlYWs7XG4gIH0gQGVsc2UgaWYgJGNsZWFyID09IG5vYnJlYWsge1xuICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3BhbiwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTtcbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgQGlmIHZhbGlkLWNvbHVtbnMoJG5lc3RpbmcsIHNpbGVudCkge1xuICAgIEBpbmNsdWRlIG5lc3RlZCgkc3BhbikgeyBAY29udGVudDsgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTcGFuIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIHNwYW4uXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQGZ1bmN0aW9uIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgQHJldHVybiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG59XG5cbi8vIFNwYW4gTWF0aFxuLy8gLS0tLS0tLS0tXG4vLyBHZXQgYWxsIHRoZSBzcGFuIHJlc3VsdHMuXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIHNwYW4tbWF0aChcbiAgJHNwYW5cbikge1xuICAkbmVzdCAgICAgICAgICAgICA6IGlmKHN1c3ktZ2V0KHJvbGUsICRzcGFuKSA9PSBuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRzcGxpdC1uZXN0ICAgICAgIDogaWYoaXMtc3BsaXQoJHNwYW4pIGFuZCAkbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZWRnZSAgICAgICAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgICAgICAgOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbTtcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsO1xuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGw7XG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbDtcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aWR0aHNcbiAgJHNwcmVhZDogaW5kZXgobWFwLXZhbHVlcygkc3BhbiksIHNwcmVhZCk7XG4gICRzcGFuOiBpZigkc3BsaXQtbmVzdCBhbmQgbm90KCRzcHJlYWQpLCBtYXAtbWVyZ2UoJHNwYW4sIChzcHJlYWQ6IHdpZGUpKSwgJHNwYW4pO1xuICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbiAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAvLyBhcHBseSBndXR0ZXJzXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaWYgbm90KHN1c3ktZ2V0KHJvbGUsICRzcGFuKSkge1xuICAgICAgJHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBub3QoJHNwbGl0LW5lc3QpIHtcbiAgICAgICRtYXJnaW4tYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJG1hcmdpbi1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNwZWNpYWwgbWFyZ2luIGhhbmRsaW5nXG4gIEBpZiBzdXN5LWdldChvdXRwdXQsICRzcGFuKSA9PSBpc29sYXRlIGFuZCAkbG9jYXRpb24ge1xuICAgICRtYXJnaW4tYmVmb3JlOiBnZXQtaXNvbGF0aW9uKCRzcGFuKTtcbiAgICAkbWFyZ2luLWFmdGVyOiAtMTAwJTtcbiAgfSBAZWxzZSBpZiAkZWRnZSB7XG4gICAgJGlzLXNwbGl0OiBpcy1zcGxpdCgkc3Bhbik7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG5cbiAgICBAaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkZmxvYXQ6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJHNwYW4pO1xuICAgIH1cblxuICAgIEBpZiBub3QoJGlzLXNwbGl0KSB7XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gZmlyc3QgYW5kICRwb3MgPT0gYmVmb3JlKSB7XG4gICAgICAgICRtYXJnaW4tYmVmb3JlOiAwO1xuICAgICAgfVxuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGxhc3QgYW5kICRwb3MgPT0gYWZ0ZXIpIHtcbiAgICAgICAgJG1hcmdpbi1hZnRlcjogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gKFxuICAgIHdpZHRoICAgICAgICAgICA6ICR3aWR0aCxcbiAgICBmbG9hdCAgICAgICAgICAgOiAkZmxvYXQsXG4gICAgbWFyZ2luLWJlZm9yZSAgIDogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLWFmdGVyICAgIDogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLWJlZm9yZSAgOiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy1hZnRlciAgIDogJHBhZGRpbmctYWZ0ZXIsXG4gICAgZmxvdyAgICAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xufVxuXG4vLyBHZXQgU3BhbiBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBzcGFuIHdpZHRoLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBnZXQtc3Bhbi13aWR0aChcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcblxuICAkbiAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRsb2NhdGlvbiA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycywgJHNwYW4pO1xuICAkc3ByZWFkICAgOiBzdXN5LWdldChzcHJlYWQsICRzcGFuKTtcblxuICAkY29udGV4dCAgOiBudWxsO1xuICAkc3Bhbi1zdW0gOiBudWxsO1xuICAkd2lkdGggICAgOiBudWxsO1xuXG4gIEBpZiAkbiA9PSAnZnVsbCcge1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuICAgICRyb2xlOiBzdXN5LWdldChyb2xlLCAkc3Bhbik7XG4gICAgJG46IGlmKCRwb3MgPT0gc3BsaXQgYW5kICRyb2xlICE9IG5lc3QsIHN1c3ktY291bnQoJGNvbHVtbnMpLCAxMDAlKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRuKSAhPSBudW1iZXIge1xuICAgIEB3YXJuIFwiKCN7dHlwZS1vZigkbil9KSAjeyRufSBpcyBub3QgYSB2YWxpZCBzcGFuLlwiO1xuICB9IEBlbHNlIGlmIHVuaXRsZXNzKCRuKSB7XG4gICAgJGNvbnRleHQ6IHN1c3ktc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgaWYoaXMtc3BsaXQoJHNwYW4pLCB3aWRlLCBuYXJyb3cpKTtcbiAgICAkc3ByZWFkOiBpZihpcy1pbnNpZGUoJHNwYW4pLCAkc3ByZWFkIG9yIHdpZGUsICRzcHJlYWQpO1xuICAgICRzcGFuLXN1bTogc3VzeSgkbiwgJGxvY2F0aW9uLCAkY29sdW1ucywgJGd1dHRlcnMsICRzcHJlYWQpO1xuXG4gICAgJF9tYXRoOiBzdXN5LWdldChtYXRoLCAkc3Bhbik7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJHNwYW4pO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICR3aWR0aDogJHNwYW4tc3VtICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJHNwYW4tc3VtIC8gJGNvbnRleHQpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHdpZHRoOiAkbjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuIiwiLy8gR3V0dGVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIEd1dHRlcnNcbi8vIC0tLS0tLS1cbi8vIFNldCBndXR0ZXJzIG9uIGFuIGVsZW1lbnQuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVycyA6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX291dHB1dDogKFxuICAgIGJlZm9yZTogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSksXG4gICAgYWZ0ZXI6IG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlciksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChndXR0ZXJzLCAkaW5zcGVjdCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH1cbn1cblxuQG1peGluIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZ3V0dGVycygkc3Bhbik7XG59XG5cblxuLy8gR3V0dGVyXG4vLyAtLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBndXR0ZXIuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRzcGFuOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX2d1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSBvciBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuXG5AZnVuY3Rpb24gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQHJldHVybiBndXR0ZXIoJHNwYW4pO1xufVxuXG5cbi8vIEdldCBHdXR0ZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBndXR0ZXIgd2lkdGguXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXItd2lkdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVycyA6IHN1c3ktZ2V0KGd1dHRlcnMsICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgIDogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkY29udGV4dCk7XG5cbiAgQGlmICRfZ3V0dGVycyBhbmQgKCRfZ3V0dGVycyA+IDApIGFuZCBub3QoJF9ndXR0ZXIpIHtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkY29udGV4dCk7XG4gICAgJF9tYXRoOiBndXR0ZXItbWF0aCgkY29udGV4dCk7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJF9ndXR0ZXI6ICRfZ3V0dGVycyAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuICAgICAgJF9zcHJlYWQgIDogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCB3aWRlLCBzdXN5LWdldChzcHJlYWQsICRjb250ZXh0KSk7XG4gICAgICAkX2d1dHRlciAgOiBwZXJjZW50YWdlKCRfZ3V0dGVycyAvIHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkpO1xuICAgIH1cbiAgfVxuXG4gICRfZ3V0dGVyOiBpZigkX2d1dHRlciA9PSAnbm8tZ3V0dGVycycgb3IgJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcicsIG51bGwsICRfZ3V0dGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVyO1xufVxuXG5cbi8vIEdldCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGJlZm9yZSBhbmQgYWZ0ZXIgZ3V0dGVyIHZhbHVlcy5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlcnMoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICAgICAgICAgICAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlci1wb3NpdGlvbiAgIDogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICAgICAgICAgICAgOiBnZXQtZ3V0dGVyLXdpZHRoKCRjb250ZXh0KTtcblxuICAkX3JldHVybiAgICAgICAgICAgIDogKGJlZm9yZTogbnVsbCwgYWZ0ZXI6IG51bGwpO1xuXG4gIEBpZiBpcy1zcGxpdCgkY29udGV4dCkgYW5kICRfZ3V0dGVyIHtcbiAgICAkX2d1dHRlcjogJF9ndXR0ZXIgLyAyO1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChiZWZvcmU6ICRfZ3V0dGVyLCBhZnRlcjogJF9ndXR0ZXIpKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRfZ3V0dGVyLXBvc2l0aW9uOiAkX2d1dHRlcikpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBJcyBJbnNpZGVcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIGluc2lkZS5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1pbnNpZGUoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9pbnNpZGU6IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX2luc2lkZSwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gSXMgU3BsaXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgc3BsaXQuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtc3BsaXQoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9zcGxpdDogc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfc3BsaXQsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIEd1dHRlciBNYXRoXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBtYXRoIHRvIHVzZSBmb3IgZ3V0dGVyIGNhbGN1bGF0aW9uc1xuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGd1dHRlci1tYXRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkX3JldHVybiAgOiBzdXN5LWdldChtYXRoLCAkY29udGV4dCk7XG4gICRfcmV0dXJuICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpID09IGluc2lkZS1zdGF0aWMsIHN0YXRpYywgJF9yZXR1cm4pO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBJc29sYXRpb24gU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cblxuLy8gSXNvbGF0ZSBbTWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBpc29sYXRpb24gYXMgYW4gb3ZlcnJpZGUuXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AbWl4aW4gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaW5zcGVjdDogJGlzb2xhdGU7XG5cbiAgJG91dHB1dDogKFxuICAgIHB1c2g6IGlzb2xhdGUoJGlzb2xhdGUpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRpc29sYXRlKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoaXNvbGF0ZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBpc29sYXRlLW91dHB1dCgkb3V0cHV0Li4uKTtcbn1cblxuXG4vLyBJc29sYXRlIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGFuIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGguXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AZnVuY3Rpb24gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaXNvbGF0ZTogcGFyc2Utc3BhbigkaXNvbGF0ZSk7XG4gICRpc29sYXRpb246IHN1c3ktZ2V0KHNwYW4sICRpc29sYXRlKTtcblxuICBAaWYgJGlzb2xhdGlvbiBhbmQgbm90KGdldC1sb2NhdGlvbigkaXNvbGF0ZSkpIHtcbiAgICAkbmV3OiAoXG4gICAgICBzcGFuOiBudWxsLFxuICAgICAgbG9jYXRpb246ICRpc29sYXRpb24sXG4gICAgKTtcbiAgICAkaXNvbGF0ZTogbWFwLW1lcmdlKCRpc29sYXRlLCAkbmV3KTtcbiAgfVxuXG4gIEByZXR1cm4gZ2V0LWlzb2xhdGlvbigkaXNvbGF0ZSk7XG59XG5cblxuLy8gR2V0IElzb2xhdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBpc29sYXRpb24gb2Zmc2V0IHdpZHRoXG4vLyAtICRpbnB1dDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtaXNvbGF0aW9uKFxuICAkaW5wdXRcbikge1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkaW5wdXQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRpbnB1dCk7XG4gICR3aWR0aCAgICAgIDogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciBhbmQgbm90KHVuaXRsZXNzKCRsb2NhdGlvbikpIHtcbiAgICAkd2lkdGg6ICRsb2NhdGlvbjtcbiAgfSBAZWxzZSBpZiAkbG9jYXRpb24ge1xuICAgICRwdXNoOiAkbG9jYXRpb24gLSAxO1xuICAgIEBpZiAkcHVzaCA+IDAge1xuICAgICAgJHB1c2g6IG1hcC1tZXJnZSgkaW5wdXQsIChcbiAgICAgICAgc3BhbjogJHB1c2gsXG4gICAgICAgIGxvY2F0aW9uOiAxLFxuICAgICAgICBzcHJlYWQ6IHdpZGUsXG4gICAgICApKTtcbiAgICAgICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHB1c2gpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRpbnB1dCkgPT0gc3BsaXRcbiAgICAgIGFuZCBzdXN5LWdldChndXR0ZXJzLCAkaW5wdXQpID4gMCB7XG4gICAgJHdpZHRoOiBpZigkd2lkdGggPT0gbnVsbCwgZ3V0dGVycygkaW5wdXQpLCAkd2lkdGggKyBndXR0ZXJzKCRpbnB1dCkpO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGggb3IgMDtcbn1cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJvdyBTdGFydCAmIEVuZFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIEJyZWFrXG4vLyAtLS0tLVxuLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCBzaG91bGQgZm9yY2UgYSBsaW5lIGJyZWFrLlxuQG1peGluIGJyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogYm90aCkpO1xufVxuXG5cbi8vIE5vQnJlYWtcbi8vIC0tLS0tLS1cbi8vIENhbmNlbCB0aGUgYnJlYWsoKSBlZmZlY3QsIGUuZy4gd2hlbiB1c2luZyBtZWRpYSBxdWVyaWVzLlxuQG1peGluIG5vYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBub25lKSk7XG59XG5cblxuLy8gRnVsbFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8bGF5b3V0IHNob3J0aGFuZD5cbkBtaXhpbiBmdWxsKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCA6ICRjb250ZXh0O1xuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZnVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBzcGFuKGZ1bGwgb2YgcGFyc2UtZ3JpZCgkY29udGV4dCkgYnJlYWspO1xufVxuXG5cbi8vIEZpcnN0XG4vLyAtLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gZmlyc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmaXJzdCwgJGluc3BlY3QpO1xuICBAaWYgbm90KGlzLXNwbGl0KCRjb250ZXh0KSkge1xuICAgIEBpbmNsdWRlIGZsb2F0LWZpcnN0KCRmbG93KTtcbiAgfVxufVxuXG5AbWl4aW4gYWxwaGEoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGZpcnN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBMYXN0XG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBsYXN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxhc3QsICRpbnNwZWN0KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpLFxuICAgIGxhc3QtZmxvdzogc3VzeS1nZXQobGFzdC1mbG93LCAkY29udGV4dCksXG4gICAgbWFyZ2luOiBpZihpcy1zcGxpdCgkY29udGV4dCksIG51bGwsIDApLFxuICApO1xuXG4gIEBpbmNsdWRlIGZsb2F0LWxhc3QoJG91dHB1dC4uLik7XG59XG5cbkBtaXhpbiBvbWVnYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgbGFzdCgkY29udGV4dCk7XG59XG5cblxuLy8gR2V0IEVkZ2Vcbi8vIC0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgZWRnZSB2YWx1ZSBiYXNlZCBvbiBsb2NhdGlvbiwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtZWRnZShcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IHN1c3ktZ2V0KGVkZ2UsICRzcGFuKTtcblxuICBAaWYgbm90KCRlZGdlKSB7XG4gICAgJGNvdW50OiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSk7XG4gICAgJGxvY2F0aW9uOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAgICRuOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgICAkbnVtYmVyOiBpZih0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyLCB0cnVlLCBmYWxzZSk7XG4gICAgJGluZGV4OiBpZigkbnVtYmVyIGFuZCB1bml0bGVzcygkbG9jYXRpb24pLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJG4gPT0gJGNvdW50IHtcbiAgICAgICRlZGdlOiBmdWxsO1xuICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uIGFuZCAkbiBhbmQgJGluZGV4IHtcbiAgICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAgICRlZGdlOiBpZigkbiA9PSAkY291bnQsIGZ1bGwsIGZpcnN0KTtcbiAgICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uICsgJG4gLSAxID09ICRjb3VudCB7XG4gICAgICAgICRlZGdlOiBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkZWRnZSA9PSBhbHBoYSBvciAkZWRnZSA9PSBvbWVnYSB7XG4gICAgJGVkZ2U6IGlmKCRlZGdlID09IGFscGhhLCBmaXJzdCwgbGFzdCk7XG4gIH1cblxuICBAcmV0dXJuICRlZGdlO1xufVxuXG5cbi8vIEdldCBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgbG9jYXRpb24gdmFsdWUgYmFzZWQgb24gZWRnZSwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtbG9jYXRpb24oXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJG4gICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgQGlmICRlZGdlIGFuZCBub3QoJGxvY2F0aW9uKSBhbmQgdHlwZS1vZigkbikgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkbikge1xuICAgIEBpZiAkZWRnZSA9PSBmaXJzdCB7XG4gICAgICAkbG9jYXRpb246IDE7XG4gICAgfSBAZWxzZSBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRsb2NhdGlvbjogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpIC0gJG4gKyAxO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxvY2F0aW9uXG59XG4iLCIvLyBNYXJnaW4gU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cbi8vIFByZVxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW4gICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJGd1dHRlciA6IGd1dHRlcigkc3Bhbik7XG4gICRzcGFuICAgOiBzcGFuKCRzcGFuKTtcbiAgJHdpZHRoICA6IGlmKCRzcGxpdCBhbmQgJGd1dHRlciwgJHNwYW4gKyAkZ3V0dGVyLCAkc3Bhbik7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBQb3N0XG4vLyAtLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwb3N0KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwb3N0LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFB1c2hcbi8vIC0tLS1cbi8vIFNpbXBsZSBzeW5vbnltbiBmb3IgcHJlLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdXNoKFxuICAkc3BhblxuKSB7XG4gIEBpbmNsdWRlIHByZSgkc3Bhbik7XG59XG5cbi8vIFB1bGxcbi8vIC0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdWxsKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIDAgLSBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIDAgLSBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHB1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3F1aXNoXG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBzcXVpc2goXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICAgICAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcXVpc2gsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlKCRwcmUpO1xuICBAaW5jbHVkZSBwb3N0KCRwb3N0KTtcbn1cbiIsIi8vIFBhZGRpbmcgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZWZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTdWZmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3VmZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzdWZmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFBhZFxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gcGFkKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBhZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmVmaXgoJHByZSk7XG4gIEBpbmNsdWRlIHN1ZmZpeCgkcG9zdCk7XG5cbn1cbiIsIi8vIEJsZWVkIFN5bnRheFxuLy8gPT09PT09PT09PT09XG5cbi8vIEJsZWVkXG4vLyAtLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIG1hcmdpbnMsIGFuZCBlcXVhbCBwb3NpdGl2ZSBwYWRkaW5nIHRvIGNyZWF0ZSBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkKFxuICAkYmxlZWQ6IDAgZ3V0dGVyKClcbikge1xuICAkaW5zcGVjdCAgOiAkYmxlZWQ7XG4gICRvdXRwdXQgICA6IGdldC1ibGVlZCgkYmxlZWQpO1xuXG4gIEBpZiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gY29udGVudC1ib3gge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgoYm94LXNpemluZzogY29udGVudC1ib3gpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChibGVlZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cblxuLy8gQmxlZWQteFxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIGhvcml6b250YWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC14KFxuICAkYmxlZWQ6IGd1dHRlcigpXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMikgMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC14IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBCbGVlZC15XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgdmVydGljYWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC15KFxuICAkYmxlZWQ6IGlmKGZ1bmN0aW9uLWV4aXN0cyhyaHl0aG0pLCByaHl0aG0oMSksIDFlbSlcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDApKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCBudGgoJHRyYmwsIDIpIDApKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXkgb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEdldCBCbGVlZFxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmxlZWQgb3V0cHV0IHZhbHVlc1xuLy8gLSAkYmxlZWQ6IDxzcGFuPlxuQGZ1bmN0aW9uIGdldC1ibGVlZChcbiAgJGJsZWVkXG4pIHtcbiAgJGJsZWVkICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRibGVlZCkpO1xuICAkdHJibCAgICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuICAkc2hvcnQgICAgOiBudWxsO1xuICAkb3V0cHV0ICAgOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkdHJibCkge1xuICAgICR0aGlzOiBudGgoJHRyYmwsICRpKTtcbiAgICAkbmV3OiAoKTtcbiAgICAkbWFyZ2luOiBudWxsO1xuICAgICRwYWRkaW5nOiBudWxsO1xuICAgICRwYWRkaW5nLXg6IG51bGw7XG5cbiAgICBAaWYgJHRoaXMgPiAwIHtcbiAgICAgICR0aGlzOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogJHRoaXMpKTtcbiAgICAgICRtYXJnaW46IHNwYW4oJHRoaXMpO1xuICAgICAgJHBhZGRpbmc6ICRtYXJnaW47XG4gICAgICAkcGFkZGluZy14OiAkcGFkZGluZztcbiAgICB9XG5cbiAgICBAaWYgJG1hcmdpbiBhbmQgJG1hcmdpbiA+IDAge1xuICAgICAgJG1hcmdpbjogLSAkbWFyZ2luO1xuXG4gICAgICBAaWYgaXMtaW5zaWRlKCR0aGlzKSB7XG4gICAgICAgICRndXR0ZXI6IGd1dHRlcigkdGhpcyk7XG4gICAgICAgICRqb2luOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCRwYWRkaW5nLCAkZ3V0dGVyKSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAkcGFkZGluZy14OiBpZigkam9pbiBhbmQgJHBhZGRpbmcgPiAwLCAkcGFkZGluZyArICRndXR0ZXIsICRwYWRkaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMiB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAzIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDQge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgJG5ldyk7XG4gIH1cblxuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRvdXRwdXQge1xuICAgICRvdXRwdXQ6IGlmKCR2YWx1ZSA9PSAwLCBtYXAtbWVyZ2UoJG91dHB1dCwgKCRwcm9wOiBudWxsKSksICRvdXRwdXQpO1xuICB9XG5cbiAgQHJldHVybiBibGVlZC1zaG9ydGhhbmQoJG91dHB1dCk7XG59XG5cbi8vIEJsZWVkIFNob3J0aGFuZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDb252ZXJ0IGJsZWVkIG91dHB1dCBpbnRvIHNob3J0aGFuZCB3aGVuIHBvc3NpYmxlLlxuLy8gLSAkYmxlZWQ6IDxvdXRwdXQgbWFwPlxuQGZ1bmN0aW9uIGJsZWVkLXNob3J0aGFuZChcbiAgJGJsZWVkXG4pIHtcbiAgJG1hcmdpbjogKCk7XG4gICRwYWRkaW5nOiAoKTtcbiAgJHJldHVybjogKCk7XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRibGVlZCB7XG4gICAgQGlmIHN0ci1pbmRleCgka2V5LCBtYXJnaW4pIHtcbiAgICAgICRtYXJnaW46IG1hcC1tZXJnZSgkbWFyZ2luLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfSBAZWxzZSBpZiBzdHItaW5kZXgoJGtleSwgcGFkZGluZykgPiAwIHtcbiAgICAgICRwYWRkaW5nOiBtYXAtbWVyZ2UoJHBhZGRpbmcsICgka2V5OiAkdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAkcHJvcHM6IChcbiAgICBtYXJnaW46ICRtYXJnaW4sXG4gICAgcGFkZGluZzogJHBhZGRpbmcsXG4gICk7XG5cbiAgQGVhY2ggJG5hbWUsICRtYXAgaW4gJHByb3BzIHtcbiAgICAkZm91cjogaWYobGVuZ3RoKG1hcC1rZXlzKCRtYXApKSA9PSA0LCB0cnVlLCBmYWxzZSk7XG4gICAgJG51bGw6IGlmKGluZGV4KG1hcC12YWx1ZXMoJG1hcCksIG51bGwpLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJGZvdXIgYW5kIG5vdCgkbnVsbCkge1xuICAgICAgJHRvcDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tdG9wJyk7XG4gICAgICAkcmlnaHQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXJpZ2h0Jyk7XG4gICAgICAkYm90dG9tOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1ib3R0b20nKTtcbiAgICAgICRsZWZ0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1sZWZ0Jyk7XG5cbiAgICAgICR0YjogaWYoJHRvcCA9PSAkYm90dG9tLCAkdG9wLCBudWxsKTtcbiAgICAgICRybDogaWYoJHJpZ2h0ID09ICRsZWZ0LCAkcmlnaHQsIG51bGwpO1xuICAgICAgJGFsbDogaWYoJHRiID09ICRybCwgJHRiLCBudWxsKTtcblxuICAgICAgJG5ldzogaWYoJGFsbCwgJGFsbCwgbnVsbCk7XG5cbiAgICAgIEBpZiBub3QoJG5ldykge1xuICAgICAgICBAaWYgJHRiIGFuZCAkcmwge1xuICAgICAgICAgICRuZXc6ICR0YiAkcmw7XG4gICAgICAgIH0gQGVsc2UgaWYgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRybCAkYm90dG9tO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRyaWdodCAkYm90dG9tICRsZWZ0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJG5hbWU6ICRuZXcpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAkbWFwKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBCcmVha3BvaW50IEludGVncmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW1lZGlhOiAoKSAhZGVmYXVsdDtcbiRzdXN5LW1lZGlhLWZhbGxiYWNrOiBmYWxzZSAhZGVmYXVsdDtcblxuJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICgpO1xuXG5cbi8vIFN1c3kgQnJlYWtwb2ludFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGFuZ2UgZ3JpZHMgYXQgZGlmZmVyZW50IG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRzLlxuLy8gLSAkcXVlcnkgICAgIDogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPiB8IDxtYXA+XG4vLyAtICRsYXlvdXQgICAgOiA8c2V0dGluZ3M+XG4vLyAtICRuby1xdWVyeSAgOiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1icmVha3BvaW50KFxuICAkcXVlcnksXG4gICRsYXlvdXQ6IGZhbHNlLFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1yb3V0ZXIoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAaWYgJGxheW91dCB7XG4gICAgICBAaW5jbHVkZSB3aXRoLWxheW91dCgkbGF5b3V0KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gU3VzeSBNZWRpYVxuLy8gLS0tLS0tLS0tLVxuLy8gLSAkcXVlcnk6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT5cbi8vIC0gJG5vLXF1ZXJ5OiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1tZWRpYShcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgJG9sZC1jb250ZXh0OiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgJG5hbWU6IGlmKG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkcXVlcnkpLCAkcXVlcnksIG51bGwpO1xuICAkcXVlcnk6IHN1c3ktZ2V0LW1lZGlhKCRxdWVyeSk7XG4gICRxdWVyeTogc3VzeS1wYXJzZS1tZWRpYSgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkcXVlcnksICRuYW1lKTtcblxuICBAaWYgJG5vLXF1ZXJ5IGFuZCB0eXBlLW9mKCRuby1xdWVyeSkgIT0gc3RyaW5nIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSB7XG4gICAgQG1lZGlhICN7c3VzeS1yZW5kZXItbWVkaWEoJHF1ZXJ5KX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJG5vLXF1ZXJ5KSA9PSBzdHJpbmcge1xuICAgICAgI3skbm8tcXVlcnl9ICYge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJG9sZC1jb250ZXh0LCAkY2xlYW46IHRydWUpO1xufVxuXG5cbi8vIE1lZGlhIFJvdXRlclxuLy8gLS0tLS0tLS0tLS0tXG4vLyBSb3V0IG1lZGlhIGFyZ3VtZW50cyB0byB0aGUgY29ycmVjdCBtaXhpbi5cbkBtaXhpbiBzdXN5LW1lZGlhLXJvdXRlcihcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChicmVha3BvaW50LCAobWl4aW46IGJyZWFrcG9pbnQpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktbWVkaWEoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFVwZGF0ZSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBTZXQgdGhlIG5ldyBtZWRpYSBjb250ZXh0XG5AbWl4aW4gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcXVlcnksXG4gICRuYW1lOiBudWxsLFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJHF1ZXJ5OiBtYXAtbWVyZ2UoKG5hbWU6ICRuYW1lKSwgJHF1ZXJ5KTtcblxuICBAaWYgJGNsZWFuIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogJHF1ZXJ5ICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiBtYXAtbWVyZ2UoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRxdWVyeSkgIWdsb2JhbDtcbiAgfVxufVxuXG5cbi8vIE1lZGlhIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgZnVsbCBtZWRpYSBjb250ZXh0LCBvciBhIHNpbmdsZSBtZWRpYSBwcm9wZXJ0eSAoZS5nLiBtaW4td2lkdGgpXG5AZnVuY3Rpb24gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcHJvcGVydHk6IGZhbHNlXG4pIHtcbiAgQGlmICRwcm9wZXJ0eSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcHJvcGVydHkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICB9XG59XG5cblxuLy8gR2V0IE1lZGlhXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBhIG5hbWVkIG1lZGlhLXF1ZXJ5IGZyb20gJHN1c3ktbWVkaWEuXG4vLyAtICRuYW1lOiA8a2V5PlxuQGZ1bmN0aW9uIHN1c3ktZ2V0LW1lZGlhKFxuICAkbmFtZVxuKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJG5hbWUpIHtcbiAgICAkbWFwLXZhbHVlOiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCAkbmFtZSk7XG4gICAgQGlmICgkbmFtZSA9PSAkbWFwLXZhbHVlKSB7XG4gICAgICAkbmFtZTogJG1hcC12YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRuYW1lOiBzdXN5LWdldC1tZWRpYSgkbWFwLXZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuYW1lO1xufVxuXG5cbi8vIFJlbmRlciBNZWRpYVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBCdWlsZCBhIG1lZGlhLXF1ZXJ5IHN0cmluZyBmcm9tIHZhcmlvdXMgbWVkaWEgc2V0dGluZ3NcbkBmdW5jdGlvbiBzdXN5LXJlbmRlci1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG91dHB1dDogbnVsbDtcbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHF1ZXJ5IHtcbiAgICAkc3RyaW5nOiBudWxsO1xuXG4gICAgQGlmICRwcm9wZXJ0eSA9PSBtZWRpYSB7XG4gICAgICAkc3RyaW5nOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RyaW5nOiAnKCN7JHByb3BlcnR5fTogI3skdmFsdWV9KSc7XG4gICAgfVxuXG4gICAgJG91dHB1dDogaWYoJG91dHB1dCwgJyN7JG91dHB1dH0gYW5kICN7JHN0cmluZ30nLCAkc3RyaW5nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuXG4vLyBQYXJzZSBNZWRpYVxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBwYXJzZWQgbWVkaWEtcXVlcnkgc2V0dGluZ3MgYmFzZWQgb24gc2hvcnRoYW5kXG5AZnVuY3Rpb24gc3VzeS1wYXJzZS1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG1xOiBudWxsO1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09IG1hcCB7XG4gICAgJG1xOiAkcXVlcnk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IG51bWJlciB7XG4gICAgJG1xOiAobWluLXdpZHRoOiAkcXVlcnkpO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBsaXN0IGFuZCBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gbnVtYmVyIHtcbiAgICAgICRtcTogKFxuICAgICAgICBtaW4td2lkdGg6IG1pbigkcXVlcnkuLi4pLFxuICAgICAgICBtYXgtd2lkdGg6IG1heCgkcXVlcnkuLi4pLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtcTogKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkbXE6IChtZWRpYTogJyN7JHF1ZXJ5fScpO1xuICB9XG5cbiAgQHJldHVybiAkbXE7XG59XG4iLCIvKlxuKiBTY3V0LCBhIGNvbGxlY3Rpb24gb2YgU2FzcyB1dGlsaXRpZXNcbiogdG8gZWFzZSBhbmQgaW1wcm92ZSBvdXIgaW1wbGVtZW50YXRpb25zIG9mIGNvbW1vbiBzdHlsZS1jb2RlIHBhdHRlcm5zLlxuKiB2MS40LjBcbiogRG9jcyBhdCBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dFxuKi9cblxuQG1peGluIHNjdXQtY2xlYXJmaXgge1xuXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jbGVhcmZpeCB7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG59XG5AbWl4aW4gc2N1dC1saXN0LXVuc3R5bGVkKFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZmxvYXRlZCAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRkaXI6IGxlZnQsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcblxuICAmID4gbGkge1xuICAgIGZsb2F0OiAkZGlyO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLSN7JGRpcn06ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWZsb2F0ZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZDtcbn1cblxuQGZ1bmN0aW9uIHNjdXQtYXV0b09yVmFsdWUgKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gYSBvciAkdmFsID09IGF1dG8ge1xuICAgIEByZXR1cm4gYXV0bztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LWNvb3JkcyAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgJHRvcDogbnRoKCRjb29yZGluYXRlcywgMSk7XG4gICRyaWdodDogbnRoKCRjb29yZGluYXRlcywgMik7XG4gICRib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpO1xuICAkbGVmdDogbnRoKCRjb29yZGluYXRlcywgNCk7XG5cbiAgQGlmICR0b3AgIT0gbiB7XG4gICAgdG9wOiBzY3V0LWF1dG9PclZhbHVlKCR0b3ApO1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbiB7XG4gICAgcmlnaHQ6IHNjdXQtYXV0b09yVmFsdWUoJHJpZ2h0KTtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBuIHtcbiAgICBib3R0b206IHNjdXQtYXV0b09yVmFsdWUoJGJvdHRvbSk7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG4ge1xuICAgIGxlZnQ6IHNjdXQtYXV0b09yVmFsdWUoJGxlZnQpO1xuICB9XG5cbn1cbkBmdW5jdGlvbiBzY3V0LXN0cmlwLXVuaXQgKFxuICAkbnVtXG4pIHtcblxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LWVtIChcbiAgJHBpeGVscyxcbiAgJGJhc2U6ICRzY3V0LWVtLWJhc2Vcbikge1xuXG4gIC8vICRiYXNlIGNvdWxkIGJlIGluIGVtIG9yIHB4IChubyB1bml0ID0gcHgpLlxuICAvLyBBZGp1c3QgYWNjb3JkaW5nbHkgdG8gY3JlYXRlIGEgJGRpdmlzb3IgdGhhdFxuICAvLyBzZXJ2ZXMgYXMgY29udGV4dCBmb3IgJHBpeGVscy5cbiAgJG11bHRpcGxpZXI6IGlmKHVuaXQoJGJhc2UpID09IGVtLCAxNiwgMSk7XG4gICRkaXZpc29yOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UpICogJG11bHRpcGxpZXI7XG5cbiAgJGVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tZW1zOiAoc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJGRpdmlzb3IpICogMWVtO1xuICAgICRlbS12YWxzOiBhcHBlbmQoJGVtLXZhbHMsICR2YWwtaW4tZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJGVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJGVtLXZhbHM7XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtcmVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1yZW0gKFxuICAkcGl4ZWxzXG4pIHtcblxuICAkcmVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcmVtczogc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJHNjdXQtcmVtLWJhc2UgKiAxcmVtO1xuICAgICRyZW0tdmFsczogYXBwZW5kKCRyZW0tdmFscywgJHZhbC1pbi1yZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHJlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJHJlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcmVtLXZhbHM7XG4gIH1cblxufVxuQG1peGluIHNjdXQtYm9yZGVyIChcbiAgJHN0eWxlLFxuICAkc2lkZXM6IG4geVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2lkZXMpID09IDIge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkc2lkZXMpID09IDQge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAzKSAhPSBuIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDQpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJTY3V0LWJvcmRlciByZXF1aXJlcyBhICRzaWRlcyBhcmd1bWVudCBvZiAyIG9yIDQgdmFsdWVzLlwiXG4gIH1cblxufVxuQG1peGluIHNjdXQtY2lyY2xlIChcbiAgJHNpemUsXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgQGlmICRjb2xvciA9PSBpbmhlcml0IHtcbiAgICAvLyBJZiB1c2VyIHdhbnRzIHRvIGluaGVyaXQgdGhlIGNvbG9yLFxuICAgIC8vIHRha2UgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgYm9yZGVyXG4gICAgLy8gY29sb3IgZGVmYXVsdHMgdG8gdGhlIHRleHQgY29sb3Igb2YgdGhlIGVsZW1lbnQuXG4gICAgYm9yZGVyLXdpZHRoOiAkc2l6ZSAvIDI7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgd2lkdGg6IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwganVzdCB1c2UgYmFja2dyb3VuZC1jb2xvci5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICB3aWR0aDogJHNpemU7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY29sb3Itc3dhcCAoXG4gICRvZmYsXG4gICRvbixcbiAgJGR1cmF0aW9uOiAwLFxuICAkYmc6IGZhbHNlXG4pIHtcblxuICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBudWxsO1xuICAkb2ZmLWlzLWxpc3Q6IHR5cGUtb2YoJG9mZikgPT0gbGlzdDtcbiAgJG9uLWlzLWxpc3Q6IHR5cGUtb2YoJG9uKSA9PSBsaXN0O1xuXG4gIC8vIElmICRvZmYgSVMgYSBsaXN0LFxuICAvLyBhc3NpZ24gY29sb3IgYW5kIGJhY2tncm91bmQtY29sb3IuXG4gIEBpZiAkb2ZmLWlzLWxpc3Qge1xuICAgIGNvbG9yOiBudGgoJG9mZiwgMSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvZmYsIDIpO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3IsIGNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgVFJVRSxcbiAgLy8gYXNzaWduIGJhY2tncm91bmQtY29sb3IuXG4gIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvZmYtaXMtbGlzdCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIEZBTFNFLFxuICAvLyBhc3NpZ24gY29sb3IuXG4gIEBlbHNlIHtcbiAgICBjb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBjb2xvcjtcbiAgfVxuXG4gIC8vIE9ubHkgc2V0LXVwIHRyYW5zaXRpb24gaWYgJGR1cmF0aW9uICE9IDAuXG4gIEBpZiAkZHVyYXRpb24gIT0gMCB7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogJHRyYW5zaXRpb24tcHJvcGVydGllcztcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAkZHVyYXRpb247XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcblxuICAgIC8vICRvbiBpcyB0cmVhdGVkIHRoZSBzYW1lIGFzICRvZmYsIGFib3ZlLlxuICAgIEBpZiAkb24taXMtbGlzdCB7XG4gICAgICBjb2xvcjogbnRoKCRvbiwgMSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9uLCAyKTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb24taXMtbGlzdCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9uO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkb247XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWhkLWJwIChcbiAgJHJhdGlvOiAxLjNcbikge1xuXG4gIEBtZWRpYSAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogKCRyYXRpbyAvIDEpKSxcbiAgICAgICAgICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gICAgICAgICAobWluLXJlc29sdXRpb246IChyb3VuZCg5NiAqICRyYXRpbykgKiAxZHBpKSkge1xuICAgIEBjb250ZW50O1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGlkZS12aXN1YWxseSB7XG5cbiAgYm9yZGVyOiAwO1xuICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG5cbn1cblxuJXNjdXQtaGlkZS12aXN1YWxseSB7XG4gIEBpbmNsdWRlIHNjdXQtaGlkZS12aXN1YWxseTtcbn1cbkBtaXhpbiBzY3V0LWltYWdlLXJlcGxhY2Uge1xuXG4gIHRleHQtaW5kZW50OiAxMDIlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuXG59XG5cbiVzY3V0LWltYWdlLXJlcGxhY2Uge1xuICBAaW5jbHVkZSBzY3V0LWltYWdlLXJlcGxhY2U7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1yZW0gYW5kIHNjdXQtc3RyaXAtdW5pdFxuXG5AbWl4aW4gc2N1dC1yZW0tZmFsbGJhY2sgKFxuICAkcGl4ZWxzLFxuICAkcHJvcGVydHk6IGZvbnQtc2l6ZVxuKSB7XG5cbiAgJHB4LXZhbHM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1weDogc2N1dC1zdHJpcC11bml0KCR2YWwpICogMXB4O1xuICAgICRweC12YWxzOiBhcHBlbmQoJHB4LXZhbHMsICR2YWwtaW4tcHgpO1xuICB9XG4gICRyZW0tdmFsczogc2N1dC1yZW0oJHBpeGVscyk7XG5cbiAgI3skcHJvcGVydHl9OiAkcHgtdmFscztcbiAgI3skcHJvcGVydHl9OiAkcmVtLXZhbHM7XG5cbn1cbkBtaXhpbiBzY3V0LXJlc2V0LWJvcmRlci1ib3gge1xuICAvLyBNYWtlIGV2ZXJ5dGhpbmcgYSBib3JkZXItYm94LCBiZWNhdXNlIHdoeSBub3Q/XG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYW50aWFsaWFzIHtcbiAgLy8gQW50aWFsaWFzIVxuICBib2R5IHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1zZW1hbnRpY2l6ZSB7XG4gIC8vIE1ha2UgaGVhZGVycyBhbmQgPGI+IHNlbWFudGljLCBub3QgcHJlc2VudGF0aW9uYWwuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcG9pbnRlciB7XG4gIC8vIENsaWNrYWJsZSBmb3JtIGVsZW1lbnRzIHNob3VsZCBoYXZlIGEgcG9pbnRlci5cbiAgbGFiZWwsXG4gIHNlbGVjdCxcbiAgb3B0aW9uLFxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1mb3JtIHtcbiAgZmllbGRzZXQge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1idXR0b24ge1xuICAvLyBSZXNldCBkZWZhdWx0IGJ1dHRvbiBzdHlsZXMsIHdoaWNoIGFyZSBuZXZlciB1c2VkLlxuICBidXR0b24sXG4gIFt0eXBlPVwiYnV0dG9uXCJdLFxuICBbdHlwZT1cInN1Ym1pdFwiXSxcbiAgW3R5cGU9XCJyZXNldFwiXSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wYXJhZ3JhcGgge1xuICAvLyBTb21lIHBhcmFncmFwaCBtYXJnaW5zIGp1c3QgZ2V0IGluIHRoZSB3YXkuXG4gIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICBwOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1tZWRpYSB7XG4gIC8vIFlvdSB3YW50IHRoZXNlIGVsZW1lbnRzIGZsdWlkLCBwcm9iYWJseS5cbiAgaW1nLFxuICB2aWRlbyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1maWd1cmUge1xuICAvLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zLlxuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG4vLyBDYWxsIHRoZW0gYWxsLCBtaW51cyBleGNsdXNpb25zIVxuQG1peGluIHNjdXQtcmVzZXQgKCRleGNsdWRlOiBmYWxzZSkge1xuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBib3JkZXItYm94KSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYm9yZGVyLWJveDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBhbnRpYWxpYXMpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1hbnRpYWxpYXM7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgc2VtYW50aWNpemUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1zZW1hbnRpY2l6ZTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwb2ludGVyKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcG9pbnRlcjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmb3JtKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZm9ybTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBidXR0b24pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1idXR0b247XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcGFyYWdyYXBoKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcGFyYWdyYXBoO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIG1lZGlhKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtbWVkaWE7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZmlndXJlKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZmlndXJlO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXNlbGVjdGVkIChcbiAgJGFjdGl2ZTogZmFsc2Vcbikge1xuXG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXRyaWFuZ2xlIChcbiAgJGRpcmVjdGlvbjogcmlnaHQsXG4gICRzaXplOiAwLjc1ZW0sXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuICAvLyBGb3IgaW1wcm92ZWQgYXBwZWFyYW5jZSBpbiBzb21lIFdlYmtpdCBicm93c2Vyc1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG5cbiAgLy8gU2V0IHVwIHNvbWUgdmFyaWFibGVzXG4gICR3aWR0aDogbnVsbDtcbiAgJGhlaWdodDogbnVsbDtcbiAgJGJvcmRlci13aWR0aHM6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJHNpemUpID09IGxpc3Qge1xuICAgICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgICAkaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkd2lkdGg6ICRzaXplO1xuICAgICRoZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgLy8gRm9yIHVwIGFuZCBkb3duLCB3aWR0aCBnZXRzIHR3byBib3JkZXJzIGJ1dCBoZWlnaHQgb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIHNlY29uZCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAkaGVpZ2h0ICgkd2lkdGggLyAyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIC8vIEZvciByaWdodCBhbmQgbGVmdCwgaGVpZ2h0IGdldHMgdHdvIGJvcmRlcnMgYnV0IHdpZHRoIG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBmaXJzdCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICR3aWR0aDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gRm9yIHJpZ2h0IHRyaWFuZ2xlcyAodGhlIHJlc3QpLCBib3RoIHNpZGVzIGdldCB0d28gYm9yZGVycyxcbiAgICAvLyBzbyBkaXZpZGUgYm90aCBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgKCR3aWR0aCAvIDIpO1xuICB9XG5cbiAgYm9yZGVyLXdpZHRoOiAkYm9yZGVyLXdpZHRocztcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcblxuXG4gIC8vIFNUQU5EQVJEIFRSSUFOR0xFU1xuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gQ09STkVSIFRSSUFOR0xFU1xuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHRvcC1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gdG9wLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHRvcC1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXRyaWFuZ2xlIHtcbiAgQGluY2x1ZGUgc2N1dC10cmlhbmdsZTtcbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1hYnNvbHV0ZWx5IChcbiAgJGRpbWVuc2lvbnNcbikge1xuXG4gICR3aWR0aDogbnRoKCRkaW1lbnNpb25zLCAxKTtcbiAgJGhlaWdodDogbnRoKCRkaW1lbnNpb25zLCAyKTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICR3aWR0aCAhPSBuIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogKC0kd2lkdGggLyAyKTtcbiAgfVxuXG4gIEBpZiAkaGVpZ2h0ICE9IG4ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAoLSRoZWlnaHQgLyAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYmxvY2sgKFxuICAkbWF4LXdpZHRoOiBmYWxzZVxuKSB7XG5cbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgQGlmICRtYXgtd2lkdGgge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNlbnRlci1ibG9jayB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLWJsb2NrO1xufVxuXG5AbWl4aW4gc2N1dC1jZW50ZXItdHJhbnNmb3JtIChcbiAgJGF4aXM6IGZhbHNlIC8vIG9yIHggb3IgeVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkYXhpcyAhPSB4IHtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gIH1cblxuICBAaWYgJGF4aXMgIT0geSB7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxuXG4gICR0cmFuc2xhdGUtdmFsOiBudWxsO1xuXG4gIEBpZiBub3QoJGF4aXMpIHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHgge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHkge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG5cbiAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICAtbXMtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS14IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHgpO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbkBtaXhpbiBzY3V0LWZpbGwgKFxuICAkd2lkdGgtaGVpZ2h0OiBmYWxzZVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIEBpZiAkd2lkdGgtaGVpZ2h0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWZpbGwge1xuICBAaW5jbHVkZSBzY3V0LWZpbGw7XG59XG5AbWl4aW4gc2N1dC1saXN0LWN1c3RvbSAoXG4gICRjb250ZW50OiBcIlxcMjAyMlwiLFxuICAkbWFya2VyLXdpZHRoOiAwLjc1ZW0sXG4gICRwYWQ6IDAsXG4gICRuby1tYXJnaW46IGZhbHNlXG4pIHtcblxuICAkY29udGVudC12YWw6IG51bGw7XG4gICRjb3VudGVyOiBpbmRleCgkY29udGVudCwgY291bnQpO1xuICBAaWYgJGNvdW50ZXIge1xuICAgIEBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDMge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciwgbnRoKCRjb250ZW50LCAzKSludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIGlmIGxlbmd0aCgkY29udGVudCkgPT0gMiB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlcik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkY29udGVudC12YWw6ICRjb250ZW50O1xuICB9XG5cbiAgcGFkZGluZy1sZWZ0OiAkbWFya2VyLXdpZHRoICsgJHBhZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmID4gbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgJGNvdW50ZXIge1xuICAgICAgY291bnRlci1pbmNyZW1lbnQ6IHNjdXRsaXN0Y291bnRlcjtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJGNvbnRlbnQtdmFsO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAtJG1hcmtlci13aWR0aDtcbiAgICAgIHdpZHRoOiAkbWFya2VyLXdpZHRoO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtZmxvYXRlZGAsIHdoaWNoIGRlcGVuZHMgaW4gdHVybiBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZGl2aWRlZCAoXG4gICRkaXZpZGVyOiBcInxcIixcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGRpcjogbGVmdCxcbiAgJGhlaWdodDogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkKCRkaXI6ICRkaXIsICRuby1tYXJnaW46ICRuby1tYXJnaW4pO1xuXG4gICRwc2V1ZG86IGlmKCRkaXIgPT0gbGVmdCwgJ2JlZm9yZScsICdhZnRlcicpO1xuXG4gIC8vIElmIGFuIGV4cGxpY2l0IGhlaWdodCBpcyBwYXNzZWQsXG4gIC8vIHRoaW5ncyBhcmUgZGlmZmVyZW50OiBBbGwgPGxpPnNcbiAgLy8gbmVlZCB0aGUgcHNldWRvLWVsZW1lbnQgKHRvIGZvcmNlIGhlaWdodCksXG4gIC8vIGJ1dCB0aGUgZmlyc3QncyBtdXN0IGJlIGhpZGRlbi5cblxuICBAaWYgJGhlaWdodCB7XG4gICAgJiA+IGxpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gICAgJiA+IGxpOiN7JHBzZXVkb30ge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgICYgPiBsaTpmaXJzdC1jaGlsZDojeyRwc2V1ZG99IHtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAmID4gbGkgKyBsaTojeyRwc2V1ZG99IHtcbiAgICBAaWYgbm90KCRoZWlnaHQpIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2U7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWJhciB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkO1xufVxuXG4lc2N1dC1saXN0LWJyZWFkY3J1bWIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZChcIi9cIik7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1pbmxpbmUgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtaW5saW5lIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWlubGluZTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LXB1bmN0dWF0ZWQgKFxuICAkZGl2aWRlcjogXCIsIFwiLFxuICAkZGlzcGxheTogaW5saW5lLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiAkZGlzcGxheTtcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1jb21tYSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1wdW5jdHVhdGVkO1xufVxuQG1peGluIHNjdXQtbWFyZ2luIChcbiAgJG1hcmdpblxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAxIGFuZCAkbWFyZ2luICE9IG4ge1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW47XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDIge1xuICAgICRtYXJnaW4teTogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgIEBpZiAkbWFyZ2luLXkgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXk7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAzIHtcbiAgICAkbWFyZ2luLXktdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi15LWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgIEBpZiAkbWFyZ2luLXktdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15LXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teS1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gNCB7XG4gICAgJG1hcmdpbi10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXJpZ2h0OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICAkbWFyZ2luLWxlZnQ6IG50aCgkbWFyZ2luLCA0KTtcbiAgICBAaWYgJG1hcmdpbi10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tcmlnaHQgIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4tcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1sZWZ0ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4tbGVmdDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtcGFkZGluZyAoXG4gICRwYWRkaW5nXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAxIGFuZCAkcGFkZGluZyAhPSBuIHtcbiAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAyIHtcbiAgICAkcGFkZGluZy15OiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgQGlmICRwYWRkaW5nLXkgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMyB7XG4gICAgJHBhZGRpbmcteS10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy15LWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICBAaWYgJHBhZGRpbmcteS10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteS10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXktYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDQge1xuICAgICRwYWRkaW5nLXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy1yaWdodDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgJHBhZGRpbmctbGVmdDogbnRoKCRwYWRkaW5nLCA0KTtcbiAgICBAaWYgJHBhZGRpbmctdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXJpZ2h0ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmctcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmctYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctbGVmdCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmctbGVmdDtcbiAgICB9XG4gIH1cbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtYWJzb2x1dGUgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1hYnNvbHV0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtYWJzb2x1dGU7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWZpeGVkIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogZml4ZWQ7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtZml4ZWQge1xuICBAaW5jbHVkZSBzY3V0LWZpeGVkO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1yZWxhdGl2ZSAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5AbWl4aW4gc2N1dC1yYXRpby1ib3ggKFxuICAkcmF0aW86IDEvMVxuKSB7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFRoZSBjb250YWluZXIncyBoZWlnaHQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVcbiAgLy8gY29udGFpbmVyJ3Mgd2lkdGgsIGlzIHNldCBieSBhc3NpZ25pbmdcbiAgLy8gcGFkZGluZy10b3AgdG8gYSBwc2V1ZG8tZWxlbWVudC5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHBhZGRpbmctdG9wOiAoMSAvICRyYXRpbykgKiAxMDAlO1xuICB9XG5cbn1cblxuJXNjdXQtcmF0aW8tYm94IHtcbiAgQGluY2x1ZGUgc2N1dC1yYXRpby1ib3g7XG59XG5AbWl4aW4gc2N1dC1zaXplKFxuICAkc2l6ZVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2l6ZSkgPT0gMSB7XG4gICAgd2lkdGg6ICAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkc2l6ZSkgPT0gMiB7XG4gICAgd2lkdGg6ICBudGgoJHNpemUsIDEpO1xuICAgIGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogLSRoZWlnaHQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgI3skd3JhcHBlcn06YWZ0ZXIsXG4gICN7JGZvb3Rlcn0ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxuXG59XG5cbi8vIGRlcHJlY2F0ZWRcbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXIgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pe1xuICBAaW5jbHVkZSBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQoJGhlaWdodCwgJHdyYXBwZXIsICRmb290ZXIpO1xufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1mbHVpZCAoXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAjeyRmb290ZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgaGVpZ2h0OiAxcHg7XG4gIH1cblxufVxuQG1peGluIHNjdXQtdmNlbnRlci1pYiAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgLy8gVGhlIGlubmVyIGVsZW1lbnQgaXMgdmVydGljYWxseSBjZW50ZXJlZFxuICAvLyBieSBtaWRkbGUtYWxpZ25pbmcgaXQgd2l0aCBhbiBpbmxpbmUgcHNldWRvLWVsZW1lbnRcbiAgLy8gd2hvc2UgaGVpZ2h0IGlzIDEwMCUuXG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIC8vIEEgc21hbGwgbmVnYXRpdmUgcmlnaHQgbWFyZ2luIGlzIHNldFxuICAgIC8vIHRvIGFjY291bnQgZm9yIHRoZSBkZWZhdWx0XG4gICAgLy8gd29yZC1zcGFjaW5nIG9mIGlubGluZS1ibG9jay5cbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1ZW07XG4gIH1cblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdmNlbnRlci1pYiB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci1pYjtcbn1cblxuQG1peGluIHNjdXQtdmNlbnRlci1saCAoXG4gICRoZWlnaHRcbikge1xuXG4gIGhlaWdodDogJGhlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWlnaHQ7XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItdGQgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIGRpc3BsYXk6IHRhYmxlO1xuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuXG4lc2N1dC12Y2VudGVyLXRkIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXRkO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtY2VudGVyLXRyYW5zZm9ybVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLXR0ICgpIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG4lc2N1dC12Y2VudGVyLXR0IHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXR0O1xufVxuLy8gc3BhY2VcbiRzY3V0LXNwYWNlOiBcIlxcMDAyMFwiO1xuLy8gbm9uLWJyZWFraW5nIHNwYWNlXG4kc2N1dC1uYnNwOiBcIlxcMDBhMFwiO1xuXG4vLyBxdW90YXRpb24gbWFya1xuJHNjdXQtcXVvdDogXCJcXDAwMjJcIjtcbi8vIGxlZnQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1sc3F1bzogXCJcXDIwMThcIjtcbi8vIHJpZ2h0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtcnNxdW86IFwiXFwyMDE5XCI7XG4vLyBsZWZ0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtbGRxdW86IFwiXFwyMDFDXCI7XG4vLyByaWdodCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LXJkcXVvOiBcIlxcMjAxRFwiO1xuLy8gbGVmdCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxzYXF1bzogXCJcXDIwMzlcIjtcbi8vIHJpZ2h0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcnNhcXVvOiBcIlxcMjAzQVwiO1xuLy8gbGVmdCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxhcXVvOiBcIlxcMDBhYlwiO1xuLy8gcmlnaHQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yYXF1bzogXCJcXDAwYmJcIjtcblxuLy8gZW0gZGFzaCAobXV0dG9uKVxuJHNjdXQtbWRhc2g6IFwiXFwyMDE0XCI7XG4vLyBlbiBkYXNoIChudXQpXG4kc2N1dC1uZGFzaDogXCJcXDIwMTNcIjtcbi8vIGh5cGhlblxuJHNjdXQtaHlwaGVuOiBcIlxcMjAxMFwiO1xuXG4vLyBhbXBlcnNhbmRcbiRzY3V0LWFtcDogXCJcXDAwMjZcIjtcbi8vIGdyZWF0ZXIgdGhhblxuJHNjdXQtZ3Q6IFwiXFwwMDNlXCI7XG4vLyBsZXNzIHRoYW5cbiRzY3V0LWx0OiBcIlxcMDAzY1wiO1xuLy8gdGltZXNcbiRzY3V0LXRpbWVzOiBcIlxcMDBEN1wiO1xuLy8gYmlnIHRpbWVzXG4kc2N1dC1iaWd0aW1lczogXCJcXDI3MTVcIjtcbi8vIGNoZWNrbWFya1xuJHNjdXQtY2hlY2ttYXJrOiBcIlxcMjcxM1wiO1xuXG4vLyBzZWN0aW9uIHNpZ24gKGRvdWJsZSBTLCBodXJyaWNhbmUsIHNlY3Rpb25hbCBzeW1ib2wsIHRoZSBsZWdhbCBkb3VnaG51dCwgc2lnbnVtIHNlY3Rpb25pcylcbiRzY3V0LXNlY3Q6IFwiXFwwMGE3XCI7XG4vLyBwYXJhZ3JhcGggc3ltYm9sIChwaWxjcm93KVxuJHNjdXQtcGFyYTogXCJcXDAwYjZcIjtcblxuLy8gbWlkZG90IChpbnRlcnB1bmN0LCBpbnRlcnBvaW50KVxuJHNjdXQtbWlkZG90OiBcIlxcMDBiN1wiO1xuLy8gby1zbGFzaCAoc2xhc2hlZCBvKVxuJHNjdXQtb3NsYXNoOiBcIlxcMDBmOFwiO1xuLy8gYnVsbGV0XG4kc2N1dC1idWxsOiBcIlxcMjAyMlwiO1xuLy8gd2hpdGUgYnVsbGV0XG4kc2N1dC13aGlidWxsOiBcIlxcMjVFNlwiO1xuLy8gaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtaGVsbGlwOiBcIlxcMjAyNlwiO1xuLy8gdmVydGljYWwgZWxsaXBzaXNcbiRzY3V0LXZlbGxpcDogXCJcXDIyRUVcIjtcbi8vIG1pZGxpbmUgaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtbWlkaGVsbGlwOiBcIlxcMjJFRlwiO1xuXG4vLyB1cC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtdXRyaTogXCJcXDI1YjJcIjtcbi8vIGRvd24tcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWR0cmk6IFwiXFwyNWJjXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1sdHJpOiBcIlxcMjVjMFwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXJ0cmk6IFwiXFwyNWI2XCI7XG4vLyB1cC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtdXN0cmk6IFwiXFwyNWI0XCI7XG4vLyBkb3duLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1kc3RyaTogXCJcXDI1YmVcIjtcbi8vIGxlZnQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWxzdHJpOiBcIlxcMjVjMlwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXJzdHJpOiBcIlxcMjViOFwiO1xuLy8gZGlhbW9uZFxuJHNjdXQtZGlhbW9uZDogXCJcXDI1YzZcIjtcbi8vIGZpc2hleWVcbiRzY3V0LWZpc2hleWU6IFwiXFwyNWM5XCI7XG4vLyBidWxsc2V5ZVxuJHNjdXQtYnVsbHNleWU6IFwiXFwyNWNlXCI7XG4vLyBjaXJjbGVcbiRzY3V0LWNpcmNsZTogXCJcXDI1Y2ZcIjtcbi8vIHdoaXRlIGNpcmNsZVxuJHNjdXQtd2hpdGVjaXJjbGU6IFwiXFwyNWNiXCI7XG4vLyBzcXVhcmVcbiRzY3V0LXNxdWFyZTogXCJcXDI1YTBcIjtcbi8vIHdoaXRlIHNxdWFyZVxuJHNjdXQtd2hpdGVzcXVhcmU6IFwiXFwyNWExXCI7XG4vLyBzbWFsbCBzcXVhcmVcbiRzY3V0LXNzcXVhcmU6IFwiXFwyNWFhXCI7XG4vLyBzbWFsbCB3aGl0ZSBzcXVhcmVcbiRzY3V0LXN3aGl0ZXNxdWFyZTogXCJcXDI1YWJcIjtcblxuLy8gZ2VuZXJhbCBjdXJyZW5jeVxuJHNjdXQtY3VycmVuY3k6IFwiXFwwMGE0XCI7XG4vLyBjZW50XG4kc2N1dC1jZW50OiBcIlxcMDBhMlwiO1xuLy8gZG9sbGFyXG4kc2N1dC1kb2xsYXI6IFwiXFwwMDI0XCI7XG4vLyBwb3VuZFxuJHNjdXQtcG91bmQ6IFwiXFwwMGEzXCI7XG4vLyBldXJvXG4kc2N1dC1ldXJvOiBcIlxcMjBhY1wiO1xuLy8geWVuXG4kc2N1dC15ZW46IFwiXFwwMGE1XCI7XG4vLyBydXBlZVxuJHNjdXQtcnVwZWU6IFwiXFwyMEI5XCI7XG5AZnVuY3Rpb24gbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSkge1xuICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgYHNyY2AgdmFsdWVzLCBpbiBvcmRlciwgdGhhdFxuICAvLyBhIGdvb2QgYEBmb250LWZhY2VgIHdpbGwgbmVlZCwgaW5jbHVkaW5nIG9ubHlcbiAgLy8gdGhvc2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gdGhlIGxpc3QgYCRmb3JtYXRzYC5cbiAgJHJlc3VsdDogKCk7XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgJGVvdC12YWw6IHVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkZW90LXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZjIpIHtcbiAgICAkd29mZjItdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmMi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYpIHtcbiAgICAkd29mZi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgdHRmKSB7XG4gICAgJHR0Zi12YWw6IHVybCgnI3skZmlsZS1wYXRofS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR0dGYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBzdmcpIHtcbiAgICAkc3ZnLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkc3ZnLXZhbCwgY29tbWEpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQG1peGluIHNjdXQtZm9udC1mYWNlIChcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Z1xuKSB7XG5cbiAgQGlmIGluZGV4KCdpdGFsaWMnICdvYmxpcXVlJywgJHdlaWdodCkge1xuICAgICRzdHlsZTogJHdlaWdodDtcbiAgICAkd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcblxuICAgIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgICBzcmM6IHVybCgnI3skZmlsZS1wYXRofS5lb3QnKTtcbiAgICB9XG4gICAgc3JjOiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KTtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhhbmdpbmctaW5kZW50IChcbiAgJGluZGVudDogMWVtXG4pIHtcblxuICAvLyBwYWRkaW5nLWxlZnQgY3JlYXRlcyB0aGUgaW5kZW50LFxuICAvLyB3aGlsZSB0ZXh0LWluZGVudCBwdWxscyB0aGUgZmlyc3QgbGluZVxuICAvLyBiYWNrIHRvIHRoZSBlZGdlLlxuXG4gIHBhZGRpbmctbGVmdDogJGluZGVudDtcbiAgdGV4dC1pbmRlbnQ6IC0kaW5kZW50O1xuXG59XG5cbiVzY3V0LWhhbmdpbmctaW5kZW50IHtcbiAgQGluY2x1ZGUgc2N1dC1oYW5naW5nLWluZGVudDtcbn1cbkBtaXhpbiBzY3V0LWluZGVudGVkLXBzIChcbiAgJGluZGVudDogMS41ZW0sXG4gICRuby1maXJzdC1pbmRlbnQ6IHRydWVcbikge1xuXG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LWluZGVudDogJGluZGVudDtcbiAgfVxuXG4gIEBpZiAkbm8tZmlyc3QtaW5kZW50IHtcbiAgICBwOmZpcnN0LW9mLXR5cGUge1xuICAgICAgdGV4dC1pbmRlbnQ6IDA7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtaW5kZW50ZWQtcHMge1xuICBAaW5jbHVkZSBzY3V0LWluZGVudGVkLXBzO1xufVxuQG1peGluIHNjdXQta2V5LXZhbCAoXG4gICRkaXZpZGVyOiBcIjpcIixcbiAgJHBhZDogMC4yNWVtLFxuICAkaW5kZW50OiAxZW0sXG4gICRzcGFjaW5nOiAwLFxuICAkcGFkLWxlZnQ6IDBcbikge1xuXG4gICYgPiBkdCB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogJHBhZDtcbiAgICAgIEBpZiAkcGFkLWxlZnQgIT0gMCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkcGFkLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJiA+IGRkIHtcbiAgICBtYXJnaW4tbGVmdDogJGluZGVudDtcbiAgICBAaWYgJHNwYWNpbmcgIT0gMCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1rZXktdmFsIHtcbiAgQGluY2x1ZGUgc2N1dC1rZXktdmFsO1xufVxuQG1peGluIHNjdXQtbGluay1iYiAoXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHdpZHRoOiAxcHhcbikge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBib3JkZXItYm90dG9tLXdpZHRoOiAkd2lkdGg7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gIH1cblxufVxuXG4lc2N1dC1saW5rLWJiIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLWJiO1xufVxuLy8gU0NVVCBMSU5LIFVOU1RZTEVEXG4vLyBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dC8jbGluay11bnN0eWxlZFxuXG5AbWl4aW4gc2N1dC1saW5rLXVuc3R5bGVkKCkge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGluaGVyaXQ7XG5cbn1cblxuJXNjdXQtbGluay11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay11bnN0eWxlZCgpO1xufVxuXG5AbWl4aW4gc2N1dC1yZXZlcnNlLWl0YWxpY3MgKFxuICAkZWxlbWVudHM6IG51bGxcbikge1xuXG4gICRlbGVtZW50LWxpc3Q6IGVtLCBjaXRlLCBpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICN7am9pbigkZWxlbWVudC1saXN0LCAkZWxlbWVudHMpfSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICB9XG5cbn1cblxuJXNjdXQtcmV2ZXJzZS1pdGFsaWNzIHtcbiAgQGluY2x1ZGUgc2N1dC1yZXZlcnNlLWl0YWxpY3M7XG59XG5cbkBtaXhpbiBzY3V0LXNpZGUtbGluZWQgKFxuICAkaGVpZ2h0OiAxcHgsXG4gICRzcGFjZTogMC41ZW0sXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHYtYWRqdXN0OiBmYWxzZSxcbiAgJGRvdWJsZTogZmFsc2Vcbikge1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA1MCU7XG5cbiAgICBib3JkZXItdG9wLXN0eWxlOiAkc3R5bGU7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogJGhlaWdodDtcblxuICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICR2LWFkanVzdCAhPSBmYWxzZSB7XG4gICAgICBib3R0b206ICR2LWFkanVzdDtcbiAgICB9XG5cbiAgICBAaWYgJGRvdWJsZSAhPSBmYWxzZSB7XG4gICAgICBoZWlnaHQ6ICRkb3VibGU7XG4gICAgICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAkaGVpZ2h0O1xuICAgICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICY6YmVmb3JlIHtcbiAgICByaWdodDogJHNwYWNlO1xuICAgIG1hcmdpbi1sZWZ0OiAtNTAlO1xuICB9XG4gICY6YWZ0ZXIge1xuICAgIGxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6IC01MCU7XG4gIH1cblxufVxuXG4lc2N1dC1zaWRlLWxpbmVkIHtcbiAgQGluY2x1ZGUgc2N1dC1zaWRlLWxpbmVkO1xufVxuQG1peGluIHNjdXQtdHJ1bmNhdGUge1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG59XG5cbiVzY3V0LXRydW5jYXRlIHtcbiAgQGluY2x1ZGUgc2N1dC10cnVuY2F0ZTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BsYWNlaG9sZGVyc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NvbG9yc1wiO1xuQGltcG9ydCBcInRvb2xraXQvZm9udHNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ludHJpbnNpYy1yYXRpb1wiO1xuQGltcG9ydCBcInRvb2xraXQvbmVzdGVkLWNvbnRleHRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BhcmFsbGF4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9ydGxcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RhcmdldFwiO1xuQGltcG9ydCBcInRvb2xraXQvdHJpYW5nbGVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NlbnRlclwiO1xuQGltcG9ydCBcInRvb2xraXQvdmlld3BvcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3VuZGVybGluZVwiO1xuQGltcG9ydCBcInRvb2xraXQvYXJ0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9zZXQtbXVsdGlwbGVcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kVG9vbGtpdC1TZXR0aW5nczogKFxuICAnY2xlYXJmaXggZXh0ZW5kJzogZmFsc2UsXG4gICdjb2xvciBzdGFjayBhbW91bnRzJzogMjUlIDUwJSA3NSUgODUlIDkwJSxcbiAgJ3RpbnQgc2hhZGUgYW1vdW50cyc6IDc1JSA1MCUgMjUlLFxuICAndGludCBjb2xvcic6ICNmZmYsXG4gICdzaGFkZSBjb2xvcic6ICMwMDAsXG4gICdjb2xvciBzY2FsZSBzdGVwcyc6IDYsXG4gICdsaWdhdHVyZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2ZvbnQgZmFjZSB3ZWlnaHQnOiBub3JtYWwsXG4gICdmb250IGZhY2Ugc3R5bGUnOiBub3JtYWwsXG4gICdmb250IGZhY2UgaW5saW5lIHdvZmYnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBleHRlbmQnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBzcGVhayc6IGZhbHNlLFxuICAnZmFkZSBpbiBkdXJhdGlvbic6IDFzLFxuICAnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJzogJy53Zi1sb2FkaW5nJyxcbiAgJ2ZhZGUgaW4gZXh0ZW5kJzogZmFsc2UsXG4gICdpbnRyaW5zaWMgcmF0aW8nOiAxNi85LFxuICAnaW50cmluc2ljIHJhdGlvIHdpZHRoJzogMTAwJSxcbiAgJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cyc6ICc+IConLFxuICAnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJzogdG9wLFxuICAnaW50cmluc2ljIHJhdGlvIGV4dGVuZCc6IGZhbHNlLFxuICAnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnOiAxMDAlLFxuICAnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nOiBsZWZ0LFxuICAndHJpYW5nbGUgY29sb3InOiAjMDAwLFxuICAndHJpYW5nbGUgaGVpZ2h0JzogMWVtLFxuICAndHJpYW5nbGUgd2lkdGgnOiAxZW0sXG4gICd0cmlhbmdsZSBhbmdsZSc6IDAsXG4gICdwYXJhbGxheCBwZXJzcGVjdGl2ZSc6IDEsXG4gICdwYXJhbGxheCBlbGVtZW50JzogJ2JvZHknLFxuICAncGFyYWxsYXggaW9zJzogdHJ1ZSxcbiAgJ3BhcmFsbGF4IGRpc3RhbmNlJzogMCxcbiAgJ3ZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAndmVydGljYWwgZXh0ZW5kJzogZmFsc2UsXG4gICdob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JzogNTAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCc6IGZhbHNlLFxuICAndW5kZXJsaW5lIGJhY2tncm91bmQnOiAjZmZmLFxuICAndW5kZXJsaW5lIGNvbG9yJzogIzAwZSxcbiAgJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJzogdHJ1ZSxcbiAgJ3VuZGVybGluZSBkaXN0YW5jZSc6IDEsXG4gICd1bmRlcmxpbmUgd2lkdGgnOiAyLFxuICAndW5kZXJsaW5lIGV4dGVuZCc6IGZhbHNlLFxuICAnYXJ0IHBpeGVsIHNpemUnOiAxcHgsXG4gICdhcnQgY29sb3InOiBibGFjayxcbiAgJ2FydCBib3JkZXIgcmFkaXVzJzogMCVcbik7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTmV3IFNldHRpbmdzIG1vZHVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHbG9iYWxcbiRHbG9iYWxTZXR0aW5nczogJFRvb2xraXQtU2V0dGluZ3MgIWRlZmF1bHQ7XG4vLyBVc2VyXG4kVXNlclNldHRpbmdzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBVc2VyIFNldHRpbmcgRXhpc3RzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkVXNlclNldHRpbmdzLCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cy1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICRSZXR1cm47XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtaGFzKCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBHZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRHbG9iYWxTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWdldC1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHZhbHVlczogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJHZhbHVlczogbWFwLW1lcmdlKCR2YWx1ZXMsICgkc2V0dGluZzogc2V0dGluZy1nZXQoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWdldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctZ2V0KCRzZXR0aW5nKTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmdzIFNldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICRzZXR0aW5ncykgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQHJldHVybiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRSZXR1cm46ICgpO1xuXG4gIEBlYWNoICRLZXksICRWYWx1ZSBpbiAkVXNlclNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBpZigkc2V0dGluZyA9PSAkS2V5LCAkUmV0dXJuLCBtYXAtbWVyZ2UoJFJldHVybiwgKCRLZXk6ICRWYWx1ZSkpKTtcbiAgfVxuXG4gICRVc2VyU2V0dGluZ3M6ICRSZXR1cm4gIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkY2xlYXItdGhlLXNldHRpbmdzOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkVXNlclNldHRpbmdzOiAoKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1yZXNldCgpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1yZXNldCgpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgUGlja1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrKCRzZXR0aW5nLCAkaW5wdXQpIHtcbiAgQHJldHVybiBpZigkaW5wdXQgIT0gbnVsbCwgJGlucHV0LCBzZXR0aW5nLWdldCgkc2V0dGluZykpO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcsICRpbnB1dCBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHNldHRpbmctcGljaygkaW5wdXQsICRzZXR0aW5nKSkpO1xuICB9XG5cbiAgQHJldHVybiAkUmV0dXJuO1xufSIsIiRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQbGFjZWhvbGRlciBHZXQvU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpIHtcbiAgJHVuaXF1ZS1pZDogdW5pcXVlLWlkKCk7XG4gICRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiBtYXAtbWVyZ2UoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICgkaWQ6ICR1bmlxdWUtaWQpKSAhZ2xvYmFsO1xuICBAcmV0dXJuICR1bmlxdWUtaWQ7XG59XG5cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAkaWQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYXRlIFBsYWNlaG9sZGVyIENsYXNzIGFuZCBFeHRlbmRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCk7XG5cbiAgQGlmICRwbGFjZWhvbGRlci1pZCA9PSBudWxsIHtcbiAgICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCk7XG4gICAgQGF0LXJvb3QgJSN7JHBsYWNlaG9sZGVyLWlkfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGV4dGVuZCAlI3skcGxhY2Vob2xkZXItaWR9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFN0YXRpYyBNaXhpbiBIZWxwZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIG1peGluLWRyeWVyKCRpZCwgJGV4dGVuZDogdHJ1ZSkge1xuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTW9kZXJuIENsZWFyZml4IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjbGVhcmZpeCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2NsZWFyZml4IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY2xlYXJmaXgnKSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29tcGFzcyBFeHRlbnNpb24gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVGludCBhbmQgU2hhZGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTHVtYVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gbHVtYSgkY29sb3IpIHtcbiAgQHJldHVybiAocmVkKCRjb2xvcikgKiAuMjk5KSArIChncmVlbigkY29sb3IpICogLjU4NykgKyAoYmx1ZSgkY29sb3IpICogLjExNCk7XG59XG5cbkBmdW5jdGlvbiBsdW1hLWd0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpID49IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1sdGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA8PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtZGlmZigkY29sb3IxLCAkY29sb3IyKSB7XG4gIEByZXR1cm4gbHVtYSgkY29sb3IxKSAtIGx1bWEoJGNvbG9yMik7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU3RhY2tzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zdGFjaygkbWFpbiwgJHNlY29uZGFyeSwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCdjb2xvciBzdGFjayBhbW91bnRzJyk7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAxIHtcbiAgICAkYW1vdW50czogbnRoKCRhbW91bnRzLCAxKTtcbiAgfVxuXG4gICRzdGFjazogJG1haW47XG5cbiAgQGVhY2ggJGFtb3VudCBpbiAkYW1vdW50cyB7XG4gICAgJHN0YWNrOiBqb2luKCRzdGFjaywgbWl4KCRzZWNvbmRhcnksIG50aCgkc3RhY2ssIDEpLCAkYW1vdW50KSk7XG4gIH1cblxuICBAcmV0dXJuICRzdGFjaztcbn1cblxuLy8gVGludCBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBTaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBUaW50L1NoYWRlIFN0YWNrXG5AZnVuY3Rpb24gdGludC1zaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gICRjb2xvcnM6ICgpO1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ3RpbnQgc2hhZGUgYW1vdW50cycpO1xuICB9XG4gICRsZW5ndGg6IGxlbmd0aCgkYW1vdW50cyk7XG5cbiAgLy8gU2hhZGVzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHNoYWRlKCRjb2xvciwgbnRoKCRhbW91bnRzLCAkaSkpKTtcbiAgfVxuXG4gIC8vIEJhc2VcbiAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsICRjb2xvcik7XG5cbiAgLy8gVGludHNcbiAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkbGVuZ3RoIC0gMSB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHRpbnQoJGNvbG9yLCBudGgoJGFtb3VudHMsICRsZW5ndGggLSAkaSkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJGNvbG9ycztcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTY2FsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXNjYWxlKCRtYWluLCAkc2Vjb25kYXJ5LCAkc3RlcHM6IG51bGwpIHtcbiAgJHN0ZXBzOiBpZigkc3RlcHMgIT0gbnVsbCwgJHN0ZXBzLCB0b29sa2l0LWdldCgnY29sb3Igc2NhbGUgc3RlcHMnKSk7XG5cbiAgJGxpc3Q6ICRtYWluO1xuXG4gICRyZWQxOiByZWQoJG1haW4pO1xuICAkcmVkMjogcmVkKCRzZWNvbmRhcnkpO1xuICAkcmVkLWRpZmY6ICgoJHJlZDEgLSAkcmVkMikgLyAoKCRzdGVwcyAtIDEpKSk7XG5cbiAgJGh1ZTE6IGh1ZSgkbWFpbik7XG4gICRodWUyOiBodWUoJHNlY29uZGFyeSk7XG4gIEBpZiAoJGh1ZTIgKyAzNTkgLSAkaHVlMSkgPCBhYnMoJGh1ZTEgLSAkaHVlMikge1xuICAgICRodWUyOiAkaHVlMiArIDM1OTtcbiAgfVxuICAkaHVlLWRpZmY6ICgkaHVlMiAtICRodWUxKSAvICgkc3RlcHMgLSAxKTtcblxuICAkc2F0MTogc2F0dXJhdGlvbigkbWFpbik7XG4gICRzYXQyOiBzYXR1cmF0aW9uKCRzZWNvbmRhcnkpO1xuICAkc2F0LWRpZmY6IDA7XG4gIEBpZiAkc2F0MSA+ICRzYXQyIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MiAtICRzYXQxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDEgLSAkc2F0MikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkbHRlMTogbGlnaHRuZXNzKCRtYWluKTtcbiAgJGx0ZTI6IGxpZ2h0bmVzcygkc2Vjb25kYXJ5KTtcbiAgJGx0ZS1kaWZmOiAwO1xuICBAaWYgJGx0ZTEgPiAkbHRlMiB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTIgLSAkbHRlMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRsdGUtZGlmZjogKCRsdGUxIC0gJGx0ZTIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGFscDE6IGFscGhhKCRtYWluKTtcbiAgJGFscDI6IGFscGhhKCRzZWNvbmRhcnkpO1xuICAkYWxwLWRpZmY6IDA7XG4gIEBpZiAkYWxwMSA+ICRhbHAyIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMiAtICRhbHAxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGFscC1kaWZmOiAoJGFscDEgLSAkYWxwMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkaHVlLWhvbGQ6ICRodWUxO1xuICAkc2F0LWhvbGQ6ICRzYXQxO1xuICAkbHRlLWhvbGQ6ICRsdGUxO1xuICAkYWxwLWhvbGQ6ICRhbHAxO1xuICAkY29sb3ItaG9sZDogMDtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRzdGVwcyB7XG4gICAgJGh1ZS1ob2xkOiAkaHVlLWhvbGQgKyAkaHVlLWRpZmY7XG4gICAgJHNhdC1ob2xkOiAkc2F0LWhvbGQgKyAkc2F0LWRpZmY7XG4gICAgJGx0ZS1ob2xkOiAkbHRlLWhvbGQgKyAkbHRlLWRpZmY7XG4gICAgJGFscC1ob2xkOiAkYWxwLWhvbGQgKyAkYWxwLWRpZmY7XG5cbiAgICAkY29sb3ItaG9sZDogaHNsYSgkaHVlLWhvbGQsICRzYXQtaG9sZCwgJGx0ZS1ob2xkLCAkYWxwLWhvbGQpO1xuICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRjb2xvci1ob2xkKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRW5hYmxlIGxpZ2F0dXJlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2xpZ2F0dXJlIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2VuYWJsZSBsaWdhdHVyZXMnKSB7XG4gICAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhPTEsIGRsaWc9MVwiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tcy1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW8tZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJsaWdhXCIsXCJkbGlnXCI7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhY2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGZvbnQtZmFjZSgkbmFtZSwgJGZpbGVzLCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwsICRpbmxpbmUtd29mZjogbnVsbCkge1xuICAkd2VpZ2h0OiBpZigkd2VpZ2h0ICE9IG51bGwsICR3ZWlnaHQsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugd2VpZ2h0JykpO1xuICAkc3R5bGU6IGlmKCRzdHlsZSAhPSBudWxsLCAkc3R5bGUsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugc3R5bGUnKSk7XG4gICRpbmxpbmUtd29mZjogaWYoJGlubGluZS13b2ZmICE9IG51bGwsICRpbmxpbmUtd29mZiwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZicpKTtcblxuICAkZm9udC1zdGFjazogKCk7XG4gICRmb250LXNyYzogJyc7XG4gICRlb3Q6IGZhbHNlO1xuICAkZm9udC1leHRlbnNpb25zOiAoJ2VvdCc6ICdlbWJlZGRlZC1vcGVudHlwZScsICd3b2ZmMic6ICd3b2ZmMicsICd3b2ZmJzogJ3dvZmYnLCAndHRmJzogJ3RydWV0eXBlJywgJ3N2Zyc6ICdzdmcnKTtcblxuICBAZWFjaCAkZXh0LCAkZm9ybWF0IGluICRmb250LWV4dGVuc2lvbnMge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkZmlsZXMsICRleHQpIHtcbiAgICAgIEBpZiBmdW5jdGlvbi1leGlzdHMoaW5saW5lLWZvbnQtZmlsZXMpIGFuZCAkaW5saW5lLXdvZmYgPT0gdHJ1ZSBhbmQgKCRleHQgPT0gJ3dvZmYnIG9yICRleHQgPT0gJ3dvZmYyJykge1xuICAgICAgICAkZm9udC1zcmM6IGlubGluZS1mb250LWZpbGVzKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSk7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiBmdW5jdGlvbi1leGlzdHMoZm9udC11cmwpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGZvbnQtc3RhY2s6IGFwcGVuZCgkZm9udC1zdGFjaywgJGZvbnQtc3JjLCAnY29tbWEnKTtcbiAgICB9XG5cbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkbmFtZTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgQGlmICRlb3Qge1xuICAgICAgc3JjOiAkZW90O1xuICAgIH1cbiAgICBAaWYgbGVuZ3RoKCRmb250LXN0YWNrKSA+IDAge1xuICAgICAgc3JjOiAkZm9udC1zdGFjaztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJY29uIEZvbnRcbi8vIEZyb20gaHR0cDovL2ljb21vb24uaW9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGljb24tZm9udCgkZm9udC1zdGFjaywgJHNwZWFrOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRzcGVhazogaWYoJHNwZWFrICE9IG51bGwsICRzcGVhaywgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBzcGVhaycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBmb250LWZhbWlseTogJGZvbnQtc3RhY2s7XG4gIEBpZiAkc3BlYWsgPT0gZmFsc2Uge1xuICAgIHNwZWFrOiBub25lO1xuICB9XG4gIEBpbmNsdWRlIGljb24tZm9udC0tY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIGljb24tZm9udC0tY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaWNvbiBmb250IGNvcmUnKSB7XG4gICAgICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQpO1xuXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFkZSBJblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY29udGVudC1mYWRlLWluKCRkdXJhdGlvbjogbnVsbCwgJGxvYWRpbmc6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGR1cmF0aW9uOiBpZigkZHVyYXRpb24gIT0gbnVsbCwgJGR1cmF0aW9uLCB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpKTtcbiAgJGxvYWRpbmc6IGlmKCRsb2FkaW5nICE9IG51bGwsICRsb2FkaW5nLCB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIGFuZCAkZHVyYXRpb24gPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSBhbmQgJGxvYWRpbmcgPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY29udGVudCBmYWRlIGluJykge1xuICAgICAgQGluY2x1ZGUgY29udGVudC1mYWRlLWluKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGlmIG5vdCBtaXhpbi1leGlzdHMoJ3NpbmdsZS10cmFuc2l0aW9uJykge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBzaW5nbGUtdHJhbnNpdGlvbihvcGFjaXR5ICRkdXJhdGlvbik7XG4gICAgfVxuXG4gICAgI3skbG9hZGluZ30gJiB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGbHVpZCBFbWJlZHMgYW5kIHdoYXRldmVyIFdJVEggTk8gSkFWQVNDSVBUIVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gcGFyZW50Jykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIGNoaWxkJykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgdG9wOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuXG4gIHBhZGRpbmctI3skcG9zaXRpb259OiAoMSAvICRyYXRpbykgKiAkd2lkdGg7XG4gIHdpZHRoOiAkd2lkdGg7XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkZWxlbWVudHM6IGlmKCRlbGVtZW50cyAhPSBudWxsLCAkZWxlbWVudHMsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcblxuICBAZWFjaCAkZWxlbWVudCBpbiAkZWxlbWVudHMge1xuICAgICN7JGVsZW1lbnR9IHtcbiAgICBcdEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGlyKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRlbGVtZW50cywgJGV4dGVuZCwgJHBvc2l0aW9uKTtcbn1cblxuQG1peGluIGlyLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xufSIsIi8vIHNpbXBsZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb250ZXh0IG9mIGEgbmVzdGVkIHBlcmNlbnRhZ2UuXG5AZnVuY3Rpb24gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuXG4gIC8vIEZpcnN0IGxldmVsIGRlZXAgaXMgYWx3YXlzIDEwMCVcbiAgJHBlcmNlbnRhZ2U6IDEwMCU7XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggbGV2ZWxcbiAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAvLyBJbnZlcnQgdGhlIHBlcmNlbnRhZ2UgdG8gZmluZCBjb250ZXh0XG4gICAgJHBlcmNlbnRhZ2U6IHBlcmNlbnRhZ2UoJHBlcmNlbnRhZ2UgLyAkY29udGV4dCk7XG4gIH1cbiAgLy8gUmV0dXJuIGZpbmFsIHBlcmNlbnRhZ2VcbiAgQHJldHVybiAkcGVyY2VudGFnZTtcbn1cblxuLy8gbWl4aW4gdG8gbWFrZSB0aGluZ3MgZWFzaWVyXG5AbWl4aW4gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJykpO1xuXG4gIHdpZHRoOiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpO1xuICBAaWYgJHBvc2l0aW9uID09IFwiY2VudGVyXCIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtLjU7XG4gIH1cbiAgQGlmICRwb3NpdGlvbiA9PSBcInJpZ2h0XCIge1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLTEgKyAxMDAlO1xuICB9XG59IiwiLy8gTWFnaWMgcGFyYWxsYXggbWl4aW5zXG5AbWl4aW4gcGFyYWxsYXgtaW5pdCgkcGVyc3BlY3RpdmU6IG51bGwsICRlbGVtZW50OiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG5cbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRlbGVtZW50OiBpZigkZWxlbWVudCAhPSBudWxsLCAkZWxlbWVudCwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGVsZW1lbnQnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBAaWYgJGVsZW1lbnQgPT0gJ2JvZHknIHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBodG1sLCBib2R5IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuICAgICAgYm9keSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRlbGVtZW50ID09IHRoaXMge1xuICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBhdC1yb290ICN7JGVsZW1lbnR9IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlOiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgb3ZlcmZsb3c6IGF1dG87XG4gIEBpZiBtaXhpbi1leGlzdHMocGVyc3BlY3RpdmUpIHtcbiAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUgKiAxcHgpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gICAgcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgfVxuICAvLyBBbGxvd3MgZm9yIHNtb290aCBzY3JvbGxpbmcgYnV0IGRpc2FibGVzIHBhcmFsbGF4IGVmZmVjdHMuXG4gIEBpZiAkcGFyYWxsYXgtaW9zID09IGZhbHNlIHtcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cbiAgLy8gTWFrZSBzdXJlIDNEIHBlcnNwZWN0aXZlIGlzIHByZXNlcnZlZFxuICAmLCAmICoge1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtLXN0eWxlKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUocHJlc2VydmUtM2QpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgoJGRpc3RhbmNlOiBudWxsLCAkcGVyc3BlY3RpdmU6IG51bGwpIHtcblxuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBkaXN0YW5jZScpKTtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG5cbiAgJHRyYW5zZm9ybTogdHJhbnNsYXRlWigkZGlzdGFuY2UgKiAkcGVyc3BlY3RpdmUgKiAxcHgpIHNjYWxlKGFicygkZGlzdGFuY2UgLSAxKSk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zZm9ybSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICAgIHRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgfVxuXG4gIHotaW5kZXg6ICRkaXN0YW5jZSAqIDEwMDtcbn1cbiIsIkBtaXhpbiBydGwoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgJF9wcm9wZXJ0eTogJHByb3BlcnR5O1xuICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcblxuICBAaWYgbGVuZ3RoKCR2YWx1ZSkgPT0gNCB7XG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICN7JHByb3BlcnR5fTogbnRoKCR2YWx1ZSwgMSkgbnRoKCR2YWx1ZSwgNCkgbnRoKCR2YWx1ZSwgMykgbnRoKCR2YWx1ZSwgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSAtIDEpICsgJ3JpZ2h0JztcbiAgICB9XG4gICAgQGVsc2UgaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpIC0gMSkgKyAnbGVmdCc7XG4gICAgfVxuXG4gICAgQGlmICRwcm9wZXJ0eSAhPSAkX3Byb3BlcnR5IHtcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIkBtaXhpbiB0YXJnZXQoJHRhcmdldCkge1xuICBAYXQtcm9vdCB7XG4gICAgLyohIEB7dGFyZ2V0OiAjeyR0YXJnZXR9fSAqL1xuICAgICYge1xuICAgICAgQGNvbnRlbnQ7ICBcbiAgICB9XG4gICAgLyohIHt0YXJnZXQ6ICN7JHRhcmdldH19QCAqLyAgXG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERyYXcgdHJpYW5nbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIHRyaWFuZ2xlKCRjb2xvcjogbnVsbCwgJGhlaWdodDogbnVsbCwgJHdpZHRoOiBudWxsLCAkYW5nbGU6IG51bGwpIHtcblxuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBjb2xvcicpKTtcbiAgJGhlaWdodDogaWYoJGhlaWdodCAhPSBudWxsLCAkaGVpZ2h0LCB0b29sa2l0LWdldCgndHJpYW5nbGUgaGVpZ2h0JykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSB3aWR0aCcpKTtcbiAgJGFuZ2xlOiBpZigkYW5nbGUgIT0gbnVsbCwgJGFuZ2xlLCB0b29sa2l0LWdldCgndHJpYW5nbGUgYW5nbGUnKSk7XG5cbiAgQGlmIG50aCgkYW5nbGUsIDEpID09IFwidG9wXCIgb3IgbnRoKCRhbmdsZSwgMSkgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiBcIiN7JGFuZ2xlfVwiO1xuICB9XG5cbiAgQGlmICRhbmdsZSA9PSBcInRvcFwiIHtcbiAgICAkYW5nbGU6IDA7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwicmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDI7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMTtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogNDUgKiA0O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwibGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDU7XG4gIH1cblxuICBAaWYgdW5pdCgkaGVpZ2h0KSA9PSBcIlwiIG9yIHVuaXQoJGhlaWdodCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JGhlaWdodH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciBoZWlnaHQuXCJcbiAgfVxuXG4gIEBpZiB1bml0KCR3aWR0aCkgPT0gXCJcIiBvciB1bml0KCR3aWR0aCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JHdpZHRofSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIHdpZHRoLlwiXG4gIH1cblxuICAvLyBvZmZzZXQgNDVkZWcgdG8gbWFrZSBlYWNoIHNpZGUgc3RhcnQgYXQgMFxuICAkZGVnOiAkYW5nbGUgKyA0NTtcbiAgLy8gaWYgdW5pdHMsIHJlbW92ZSB1bml0c1xuICBAaWYgdW5pdCgkZGVnKSA9PSBkZWcge1xuICAgICRkZWc6ICRkZWcgLyAxZGVnO1xuICB9XG4gIC8vIHNoaWZ0IHRvIGJlIG9uIGEgc2NhbGUgZnJvbSAwIHRvIDkwLlxuICBAd2hpbGUgJGRlZyA+IDkwIHtcbiAgICAkZGVnOiAkZGVnIC0gOTA7XG4gIH1cbiAgQHdoaWxlICRkZWcgPCAwIHtcbiAgICAkZGVnOiAkZGVnICsgOTA7XG4gIH1cbiAgLy8gR2V0IGEgcmF0aW8gb2YgOTAgdG8gbXVsdGlwbHkgYnkuXG4gICRkZWc6ICRkZWcgLyA5MDtcblxuICAvLyBtYWtlIHN1cmUgbWV0cmljcyBhcmUgcmVzZXRcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAvLyBydW4gdGhyb3VnaCBzaWRlc1xuICBAaWYgJGFuZ2xlIDw9IDQ1IG9yICRhbmdsZSA+IDMxNSB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSkgJGhlaWdodCAoJHdpZHRoICogJGRlZyk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDQ1IGFuZCAkYW5nbGUgPD0gMTM1IHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiAkZGVnKSAwICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAxMzUgYW5kICRhbmdsZSA8PSAyMjUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpIDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAyMjUgYW5kICRhbmdsZSA8PSAzMTUge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGggKCRoZWlnaHQgKiAkZGVnKSAwO1xuICB9XG59IiwiLy8gVmVydGljYWxseSBjZW50ZXIgYW55dGhpbmcsIGxpdGVyYWxseSBhbnl0aGluZy5cbi8vIGh0dHA6Ly96ZXJvc2l4dGhyZWUuc2UvdmVydGljYWwtYWxpZ24tYW55dGhpbmctd2l0aC1qdXN0LTMtbGluZXMtb2YtY3NzL1xuQG1peGluIHZlcnRpY2FsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgndmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcblxuICB0b3A6ICRtaWRwb2ludDtcbiAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd2ZXJ0aWNhbCBjZW50ZXInKSB7XG4gICAgICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIb3Jpem9udGFsIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIEBpZiAkbWlkcG9pbnQgIT0gMCUge1xuICAgIGxlZnQ6ICRtaWRwb2ludDtcbiAgfVxuXG4gIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWJzb2x1dGUgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIoJHZlcnRpY2FsOiBudWxsLCAkaG9yaXpvbnRhbDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICR2ZXJ0aWNhbDogaWYoJHZlcnRpY2FsICE9IG51bGwsICR2ZXJ0aWNhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIHRvcDogJHZlcnRpY2FsO1xuICBAaWYgJGhvcml6b250YWwgIT0gMCUge1xuICAgIGxlZnQ6ICRob3Jpem9udGFsO1xuICB9XG5cbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIH1cbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxuXG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDU1MgbGV2ZWwgNCBWaWV3cG9ydFxuLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLWRldmljZS1hZGFwdC8jdGhlLWF0dmlld3BvcnQtcnVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gdmlld3BvcnQge1xuICBALXdlYmtpdC12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tb3otdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbXMtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEB2aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuIiwiQG1peGluIHVuZGVybGluZSgkYmFja2dyb3VuZDogbnVsbCwgJGNvbG9yOiBudWxsLCAkY2xlYXItZGVzY2VuZGVyczogbnVsbCwgJGRpc3RhbmNlOiBudWxsLCAkd2lkdGg6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGJhY2tncm91bmQ6IGlmKCRiYWNrZ3JvdW5kICE9IG51bGwsICRiYWNrZ3JvdW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGJhY2tncm91bmQnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjb2xvcicpKTtcbiAgJGNsZWFyLWRlc2NlbmRlcnM6IGlmKCRjbGVhci1kZXNjZW5kZXJzICE9IG51bGwsICRjbGVhci1kZXNjZW5kZXJzLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnKSk7XG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBkaXN0YW5jZScpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIHdpZHRoJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gICRQWDogLjA2MjVlbTtcblxuICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKGJhY2tncm91bmQtaW1hZ2UpIGFuZCBmdW5jdGlvbi1leGlzdHMobGluZWFyLWdyYWRpZW50KSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgIGxpbmVhci1ncmFkaWVudChib3R0b20sICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSlcbiAgICApO1xuICB9XG4gIEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpO1xuICB9XG4gIGJhY2tncm91bmQtc2l6ZTogKDIgKiAkUFgpICgoMSArICR3aWR0aCkgKiAkUFgpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwICgoJHdpZHRoKSAqICRQWCkgKyAkZGlzdGFuY2U7XG5cbiAgQGlmICRjbGVhci1kZXNjZW5kZXJzIHtcbiAgICB0ZXh0LXNoYWRvdzogKDEgKiAkUFgpICgxICogJFBYKSAwICRiYWNrZ3JvdW5kLCAoLTEgKiAkUFgpIDAgMCAkYmFja2dyb3VuZDtcbiAgfVxufVxuXG5AbWl4aW4gdW5kZXJsaW5lLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndW5kZXJsaW5lJykge1xuICAgICAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQVJUIVxuLy8gSW5zcGlyZWQgYnkgaHR0cDovL2VscnVtb3JkZWxhbHV6LmdpdGh1Yi5pby9QaXhlbGF0b3IvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhcnQoJGFydCwgJHB4LXNpemU6IG51bGwsICRjb2xvcjogbnVsbCwgJHJhZGl1czogbnVsbCkge1xuICAkcHgtc2l6ZTogaWYoJHB4LXNpemUgIT0gbnVsbCwgJHB4LXNpemUsIHRvb2xraXQtZ2V0KCdhcnQgcGl4ZWwgc2l6ZScpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgnYXJ0IGNvbG9yJykpO1xuICAkcmFkaXVzOiBpZigkcmFkaXVzICE9IG51bGwsICRyYWRpdXMsIHRvb2xraXQtZ2V0KCdhcnQgYm9yZGVyIHJhZGl1cycpKTtcblxuICAkYnVpbGQ6ICgpO1xuICAkeTogJHB4LXNpemU7XG4gICR4OiAwO1xuXG4gIGhlaWdodDogJHB4LXNpemU7XG4gIHdpZHRoOiAkcHgtc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0cl9sZW5ndGgoJGFydCkge1xuICAgICRjaGFyOiBzdHJfc2xpY2UoJGFydCwgJGksICRpKTtcbiAgICAkeDogJHggKyAkcHgtc2l6ZTtcblxuICAgIEBpZiAkY2hhciA9PSAnbicge1xuICAgICAgJHk6ICR5ICsgJHB4LXNpemU7XG4gICAgICAkeDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGNoYXIgIT0gJyAnIHtcbiAgICAgICRib3JkZXI6ICR4ICR5IDAgJGNvbG9yO1xuICAgICAgJGJ1aWxkOiBhcHBlbmQoJGJ1aWxkLCAkYm9yZGVyLCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgYm94LXNoYWRvdzogJGJ1aWxkO1xufSIsIkBtaXhpbiBzZXQtbXVsdGlwbGUoJHZhbHVlLCAkcHJvcGVydGllcy4uLikge1xuICAkcHJvcGVydHktbGVuZ3RoOiBsZW5ndGgoJHByb3BlcnRpZXMpO1xuICAkZXJyb3ItbXNnOiBcIlRoZSBgc2V0LW11bHRpcGxlYCBtaXhpbiByZXF1aXJlcyB5b3UgdG8gcGFzcyBpbiBhIGxpc3Qgb2YgcHJvcGVydGllcyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50XCI7XG5cbiAgQGlmICRwcm9wZXJ0eS1sZW5ndGggPCAxIHtcbiAgICBAaWYgZmVhdHVyZS1leGlzdHMoYXQtZXJyb3IpIHtcbiAgICAgIEBlcnJvciAkZXJyb3ItbXNnO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAkZXJyb3ItbXNnO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgaW4gaXMgYSB3aGl0ZS1zcGFjZWQgc2VwYXJhdGVkIGxpc3QuXG4gICRwcm9wZXJ0aWVzOiBpZigkcHJvcGVydHktbGVuZ3RoID09IDEsIG50aCgkcHJvcGVydGllcywgMSksICRwcm9wZXJ0aWVzKTtcblxuICBAZWFjaCAkcHJvcGVydHkgaW4gJHByb3BlcnRpZXMge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlXG4gIH1cbn1cbiIsIi8vICBNb2R1bGUgU2NhbGUgYW5kIGJhc2UgZm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiRiYXNlLWZvbnQtc2l6ZTogICAxNHB4O1xuJGlkZWFsLWZvbnQtc2l6ZTogIDIycHg7XG4vLyAkYmFzZS1saW5lLWhlaWdodDogbXMoMSwgJGJhc2UtZm9udC1zaXplKTtcblxuJHJoeXRobS11bml0OiBcInJlbVwiO1xuJHJoeXRobS1nYXA6IDhweDtcbiRyZW0td2l0aC1weC1mYWxsYmFjazogZmFsc2U7XG5cbiRzY3V0LXJlbS1iYXNlOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UtZm9udC1zaXplKTtcblxuXG4vLyB7eyBDb21wb25lbnQgc2l6ZSB9fVxuJGdsb2JhbC1yYWRpdXM6IDNweDtcbiIsIi8vICBHcmlkIHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuXG4kbGF5b3V0LWJhc2U6IChcbiAgZ3V0dGVyczogMS81LFxuICBjb2x1bW4td2lkdGg6IDgwcHgsXG4gIC8vIGd1dHRlci1wb3NpdGlvbjogaW5zaWRlLXN0YXRpYyxcbiAgZGVidWc6IChcbiAgICAvLyBpbWFnZTogc2hvdyxcbiAgKSxcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiB0cnVlLFxuICAgIHJlbTogZmFsc2UsXG4gICksXG4pO1xuJHN1c3k6IGxheW91dCg1ICRsYXlvdXQtYmFzZSk7XG5cbi8vIHt7IEVsZW1lbnQgdHdpY2sgcG9pbnRzIH19XG5cbi8vIHt7IERldmljZSBsYXlvdXRzIH19XG4kc3VzeS1tZWRpYTogKFxuICAnbW9iaWxlJzogJyhtYXgtd2lkdGg6IDQxNHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiAnKG1heC13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogJyhtYXgtd2lkdGg6IDEwMjRweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICd0YWJsZXQnOiAnKG1pbi13aWR0aDogNzY4cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdC1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlLW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdkZXNrdG9wJzogJyhtaW4td2lkdGg6IDEyMDBweCknLFxuICAnY2F0ZWdvcnktbWVudSc6ICcobWluLXdpZHRoOiAxMDI0cHgpJ1xuKTtcbiR0YWJsZXQ6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIHRhYmxldCksXG4gIGxheW91dDogOSAuNVxuKTtcbiR0YWJsZXQtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkdGFibGV0LCBsYXlvdXQpKTtcbiRkZXNrdG9wOiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCBkZXNrdG9wKSxcbiAgbGF5b3V0OiAxMiAxLjUgc3BsaXRcbik7XG4kZGVza3RvcC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCRkZXNrdG9wLCBsYXlvdXQpKTtcbiRkZXNrdG9wLWdyaWQtcGFkZGluZzogc2N1dC1yZW0oMTUpO1xuXG4vLyAge3sgTGF5ZXJzIC0tLS0tLSB9fVxuJGxheWVyczogKFxuICBiYXNlLFxuICBoZWFkZXItbWVudSxcbiAgZHJhd2VyLFxuICBkcmF3ZXItc2hhZG93LFxuICBkcmF3ZXItbmF2LFxuKTsiLCIvLyAgU2V0dGluZ3Ncbi8vICA9PT09PT09PVxuXG4kY29sb3ItbGlnaHQtc2F0dXJhdGlvbjogOTMlO1xuXG4vLyAgQ29sb3JzXG4vLyAgPT09PT09XG5cbiRncmF5LWJhc2U6ICAgICAjMDAwICFkZWZhdWx0O1xuJGdyYXktZGFya2VyOiAgIHRpbnQoJGdyYXktYmFzZSwgMTMuNSUpICFkZWZhdWx0O1xuJGdyYXktZGFyazogICAgIHRpbnQoJGdyYXktYmFzZSwgMjAlKSAgICFkZWZhdWx0O1xuJGdyYXk6ICAgICAgICAgIHRpbnQoJGdyYXktYmFzZSwgMzMuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHQ6ICAgIHRpbnQoJGdyYXktYmFzZSwgNDYuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHRlcjogIHRpbnQoJGdyYXktYmFzZSwgOTMuNSUpICFkZWZhdWx0O1xuXG4vLyAgVGV4dHNcbi8vICAtLS0tLVxuXG4kdGV4dC1jb2xvcjogJGdyYXktZGFyaztcblxuLy8gIFBhbGxldGVcbi8vICAtLS0tLS0tLS0tLVxuXG4kYmx1ZTogIzJkNmVjNjtcbiRibHVlLWRhcms6IHJnYigwLCA2OSwgMTY0KTtcbiRibHVlLWxpZ2h0OiAjZDhlOWZmO1xuJHllbGxvdzogI2ZjOTYwMDtcbiR5ZWxsb3ctZGFyazogI2I4NmUwMDtcbiR5ZWxsb3ctbGluazogI2ZmZDgwMDtcbiRvcmFuZ2U6ICNmYzQ3MDA7XG4kb3JhbmdlLWRhcms6ICNiODZlMDA7XG4kcmVkOiByZ2IoMjA2LCA2OCwgNjIpO1xuJGdyZWVuOiByZ2IoMjgsIDE0OSwgMjIpO1xuJHBpbms6IHJnYigxOTcsIDMxLCAxMjQpO1xuXG4kcHJpbWFyeTogc2hhZGUoIzQyOGJjYSwgNi41JSk7XG4kc3VjY2VzczogIzVjYjg1YztcbiRpbmZvOiAgICAjNWJjMGRjO1xuJHdhcm5pbmc6ICNmMGFkNGU7XG4kZGFuZ2VyOiAgI2Q5NTM0ZjtcblxuJGlucHV0LWJvcmRlcjogI2U0ZTRlNDtcbiRib3JkZXItZ3JheTogIzkxOTE5MTtcbiRiYWNrZ3JvdW5kLWdyYXk6ICNlOWU5ZTk7XG5cbi8vICBMaW5rc1xuLy8gIC0tLS0tXG5cbiRsaW5rLWNvbG9yOiAgICAgICAgICAgIzAwMCAhZGVmYXVsdDtcbiRsaW5rLWhvdmVyLWNvbG9yOiAgICAgc2hhZGUoJGxpbmstY29sb3IsIDE1JSkgIWRlZmF1bHQ7XG4kbGluay1mb2N1cy1jb2xvcjogICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay1hY3RpdmUtY29sb3I6ICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay12aXNpdGVkLWNvbG9yOiAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG5cbi8vICBOUHJvZ3Jlc3Ncbi8vICAtLS0tLS0tLS1cbiRucHJvZ3Jlc3MtY29sb3I6ICAgICRwcmltYXJ5O1xuIiwiLy8gIEZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogICByaWdodDtcblxuLy8g5YOF6Yed5bCN6Iux5paHXG4vLyBAZm9udC1mYWNlIHtcbi8vICAgZm9udC1mYW1pbHk6IEVuZ2xpc2g7XG4vLyAgIHVuaWNvZGUtcmFuZ2U6IFUrMDAtMDI0Rjtcbi8vICAgc3JjOiBsb2NhbChIZWx2ZXRpY2EpO1xuLy8gfVxuXG4kc2FuczogICAgSGVsdmV0aWNhTmV1ZS1MaWdodFxuICAgICAgICwgJ0hlbHZldGljYSBOZXVlIExpZ2h0J1xuICAgICAgICwgJ0hlbHZldGljYSBOZXVlJ1xuICAgICAgICwgIEhlbHZldGljYVxuICAgICAgICwgJ0hlaXRpIFRDJ1xuICAgICAgICwgJ0xpSGVpIFBybydcbiAgICAgICAsICdNaWNyb3NvZnQgSmhlbmdIZWknXG4gICAgICAgLCAn5b6u6Luf5q2j6buR6auUJ1xuICAgICAgICwgIEFyaWFsXG4gICAgICAgLCAgc2Fucy1zZXJpZjtcblxuJHNlcmlmOiAgJ1BUIFNlcmlmJ1xuICAgICAgICwgR2VvcmdpYVxuICAgICAgICwgVGltZXNcbiAgICAgICAsICdUaW1lcyBOZXcgUm9tYW4nXG4gICAgICAgLCAnU29uZ3RpIFRDJ1xuICAgICAgICwgJ0hpcmFnaW5vIE1pbmNobyBQcm9OJ1xuICAgICAgICwgc2VyaWY7XG5cbiRiYXNlLWZvbnQtZmFtaWx5OiAkc2FuczsiXSwibWFwcGluZ3MiOiJBOENBQTs7Ozs7RUFLRTtBRDZDRSxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07RTdDdkNFLEFBQUEsYUFBYSxDQUFDO0lBRWxDLE9BQU8sRUFBRSxJQUFLO0lBQ2QsZUFBZSxFQUFFLGFBQWMsR0FFbEM7O0FBQ0QsQUFBQSxtQkFBbUIsQ0FBQztFQUNsQixhQUFhLEVBQUUsR0FBRyxDQUFDLEtBQUssQ2tFeUJSLE9BQU8sR2xFaEJ4QjtFNkN1QkcsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO0k3Q2pDdEIsQUFBQSxtQkFBbUIsQ0FBQztNQUdoQixPQUFPLEVBQUUsSUFBSztNQUNkLFNBQVMsRUFBRSxhQUFjO01BQ3pCLFdBQVcsRUFBRSxVQUFXO01BQ3hCLFlBQVksRUNwQmlCLElBQVc7TURxQnhDLGFBQWEsRUFBRSxJQUFLO01BQ3BCLFlBQVksRUFBRSxHQUFHLENBQUMsS0FBSyxDa0VrQlQsT0FBTyxHbEVoQnhCOztBQUNELEFBQUEsa0JBQWtCLENBQUM7RUFDakIsT0FBTyxFQzVCZSxDQUFPLENBRUUsR0FBVyxDQUFYLEdBQVcsR0R1QzNDO0VBZEQsQUFBQSxrQkFBa0IsQUFFZixPQUFPLENBQUM7SUFDUCxhQUFhLEVBQUUsR0FBRyxDQUFDLEtBQUssQ2tFWVYsT0FBTyxHbEVQdEI7STZDY0MsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO003Q3RCdEIsQUFBQSxrQkFBa0IsQUFFZixPQUFPLENBQUM7UUFHTCxhQUFhLEVBQUUsSUFBSztRQUNwQixZQUFZLEVBQUUsR0FBRyxDQUFDLEtBQUssQ2tFU1gsT0FBTyxHbEVQdEI7RTZDY0MsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO0k3Q3RCdEIsQUFBQSxrQkFBa0IsQ0FBQztNQVVmLFdBQVcsRUFBRSxNQUFPO01BQ3BCLE9BQU8sRUNwQ3NCLEdBQVcsQ0FBWCxJQUFXLEdEdUMzQztNQWRELEFBQUEsa0JBQWtCLEFBWWIsTUFBTSxDQUFDO1FBQUUsWUFBWSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENrRUduQixPQUFPLEdsRUhpQzs7QUFHMUQsQUFBQSxzQkFBc0IsQ0FBQztFQ0tyQixPQUFPLEVBQUUsQ0FBRTtFQUNYLFVBQVUsRUFBRSxNQUFPO0VBQ25CLFVBQVUsRUFBRSw0Q0FBNkM7RUFDekQsUUFBUSxFQUFFLE1BQU87RUFDakIsTUFBTSxFQUFFLENBQUUsR0ROWDtFQUhELEFBQUEsc0JBQXNCLEFDVW5CLE9BQU8sQ0FBQztJQUNQLE9BQU8sRUFBRSxDQUFFO0lBQ1gsVUFBVSxFQUFFLE9BQVE7SUFDcEIsZ0JBQWdCLEVBQUUsRUFBRztJQUNyQixRQUFRLEVBQUUsSUFBSztJQUNmLE1BQU0sRUFBRSxJQUFLLEdBQ2Q7RURkRCxBQUZGLE1BRVEsQ0FGUixzQkFBc0IsQ0FFWDtJQ2tCVCxPQUFPLEVBQUUsQ0FBRTtJQUNYLFVBQVUsRUFBRSxPQUFRO0lBQ3BCLGdCQUFnQixFQUFFLEVBQUc7SUFDckIsTUFBTSxFQUFFLElBQUssR0RyQmlCIiwibmFtZXMiOltdfQ== */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.home-page-slider {
  position: relative; }

.home-page-slider__container {
  display: none; }

.home-page-slider__container.slick-initialized {
  display: block; }

.home-page-slider__cell {
  display: block;
  position: relative; }

.home-page-slider__image {
  display: block;
  width: 100%; }

.home-page-slider__caption {
  padding-right: 24px;
  padding-left: 24px;
  height: 42px;
  right: 0;
  bottom: 8px;
  left: 0;
  position: absolute;
  overflow: hidden;
  background-color: rgba(255, 255, 255, 0.6); }

@media (min-width: 768px) {
  .home-page-slider__caption {
    height: 52px;
    padding-right: 40px;
    padding-left: 40px; } }
.home-page-slider__caption .heading {
  font-size: 18px;
  line-height: 42px;
  margin: 0; }

@media (min-width: 768px) {
  .home-page-slider__caption .heading {
    font-size: 28px;
    line-height: 1.5;
    padding-top: 6px; } }
.home-page-slider__caption .caption {
  display: none; }

@media (min-width: 768px) {
  .home-page-slider__caption .caption {
    display: block;
    margin-top: 0;
    margin-bottom: 8px; } }
.home-page-slider__navs {
  height: 42px;
  right: 0;
  bottom: 8px;
  left: 0;
  position: absolute;
  stroke: #1c1c1b; }

@media (min-width: 768px) {
  .home-page-slider__navs {
    height: 52px; } }
.home-page-slider__navs .icon {
  width: 11px;
  height: 30px; }

@media (min-width: 768px) {
  .home-page-slider__navs .icon {
    width: 22px;
    height: 40px; } }
.home-page-slider__next {
  top: 50%;
  right: 8px;
  position: absolute;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%); }

.home-page-slider__prev {
  top: 50%;
  left: 8px;
  position: absolute;
  -webkit-transform: rotate(180deg) translateY(50%);
  transform: rotate(180deg) translateY(50%); }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2hvbWUtcGFnZS1zbGlkZXIuc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2hvbWUtcGFnZS1zbGlkZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy5ob21lLXBhZ2Utc2xpZGVyIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4uaG9tZS1wYWdlLXNsaWRlcl9fY29udGFpbmVyIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgJi5zbGljay1pbml0aWFsaXplZCB7IGRpc3BsYXk6IGJsb2NrOyB9XG59XG4uaG9tZS1wYWdlLXNsaWRlcl9fY2VsbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uaG9tZS1wYWdlLXNsaWRlcl9faW1hZ2Uge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG59XG4uaG9tZS1wYWdlLXNsaWRlcl9fY2FwdGlvbiB7XG4gIHBhZGRpbmc6IG4oKSByKDMpO1xuICBoZWlnaHQ6IDQycHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSBuKCkgMCByKDEpIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoI2ZmZiwgLjYpO1xuICBAaW5jbHVkZSBzdXN5KCR0YWJsZXQpIHtcbiAgICBoZWlnaHQ6IDgycHg7XG4gICAgcGFkZGluZzogbigpIHIoNSk7XG4gIH1cbiAgXG4gIC5oZWFkaW5nIHtcbiAgICB0ZXh0OiAxOHB4IDQycHg7XG4gICAgbWFyZ2luOiAwO1xuICAgIEBpbmNsdWRlIHN1c3koJHRhYmxldCkge1xuICAgICAgdGV4dDogMjRweCAxLjU7XG4gICAgfVxuICB9XG4gIC5jYXB0aW9uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIEBpbmNsdWRlIHN1c3koJHRhYmxldCkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBtYXJnaW46IDAgbigpIHIoMSk7ICBcbiAgICB9XG4gIH1cbn1cbi5ob21lLXBhZ2Utc2xpZGVyX19uYXZzIHtcbiAgaGVpZ2h0OiA0MnB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGUgbigpIDAgcigxKSAwO1xuICBzdHJva2U6ICMxYzFjMWI7XG4gIEBpbmNsdWRlIHN1c3koJHRhYmxldCkge1xuICAgIGhlaWdodDogODJweDtcbiAgfVxuICAuaWNvbiB7XG4gICAgc2l6ZTogMTFweCAzMHB4O1xuICAgIEBpbmNsdWRlIHN1c3koJHRhYmxldCkge1xuICAgICAgc2l6ZTogMjJweCA2MHB4O1xuICAgIH1cbiAgfVxufVxuLmhvbWUtcGFnZS1zbGlkZXJfX25leHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgNTAlIHIoMSkgbigpIG4oKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xufVxuLmhvbWUtcGFnZS1zbGlkZXJfX3ByZXYge1xuICBwb3NpdGlvbjogYWJzb2x1dGUgNTAlIG4oKSBuKCkgcigxKTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKSB0cmFuc2xhdGVZKDUwJSk7XG59IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiQThDQUE7Ozs7O0VBS0U7QTlDTXNCLEFBQUEsaUJBQWlCLENBQUM7RUFBRSxRQUFRLEVBQUUsUUFBUyxHQUFJOztBQUNuRSxBQUFBLDRCQUE0QixDQUFDO0VBQzNCLE9BQU8sRUFBRSxJQUFLLEdBRWY7RUFIRCxBQUFBLDRCQUE0QixBQUV6QixrQkFBa0IsQ0FBQztJQUFFLE9BQU8sRUFBRSxLQUFNLEdBQUk7O0FBRTNDLEFBQUEsdUJBQXVCLENBQUM7RUFDdEIsT0FBTyxFQUFFLEtBQU07RUFDZixRQUFRLEVBQUUsUUFBUyxHQUNwQjs7QUFDRCxBQUFBLHdCQUF3QixDQUFDO0VBQ3ZCLE9BQU8sRUFBRSxLQUFNO0VBQ2YsS0FBSyxFQUFFLElBQUssR0FDYjs7QUFDRCxBQUFBLDBCQUEwQixDQUFDO0VBQ3pCLE9BQU8sRUN4QmUsQ0FBTyxDQUVFLElBQVc7RUR1QjFDLE1BQU0sRUFBRSxJQUFLO0VBQ2IsUUFBUSxFQUFFLFFBQVEsQ0MxQkksQ0FBTyxDRDBCTixDQUFDLENDeEJPLEdBQVcsQ0R3QlosQ0FBQztFQUMvQixRQUFRLEVBQUUsTUFBTztFQUNqQixnQkFBZ0IsRUFBTyx3QkFBSSxHQW9CNUI7RTZDQ0csTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO0k3QzFCckIsQUFBQSwwQkFBMEIsQ0FBQztNQU92QixNQUFNLEVBQUUsSUFBSztNQUNiLE9BQU8sRUMvQmEsQ0FBTyxDQUVFLElBQVcsR0Q4QzNDO0VBekJELEFBV0UsMEJBWHdCLENBV3hCLFFBQVEsQ0FBQztJQUNQLElBQUksRUFBRSxTQUFVO0lBQ2hCLE1BQU0sRUFBRSxDQUFFLEdBSVg7STZDU0MsTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO003QzFCckIsQUFXRSwwQkFYd0IsQ0FXeEIsUUFBUSxDQUFDO1FBSUwsSUFBSSxFQUFFLFFBQVMsR0FFbEI7RUFqQkgsQUFrQkUsMEJBbEJ3QixDQWtCeEIsUUFBUSxDQUFDO0lBQ1AsT0FBTyxFQUFFLElBQUssR0FLZjtJNkNFQyxNQUFNLEVBQUwsU0FBUyxFQUFFLEtBQUs7TTdDMUJyQixBQWtCRSwwQkFsQndCLENBa0J4QixRQUFRLENBQUM7UUFHTCxPQUFPLEVBQUUsS0FBTTtRQUNmLE1BQU0sRUFBRSxDQUFDLENDN0NTLENBQU8sQ0FFRSxHQUFXLEdENkN6Qzs7QUFFSCxBQUFBLHVCQUF1QixDQUFDO0VBQ3RCLE1BQU0sRUFBRSxJQUFLO0VBQ2IsUUFBUSxFQUFFLFFBQVEsQ0NuREksQ0FBTyxDRG1ETixDQUFDLENDakRPLEdBQVcsQ0RpRFosQ0FBQztFQUMvQixNQUFNLEVBQUUsT0FBUSxHQVVqQjtFNkNiRyxNQUFNLEVBQUwsU0FBUyxFQUFFLEtBQUs7STdDQXJCLEFBQUEsdUJBQXVCLENBQUM7TUFLcEIsTUFBTSxFQUFFLElBQUssR0FRaEI7RUFiRCxBQU9FLHVCQVBxQixDQU9yQixLQUFLLENBQUM7SUFDSixJQUFJLEVBQUUsU0FBVSxHQUlqQjtJNkNaQyxNQUFNLEVBQUwsU0FBUyxFQUFFLEtBQUs7TTdDQXJCLEFBT0UsdUJBUHFCLENBT3JCLEtBQUssQ0FBQztRQUdGLElBQUksRUFBRSxTQUFVLEdBRW5COztBQUVILEFBQUEsdUJBQXVCLENBQUM7RUFDdEIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENDOURTLEdBQVcsQ0FGcEIsQ0FBTyxDQUFQLENBQU87RURpRTdCLFNBQVMsRUFBRSxnQkFBVSxHQUN0Qjs7QUFDRCxBQUFBLHVCQUF1QixDQUFDO0VBQ3RCLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxDQ3BFQSxDQUFPLENBQVAsQ0FBTyxDQUVFLEdBQVc7RURtRTFDLFNBQVMsRUFBRSxjQUFNLENBQVMsZUFBVSxHQUNyQyIsIm5hbWVzIjpbXX0= */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.ad {
  max-width: 100%; }

.ad--full {
  display: block;
  width: 100%; }

.ad__image {
  width: 100%; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2FkLnNjc3MiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19hZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19taXhpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fY2xhc3Nlcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvX3N1LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3V0aWxpdGllcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX2Zsb2F0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zaGFyZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19wcmVmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3JlbS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2luc3BlY3Quc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19vdXRwdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19kaXJlY3Rpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fZW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3JpZHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3V0dGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19nYWxsZXJ5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcm93cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmxlZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19icmVha3BvaW50LXBsdWdpbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3NjdXQvZGlzdC9fc2N1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy9fdG9vbGtpdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wbGFjZWhvbGRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ZvbnRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ludHJpbnNpYy1yYXRpby5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19uZXN0ZWQtY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wYXJhbGxheC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19ydGwuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdGFyZ2V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RyaWFuZ2xlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NlbnRlci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L192aWV3cG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L191bmRlcmxpbmUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fYXJ0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldC1tdWx0aXBsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19zY2FsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19mb250LnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLSB2ZW5kb3IgbWl4aW4gbGlicmFyaWVzIC0tLS1cbkBpbXBvcnQgXCJtaXhpbnNcIixcbiAgICAgICAgXCJjbGFzc2VzXCIsXG4gICAgICAgIFwifnN1c3lcIixcbiAgICAgICAgXCJ+c2N1dFwiLFxuICAgICAgICBcIn5zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdFwiO1xuXG4vLyAtLS0tIHZhcmlhYmxlcyBhbmQgY29uZmlnIC0tLS1cbkBpbXBvcnQgXCJzZXR0aW5ncy9zY2FsZVwiLFxuICAgICAgICBcInNldHRpbmdzL2dyaWRcIixcbiAgICAgICAgXCJzZXR0aW5ncy9jb2xvcnNcIixcbiAgICAgICAgXCJzZXR0aW5ncy9mb250XCI7LmFkIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICAmLS1mdWxsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuLmFkX19pbWFnZSB7IHdpZHRoOiAxMDAlOyB9IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiQThDQUE7Ozs7O0VBS0U7QTlDTXNCLEFBQUEsR0FBRyxDQUFDO0VBQzFCLFNBQVMsRUFBRSxJQUFLLEdBS2pCO0VBTnVCLEFBQUEsU0FBRyxDQUVqQjtJQUNOLE9BQU8sRUFBRSxLQUFNO0lBQ2YsS0FBSyxFQUFFLElBQUssR0FDYjs7QUFFSCxBQUFBLFVBQVUsQ0FBQztFQUFFLEtBQUssRUFBRSxJQUFLLEdBQUkiLCJuYW1lcyI6W119 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
@media (min-width: 1200px) {
  .post-card-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-flow: row wrap;
    flex-flow: row wrap;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between; } }
.post-card {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: column nowrap;
  flex-flow: column nowrap;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  padding: 8px;
  margin-bottom: 8px;
  position: relative;
  background-color: #e9e9e9; }

@media (min-width: 768px) {
  .post-card {
    -ms-flex-flow: row nowrap;
    flex-flow: row nowrap;
    -webkit-box-align: stretch;
    -ms-flex-align: stretch;
    align-items: stretch; } }
@media (min-width: 1200px) {
  .post-card {
    width: calc(50% - 4px); } }
.post-card__thumbnail {
  width: 100%;
  height: auto; }

@media (min-width: 768px) {
  .post-card__thumbnail {
    width: 204px;
    height: 156px; 
    object-position: 50% 15%; } }
.post-card__content-wrapper {
  -webkit-box-flex: 1;
  -ms-flex: 1 0;
  flex: 1 0;
  margin-left: 8px;
  padding-top: 16px; }

@media (min-width: 768px) {
  .post-card__content-wrapper {
    padding-top: 24px; } }
.post-card__heading {
  margin: 0;
  font-size: 18px;
  line-height: 1.2; }

.post-card__summary {
  margin-top: 0; }

.post-card__label {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  text-align: center;
  font-size: 12px;
  line-height: 1;
  color: #fff;
  width: 40px;
  height: 28px;
  top: -8px;
  right: 8px;
  position: absolute;
  background-color: #ce443e; }

.post-card__label .text {
  margin: auto; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX3Bvc3QtY2FyZC5zY3NzIiwic291cmNlcyI6WyIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fcG9zdC1jYXJkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX21peGlucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19jbGFzc2VzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2N1dC9kaXN0L19zY3V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL190b29sa2l0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BsYWNlaG9sZGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fZm9udHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9faW50cmluc2ljLXJhdGlvLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX25lc3RlZC1jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BhcmFsbGF4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3J0bC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190YXJnZXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdHJpYW5nbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2VudGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3ZpZXdwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3VuZGVybGluZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19hcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0LW11bHRpcGxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3NjYWxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2ZvbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tIHZlbmRvciBtaXhpbiBsaWJyYXJpZXMgLS0tLVxuQGltcG9ydCBcIm1peGluc1wiLFxuICAgICAgICBcImNsYXNzZXNcIixcbiAgICAgICAgXCJ+c3VzeVwiLFxuICAgICAgICBcIn5zY3V0XCIsXG4gICAgICAgIFwifnNhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0XCI7XG5cbi8vIC0tLS0gdmFyaWFibGVzIGFuZCBjb25maWcgLS0tLVxuQGltcG9ydCBcInNldHRpbmdzL3NjYWxlXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZ3JpZFwiLFxuICAgICAgICBcInNldHRpbmdzL2NvbG9yc1wiLFxuICAgICAgICBcInNldHRpbmdzL2ZvbnRcIjsucG9zdC1jYXJkLXdyYXBwZXIge1xuICBAaW5jbHVkZSBzdXN5KCRkZXNrdG9wKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxufVxuLnBvc3QtY2FyZCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogcigxKTtcbiAgbWFyZ2luLWJvdHRvbTogcigxKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ncmF5O1xuICBAaW5jbHVkZSBzdXN5KCR0YWJsZXQpIHtcbiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIH1cbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkge1xuICAgIHdpZHRoOiBjYWxjKDUwJSAtIDRweCk7XG4gIH1cbn1cbi5wb3N0LWNhcmRfX3RodW1ibmFpbCB7XG4gIHNpemU6IDEwMCUgYXV0bztcbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7IHNpemU6IDIwNHB4IDE1NnB4OyB9XG59XG4ucG9zdC1jYXJkX19jb250ZW50LXdyYXBwZXIge1xuICBmbGV4OiAxIDA7XG4gIG1hcmdpbi1sZWZ0OiByKDEpO1xuICBwYWRkaW5nLXRvcDogcigyKTtcbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7XG4gICAgcGFkZGluZy10b3A6IHIoMyk7XG4gIH1cbn1cbi5wb3N0LWNhcmRfX2hlYWRpbmcge1xuICBtYXJnaW46IDA7XG4gIHRleHQ6IDE4cHggMS4yO1xufVxuLnBvc3QtY2FyZF9fc3VtbWFyeSB7bWFyZ2luLXRvcDogMDt9XG4ucG9zdC1jYXJkX19sYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQ6IGNlbnRlciAxMnB4IDEgI2ZmZjtcbiAgc2l6ZTogNDBweCAyOHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGUgcigtMSkgcigxKSBuKCkgbigpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkO1xuICAudGV4dCB7IG1hcmdpbjogYXV0bzsgfVxufSIsIi8vIHt7U2FzcyBtaXhpbnMgLS0tLS0tLS19fVxuQGZ1bmN0aW9uIG4oKSB7IEByZXR1cm4gdW5xdW90ZShcIipcIik7IH1cblxuQGZ1bmN0aW9uIHIoJHRpbWVzOiAxKSB7IEByZXR1cm4gJHJoeXRobS1nYXAgKiAkdGltZXM7IH1cblxuQG1peGluIHN1c3koJG1hcCkge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkbWFwLCBxdWVyeSksIG1hcC1nZXQoJG1hcCwgbGF5b3V0KSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiByZXZlcnNlLWhpZGUtdmlzdWFsbHkoKSB7XG4gIGJvcmRlcjogMDtcbiAgY2xpcDogYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogYXV0bztcbn1cblxuQG1peGluIHNoYXJlLWJyZWFrcG9pbnRzKCRtYXAsICRjc3Nwcm9wOiBjb250ZW50KSB7XG4gICRkZXNjcmlwdGlvbjogJyc7XG5cbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgQGlmICRkZXNjcmlwdGlvbiAhPSAgJycge1xuICAgICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAnIHwgJztcbiAgICB9XG4gICAgXG4gICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAkcHJvcGVydHkgKyc6ICcrIGluc3BlY3QoJHZhbHVlKTtcbiAgfVxuXG4gIGRpc3BsYXk6IG5vbmU7XG4gICN7JGNzc3Byb3B9OiAgJGRlc2NyaXB0aW9uO1xufVxuXG5AbWl4aW4gdG9nZ2xlLWZhZGUoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIH1cbn1cblxuQG1peGluIHRvZ2dsZS1zaG93KCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IDA7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9ICBcbn1cblxuQG1peGluIHNob3coKSB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICBoZWlnaHQ6IGF1dG87ICBcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyKCkge1xuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCBcbiAgJjo6LW1vei1wbGFjZWhvbGRlcixcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxufVxuXG5AbWl4aW4gZGVidWcoJGNvbG9yOiAjZmZmIHJnYmEodG9tYXRvLCAuMykpIHtcbiAgY29sb3I6ICRjb2xvclxufVxuXG5AbWl4aW4gbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSk7XG4gID4gbGkgKyBsaTpiZWZvcmUgeyBtYXJnaW4tbGVmdDogJHNwYWNlICsgNHB4OyB9XG59XG4iLCJAbWl4aW4gSGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBTZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBwYWRkaW5nOiAwIHIoMikgMCByKDEpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAvLyBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIC8vIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gIC8vIGJhY2tncm91bmQ6IHVybChcImltYWdlcy9hcnJvdy1kb3duLnN2Z1wiKVxuICAvLyAgICAgICAgICAgOTIlIDUwJSAvIDhweCAxMHB4XG4gIC8vICAgICAgICAgICBuby1yZXBlYXRcbiAgLy8gICAgICAgICAgIHRyYW5zcGFyZW50O1xuICAubm8tY3NzLWFwcGVhcmFuY2UgJiB7XG4gICAgQGluY2x1ZGUgc2N1dC1wYWRkaW5nKG4gMCk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gTm9ybWFsaXplKCkge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmUgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDA7XG59IiwiLy8gU3VzeVxuLy8gPT09PVxuXG5AaW1wb3J0ICdzdXN5L2xhbmd1YWdlL3N1c3knO1xuIiwiLy8gU3VzeSBOZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4kc3VzeS12ZXJzaW9uOiAyLjE7XG5cbkBpbXBvcnQgXCIuLi9zdVwiO1xuQGltcG9ydCBcIi4uL291dHB1dC9mbG9hdFwiO1xuXG5AaW1wb3J0IFwic3VzeS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1c3kvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1c3kvZ3JpZHNcIjtcbkBpbXBvcnQgXCJzdXN5L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRleHRcIjtcbkBpbXBvcnQgXCJzdXN5L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInN1c3kvc3BhblwiO1xuQGltcG9ydCBcInN1c3kvZ3V0dGVyc1wiO1xuQGltcG9ydCBcInN1c3kvaXNvbGF0ZVwiO1xuQGltcG9ydCBcInN1c3kvZ2FsbGVyeVwiO1xuQGltcG9ydCBcInN1c3kvcm93c1wiO1xuQGltcG9ydCBcInN1c3kvbWFyZ2luc1wiO1xuQGltcG9ydCBcInN1c3kvcGFkZGluZ1wiO1xuQGltcG9ydCBcInN1c3kvYmxlZWRcIjtcbkBpbXBvcnQgXCJzdXN5L2JyZWFrcG9pbnQtcGx1Z2luXCI7XG4iLCIvLyBTdVxuLy8gPT1cblxuQGltcG9ydCBcInN1L3V0aWxpdGllc1wiO1xuQGltcG9ydCBcInN1L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3UvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1L2dyaWRcIjtcbiIsIi8vIE1hcCBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBUcnVuY2F0ZSBMaXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiBhIGxpc3QsIHRydW5jYXRlZCB0byBhIGdpdmVuIGxlbmd0aFxuQGZ1bmN0aW9uIF9zdXN5LXRydW5jYXRlLWxpc3QoXG4gICRsaXN0LFxuICAkbGVuZ3RoXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgJF9yZXR1cm46IGlmKCRpIDw9ICRsZW5ndGgsIGFwcGVuZCgkX3JldHVybiwgbnRoKCRsaXN0LCAkaSkpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgR2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1nZXQoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46ICRtYXA7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIHR5cGUtb2YoJF9yZXR1cm4pID09IG1hcCB7XG4gICAgICAkX3JldHVybjogbWFwLWdldCgkX3JldHVybiwgJGtleSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIFNldFxuLy8gLS0tLS0tLS1cbi8vIC0gU2V0IGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtc2V0KFxuICAkbWFwLFxuICAka2V5cy12YWx1ZS4uLlxuKSB7XG4gICRfdmFsdWU6IG50aCgka2V5cy12YWx1ZSwgLTEpO1xuICAkX2tleXM6IF9zdXN5LXRydW5jYXRlLWxpc3QoJGtleXMtdmFsdWUsIGxlbmd0aCgka2V5cy12YWx1ZSkgLSAxKTtcbiAgJF9sZW5ndGg6IGxlbmd0aCgkX2tleXMpO1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkX2xlbmd0aCB7XG4gICAgJF9uOiAwIC0gJGk7XG4gICAgJF9sZXZlbDogX3N1c3ktdHJ1bmNhdGUtbGlzdCgkX2tleXMsICRfbGVuZ3RoICsgJF9uKTtcbiAgICAkX2xldmVsOiBfc3VzeS1kZWVwLWdldCgkbWFwLCAkX2xldmVsLi4uKTtcbiAgICAkX21lcmdlOiBudGgoJF9rZXlzLCAkX24pO1xuICAgICRfbWVyZ2U6ICgkX21lcmdlOiAkX3ZhbHVlKTtcbiAgICAkX3JldHVybjogaWYoJF9sZXZlbCwgbWFwLW1lcmdlKCRfbGV2ZWwsICRfbWVyZ2UpLCAkX21lcmdlKTtcbiAgICAkX3ZhbHVlOiAkX3JldHVybjtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBNZXJnZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIDIgb2JqZWN0cyBvZiBhbnkgZGVwdGgsIG1lcmdlZFxuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtbWVyZ2UoXG4gICRtYXAxLFxuICAkbWFwMlxuKSB7XG5cbiAgQGlmIHR5cGUtb2YoJG1hcDEpICE9IG1hcCBvciB0eXBlLW9mKCRtYXAyKSAhPSBtYXAge1xuICAgICRtYXAxOiAkbWFwMjtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAyIHtcbiAgICAgICRfbmV3OiAoJGtleTogX3N1c3lfZGVlcC1tZXJnZShtYXAtZ2V0KCRtYXAxLCAka2V5KSwgJHZhbHVlKSk7XG4gICAgICAkbWFwMTogbWFwLW1lcmdlKCRtYXAxLCAkX25ldyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbWFwMTtcbn1cblxuXG4vLyBEZWVwIEhhcy1LZXlcbi8vIC0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gdHJ1ZSBpZiBhIGRlZXAga2V5IGV4aXN0c1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtaGFzLWtleShcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogbnVsbDtcbiAgJF9zdG9wOiBmYWxzZTtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgbm90KCRfc3RvcCkge1xuICAgICAgJF9yZXR1cm46IG1hcC1oYXMta2V5KCRtYXAsICRrZXkpO1xuICAgIH1cblxuICAgIEBpZiAkX3JldHVybiB7XG4gICAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9zdG9wOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTZXR0aW5nc1xuLy8gPT09PT09PT1cblxuLy8gVmVyc2lvblxuLy8gLS0tLS0tLVxuJHN1LXZlcnNpb246IDEuMTtcblxuXG4vLyBEZWZhdWx0IFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBUaGUgYmFzaWMgc2V0dGluZ3NcbiRzdXN5LWRlZmF1bHRzOiAoXG4gIGNvbHVtbnM6IDQsXG4gIGd1dHRlcnM6IC4yNSxcbik7XG5cblxuLy8gVXNlciBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBEZWZpbmUgdGhlICRzdXN5IHZhcmlhYmxlIHdpdGggYSBtYXAgb2YgeW91ciBvd24gc2V0dGluZ3MuXG4vLyAtIFNldCBFSVRIRVIgJGNvbHVtbi13aWR0aCBPUiAkY29udGFpbmVyXG4vLyAtIFVzZSAkY29sdW1uLXdpZHRoIGZvciBzdGF0aWMgbGF5b3V0c1xuJHN1c3k6ICgpICFkZWZhdWx0O1xuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IEFkZCBkZWZhdWx0cyB0byBTdXN5XG5AbWl4aW4gc3VzeS1kZWZhdWx0cyhcbiAgJGRlZmF1bHRzXG4pIHtcbiAgJHN1c3ktZGVmYXVsdHM6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJGRlZmF1bHRzKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgU2V0XG4vLyAtLS0tLS0tLVxuLy8gQ2hhbmdlIG9uZSBzZXR0aW5nXG4vLyAtICRrZXkgICA6IHNldHRpbmcgbmFtZVxuLy8gLSAkdmFsdWUgOiBzZXR0aW5nIHZhbHVlXG5AbWl4aW4gc3VzeS1zZXQoXG4gICRrZXktdmFsdWUuLi5cbikge1xuICAkc3VzeTogX3N1c3ktZGVlcC1zZXQoJHN1c3ksICRrZXktdmFsdWUuLi4pICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm4gb25lIHNldHRpbmcgZnJvbSBhIGdyaWRcbi8vIC0gJGtleSAgICAgOiA8a2V5d29yZD5cbi8vIC0gJGxheW91dCAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gc3VzeS1nZXQoXG4gICRrZXksXG4gICRsYXlvdXQ6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJHN1c3kpXG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF9vcHRpb25zOiAkbGF5b3V0ICRzdXN5ICRzdXN5LWRlZmF1bHRzO1xuICAkX2JyZWFrOiBmYWxzZTtcbiAgJF9yZXR1cm46IG51bGw7XG5cbiAgQGVhY2ggJG9wdCBpbiAkX29wdGlvbnMge1xuICAgIEBpZiB0eXBlLW9mKCRvcHQpID09IG1hcCBhbmQgbm90KCRfYnJlYWspIHtcbiAgICAgICRfa2V5c2V0OiBfc3VzeS1kZWVwLWhhcy1rZXkoJG9wdCwgJGtleS4uLik7XG4gICAgICBAaWYgJF9rZXlzZXQge1xuICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1nZXQoJG9wdCwgJGtleS4uLik7XG4gICAgICAgICRfYnJlYWs6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIE1hdGggVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09XG5cblxuLy8gVmFsaWQgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGNvbHVtbiBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRjb2x1bW5zKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkY29sdW1ucykge1xuICAgICRyZXR1cm46ICRjb2x1bW5zO1xuICB9IEBlbHNlIGlmICR0eXBlID09IGxpc3Qge1xuICAgICRmYWlsOiBudWxsO1xuICAgIEBlYWNoICRjb2wgaW4gJGNvbHVtbnMge1xuICAgICAgQGlmIHR5cGUtb2YoJGNvbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgJGZhaWw6ICRmYWlsIG9yIGlmKHVuaXRsZXNzKCRjb2wpLCBudWxsLCB0cnVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHJldHVybjogaWYoJGZhaWwsICRyZXR1cm4sICRjb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiAkcmV0dXJuICE9ICRjb2x1bW5zIGFuZCBub3QoJHNpbGVudCkge1xuICAgICRyZXR1cm46IG51bGw7XG4gICAgJHdhcm46ICckY29sdW1ucyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyIG9yIGxpc3Qgb2YgdW5pdGxlc3MgbnVtYmVycy4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGNvbHVtbnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG4vLyBWYWxpZCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgZ3V0dGVyIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtZ3V0dGVycyhcbiAgJGd1dHRlcnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXJzKSB7XG4gICAgJHJldHVybjogJGd1dHRlcnM7XG4gIH0gQGVsc2UgaWYgbm90KCRzaWxlbnQpIHtcbiAgICAkd2FybjogJyRndXR0ZXJzIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRndXR0ZXJzfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBDb2x1bW4gbWF0aFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBJcyBTeW1tZXRyaWNhbFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIGdyaWQgaXMgc3ltbWV0cmljYWwuXG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gaXMtc3ltbWV0cmljYWwoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpZih0eXBlLW9mKCRjb2x1bW5zKSA9PSBudW1iZXIsICRjb2x1bW5zLCBudWxsKTtcbn1cblxuXG4vLyBTdXN5IENvdW50XG4vLyAtLS0tLS0tLS0tXG4vLyBGaW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiBhIGdpdmVuIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktY291bnQoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykgb3IgbGVuZ3RoKCRjb2x1bW5zKTtcbn1cblxuXG4vLyBTdXN5IFN1bVxuLy8gLS0tLS0tLS1cbi8vIEZpbmQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5LXN1bShcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuXG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQgPT0gd2lkZSwgMCwgaWYoJHNwcmVhZCA9PSB3aWRlciwgMSwgLTEpKTtcbiAgJGd1dHRlci1zdW06IChzdXN5LWNvdW50KCRjb2x1bW5zKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICRjb2x1bW4tc3VtOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgQGlmIG5vdCgkY29sdW1uLXN1bSkge1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGNvbHVtbnMge1xuICAgICAgJGNvbHVtbi1zdW06ICgkY29sdW1uLXN1bSBvciAwKSArICRjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtO1xufVxuXG5cbi8vIFN1c3kgU2xpY2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBvZiBjb2x1bW5zIGF0IGEgZ2l2ZW4gbG9jYXRpb24uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkc3ViLWNvbHVtbnM6ICRzcGFuO1xuXG4gIEBpZiBub3QoaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpKSB7XG4gICAgJGxvY2F0aW9uOiAkbG9jYXRpb24gb3IgMTtcbiAgICAkc3ViLWNvbHVtbnM6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRzcGFuKSB7XG4gICAgICAkc3ViLWNvbHVtbnM6IGFwcGVuZCgkc3ViLWNvbHVtbnMsIG50aCgkY29sdW1ucywgJGkpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG4vLyBTdXN5XG4vLyAtLS0tXG4vLyBGaW5kIHRoZSBzdW0gb2YgYSBjb2x1bW4tc3Bhbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5KFxuICAkc3BhbixcbiAgJGxvY2F0aW9uICAgICA6IGZhbHNlLFxuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICAgICAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgICAgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG4gICRzcGFuOiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcblxuICBAcmV0dXJuIHN1c3ktc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCk7XG59XG4iLCIvLyBGbG9hdCBBUElcbi8vID09PT09PT09PVxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbkBpbXBvcnQgXCJmbG9hdC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJmbG9hdC9zcGFuXCI7XG5AaW1wb3J0IFwiZmxvYXQvZW5kXCI7XG5AaW1wb3J0IFwiZmxvYXQvaXNvbGF0ZVwiO1xuIiwiLy8gU2hhcmVkIEFQSVxuLy8gPT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydFwiO1xuXG5AaW1wb3J0IFwic2hhcmVkL2luc3BlY3RcIjtcbkBpbXBvcnQgXCJzaGFyZWQvb3V0cHV0XCI7XG5AaW1wb3J0IFwic2hhcmVkL2RpcmVjdGlvblwiO1xuQGltcG9ydCBcInNoYXJlZC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic2hhcmVkL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNoYXJlZC9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic2hhcmVkL3BhZGRpbmdcIjtcblxuXG5cbiIsIi8vIFN1c3kgQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydC9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9wcmVmaXhcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3JlbVwiO1xuQGltcG9ydCBcInN1cHBvcnQvY2xlYXJmaXhcIjtcbiIsIi8vIEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgU3VwcG9ydCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgYnJlYWtwb2ludDogdHJ1ZSxcbiAgICBib3gtc2l6aW5nOiB0cnVlLFxuICAgIHJlbTogdHJ1ZSxcbiAgKSxcbikpO1xuXG5cbi8vIFN1c3kgU3VwcG9ydCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VuZCBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0byB0aGUgcHJvcGVyIHN1cHBvcnQgbW9kdWxlcy5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXN1cHBvcnQoXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgLy8gQmFja2dyb3VuZCBTdXBwb3J0XG4gIEBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtaW1hZ2UoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1zaXplIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtc2l6ZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLW9yaWdpbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbigkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWNsaXAge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1jbGlwKCR2YWwpO1xuICB9XG5cbiAgLy8gQm94LVNpemluZyBTdXBwb3J0XG4gIEBlbHNlIGlmICRwcm9wID09IGJveC1zaXppbmcge1xuICAgIEBpbmNsdWRlIHN1c3ktYm94LXNpemluZygkdmFsKTtcbiAgfVxuXG4gIC8vIFJlbSBTdXBwb3J0XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cblxuXG4vLyBTdXN5IFN1cHBvcnQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBzdXBwb3J0IG9mIGEgZmVhdHVyZS5cbi8vIC0gJGZlYXR1cmUgICAgICAgOiA8c3RyaW5nPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nIFwicmVtXCIgb3IgXCJib3gtc2l6aW5nXCJcbi8vIC0gJHJlcXVpcmVtZW50cyAgOiA8bWFwPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nICh2YXJpYWJsZTogcmVtLXdpdGgtcHgtZmFsbGJhY2ssIG1peGluOiByZW0pXG4vLyAtICR3YXJuICAgICAgICAgIDogPGJvb2w+XG5AZnVuY3Rpb24gc3VzeS1zdXBwb3J0KFxuICAkZmVhdHVyZSxcbiAgJHJlcXVpcmVtZW50czogKCksXG4gICR3YXJuOiB0cnVlXG4pIHtcbiAgJF9zdXBwb3J0OiBzdXN5LWdldCh1c2UtY3VzdG9tICRmZWF0dXJlKTtcblxuICBAaWYgJF9zdXBwb3J0IHtcbiAgICAkX2ZhaWw6IGZhbHNlO1xuXG4gICAgQGVhY2ggJF90eXBlLCAkX3JlcSBpbiAkcmVxdWlyZW1lbnRzIHtcbiAgICAgIEBlYWNoICRfaSBpbiAkX3JlcSB7XG4gICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcblxuICAgICAgICBAaWYgbm90KCRfcGFzcykge1xuICAgICAgICAgICRfZmFpbDogdHJ1ZTtcbiAgICAgICAgICBAaWYgJHdhcm4ge1xuICAgICAgICAgICAgQHdhcm4gXCJZb3UgcmVxdWVzdGVkIGN1c3RvbSBzdXBwb3J0IG9mICN7JGZlYXR1cmV9LCBidXQgdGhlICN7JF9pfSAjeyRfdHlwZX0gaXMgbm90IGF2YWlsYWJsZS5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3N1cHBvcnQ6IGlmKCRfZmFpbCwgZmFsc2UsICRfc3VwcG9ydCk7XG4gIH1cblxuICBAcmV0dXJuICRfc3VwcG9ydDtcbn1cbiIsIi8vIFN1c3kgUHJlZml4XG4vLyA9PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IHNpbXBsZSBwcmVmaXhlZCBwcm9wZXJ0aWVzLlxuLy8gLSAkcHJvcCAgICAgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgICAgICA6IDxjc3MgdmFsdWU+XG4vLyAtIFskcHJlZml4XSAgOiA8YnJvd3NlciBwcmVmaXggbGlzdD5cbkBtaXhpbiBzdXN5LXByZWZpeChcbiAgJHByb3AsXG4gICR2YWwsXG4gICRwcmVmaXg6IG9mZmljaWFsXG4pIHtcbiAgQGVhY2ggJGZpeCBpbiAkcHJlZml4IHtcbiAgICAkZml4OiBpZigkZml4ID09IG9mZmljaWFsIG9yIG5vdCgkZml4KSwgJHByb3AsICctI3skZml4fS0jeyRwcm9wfScpO1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRmaXgsICR2YWwpO1xuICB9XG59XG4iLCIvLyBCYWNrZ3JvdW5kIFByb3BlcnRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEJhY2tncm91bmQgSW1hZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtaW1hZ2U+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2Vcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtaW1hZ2UsIChtaXhpbjogYmFja2dyb3VuZC1pbWFnZSksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLi4uKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBTaXplXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLXNpemU+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1zaXplKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgkc2l6ZSk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemU7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIE9yaWdpblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtb3JpZ2luPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oXG4gICRvcmlnaW5cbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLW9yaWdpbikpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRvcmlnaW47XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIENsaXBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1jbGlwPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1jbGlwKFxuICAkY2xpcFxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtY2xpcCkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNsaXAoJGNsaXApO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwO1xuICB9XG59XG4iLCIvLyBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09XG5cbi8vIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkbW9kZWw6IDxib3gtc2l6aW5nPlxuQG1peGluIHN1c3ktYm94LXNpemluZyhcbiAgJG1vZGVsOiBjb250ZW50LWJveFxuKSB7XG4gIEBpZiAkbW9kZWwge1xuICAgIEBpZiBzdXN5LXN1cHBvcnQoYm94LXNpemluZywgKG1peGluOiBib3gtc2l6aW5nKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKCRtb2RlbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJlZml4OiAobW96LCB3ZWJraXQsIG9mZmljaWFsKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktcHJlZml4KGJveC1zaXppbmcsICRtb2RlbCwgJHByZWZpeCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBEZWJ1Z2dpbmdcbi8vID09PT09PT09PVxuXG4vLyBTdXN5IEluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8gT3V0cHV0IGFyZ3VtZW50cyBwYXNzZWQgdG8gYSBpbnNwZWN0LlxuLy8gLSAkbWl4aW4gIDogPHN1c3kgbWl4aW4+XG4vLyAtICRpbnNwZWMgICA6IDxtaXhpbiBhcmd1bWVudHM+XG5cbkBtaXhpbiBzdXN5LWluc3BlY3QoXG4gICRtaXhpbixcbiAgJGluc3BlY3Rcbikge1xuICAkc2hvdzogZmFsc2U7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGluc3BlY3Qge1xuICAgIEBpZiBpbmRleCgkaXRlbSwgaW5zcGVjdCkge1xuICAgICAgJHNob3c6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzaG93IG9yIHN1c3ktZ2V0KGRlYnVnIGluc3BlY3QpIHtcbiAgICAtc3VzeS0jeyRtaXhpbn06IGluc3BlY3QoJGluc3BlY3QpO1xuICB9XG59XG4iLCIvLyBPdXRwdXRcbi8vID09PT09PVxuXG4vLyBPdXRwdXRcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IENTUyB3aXRoIHByb3BlciBicm93c2VyIHN1cHBvcnQuXG4vLyAtICRzdHlsZXMgIDogPG1hcCBvZiBjc3MgcHJvcGVydHktdmFsdWUgcGFpcnM+XG5AbWl4aW4gb3V0cHV0KFxuICAkc3R5bGVzXG4pIHtcbiAgQGVhY2ggJHByb3AsICR2YWwgaW4gJHN0eWxlcyB7XG4gICAgQGluY2x1ZGUgc3VzeS1zdXBwb3J0KCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gR3JpZCBCYWNrZ3JvdW5kIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuLy8gLSBTdWItcGl4ZWwgcm91bmRpbmcgY2FuIGxlYWQgdG8gc2V2ZXJhbCBwaXhlbHMgdmFyaWF0aW9uIGJldHdlZW4gYnJvd3NlcnMuXG5cbi8vIEdyaWQgQmFja2dyb3VuZCBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGltYWdlOiBiYWNrZ3JvdW5kLWltYWdlXG4vLyAtICRzaXplOiBiYWNrZ3JvdW5kLXNpemVcbi8vIC0gJGNsaXA6IGJhY2tncm91bmQtY2xpcFxuLy8gLSBbJGZsb3ddOiBsdHIgfCBydGxcbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0IChcbiAgJGltYWdlLFxuICAkc2l6ZTogbnVsbCxcbiAgJGNsaXA6IG51bGwsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2UsXG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZSxcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBmcm9tKCRmbG93KSB0b3AsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBNYXJnaW5zIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gTWFyZ2luIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBtYXJnaW4tb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUGFkZGluZyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIFBhZGRpbmcgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBwYWRkaW5nLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBDb250YWluZXJcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGZsb2F0LWNvbnRhaW5lcihcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gIEBpbmNsdWRlIHN1c3ktY2xlYXJmaXg7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1vdXRwdXQoJHdpZHRoLCAkanVzdGlmeSwgJHByb3BlcnR5KTtcbn1cbiIsIi8vIEZsb2F0IFNwYW4gQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBTcGFuIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHdpZHRoICAgICAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG9hdF0gICAgICAgICAgIDogZnJvbSB8IHRvXG4vLyAtIFskbWFyZ2luLWJlZm9yZV0gICA6IDxsZW5ndGg+XG4vLyAtIFskbWFyZ2luLWFmdGVyXSAgICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1iZWZvcmVdICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1hZnRlcl0gICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gICAgICAgICAgICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LXNwYW4tb3V0cHV0KFxuICAkd2lkdGgsXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbSxcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsLFxuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGwsXG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbCxcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsLFxuICAkZmxvdyAgICAgICAgICAgICA6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvICAgICA6IHRvKCRmbG93KTtcbiAgJGZyb20gICA6IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aDogJHdpZHRoLFxuICAgIGZsb2F0OiBpZigkZmxvYXQgPT0gdG8sICR0bywgbnVsbCkgb3IgaWYoJGZsb2F0ID09IGZyb20sICRmcm9tLCBudWxsKSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkcGFkZGluZy1hZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IElzb2xhdGlvbiBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gSXNvbGF0ZSBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRwdXNoICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBpc29sYXRlLW91dHB1dChcbiAgJHB1c2gsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiAkZnJvbSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRwdXNoLFxuICAgIG1hcmdpbi0jeyR0b306IC0xMDAlLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFN1c3kgU2V0dGluZ3Ncbi8vID09PT09PT09PT09PT1cblxuLy8gU3VzeSBMYW5ndWFnZSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBjZW50ZXIsXG4gIGd1dHRlci1wb3NpdGlvbjogYWZ0ZXIsXG4gIGdsb2JhbC1ib3gtc2l6aW5nOiBjb250ZW50LWJveCxcbiAgZGVidWc6IChcbiAgICBpbWFnZTogaGlkZSxcbiAgICBjb2xvcjogcmdiYSgjNjZmLCAuMjUpLFxuICAgIG91dHB1dDogYmFja2dyb3VuZCxcbiAgICB0b2dnbGU6IHRvcCByaWdodCxcbiAgKSxcbikpO1xuXG5cbi8vIFZhbGlkIEtleXdvcmQgVmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFOiBET05UJ1QgVE9VQ0hcbiRzdXN5LWtleXdvcmRzOiAoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogc3RhdGljIGZsdWlkLFxuICBvdXRwdXQ6IGlzb2xhdGUgZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogbGVmdCBjZW50ZXIgcmlnaHQsXG4gIGZsb3c6IGx0ciBydGwsXG4gIGd1dHRlci1wb3NpdGlvbjogYmVmb3JlIGFmdGVyIHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljLFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94IGNvbnRlbnQtYm94LFxuICBzcGFuOiBmdWxsLFxuICBlZGdlOiBmaXJzdCBhbHBoYSBsYXN0IG9tZWdhIGZ1bGwsXG4gIHNwcmVhZDogbmFycm93IHdpZGUgd2lkZXIsXG4gIGd1dHRlci1vdmVycmlkZTogbm8tZ3V0dGVycyBuby1ndXR0ZXIsXG4gIHJvbGU6IG5lc3QsXG4gIGNsZWFyOiBicmVhayBub2JyZWFrLFxuICBkZWJ1ZyBpbWFnZTogc2hvdyBoaWRlIHNob3ctY29sdW1ucyBzaG93LWJhc2VsaW5lLFxuICBkZWJ1ZyBvdXRwdXQ6IGJhY2tncm91bmQgb3ZlcmxheSxcbik7XG5cblxuLy8gUGFyc2UgU3VzeSBLZXl3b3JkcyBhbmQgTWFwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNldHRpbmdzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gc3RyaW5nc1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IHN0cmluZyB7XG4gICAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkc3VzeS1rZXl3b3JkcyB7XG4gICAgICAgICAgQGlmIGluZGV4KCR2YWx1ZSwgJGl0ZW0pIHtcbiAgICAgICAgICAgICRfa2V5LXZhbHVlOiBhcHBlbmQoJGtleSwgJGl0ZW0pO1xuICAgICAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtc2V0KCRfcmV0dXJuLCAkX2tleS12YWx1ZS4uLik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAvLyBtYXBzXG4gICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IG1hcCB7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIENvbHVtbnMgJiBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWxheW91dChcbiAgJHNob3J0XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuICAkX2NvbHVtbnM6ICgpO1xuICAkX2d1dHRlcnM6IG51bGw7XG5cbiAgQGlmIG5vdCh1bml0bGVzcyhudGgobnRoKCRzaG9ydCwgMSksIDEpKSkge1xuICAgICRfZ3V0dGVyczogbnRoKCRzaG9ydCwgMSk7XG4gIH0gQGVsc2Uge1xuICAgICRfY29sdW1uczogKGNvbHVtbnM6IG50aCgkc2hvcnQsIDEpKTtcbiAgICAkX2d1dHRlcnM6IGlmKGxlbmd0aCgkc2hvcnQpID4gMSwgbnRoKCRzaG9ydCwgMiksICRfZ3V0dGVycyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkX2d1dHRlcnMpID09IGxpc3QgYW5kIGxlbmd0aCgkX2d1dHRlcnMpID4gMCB7XG4gICAgJF9ndXR0ZXJzOiAoXG4gICAgICBndXR0ZXJzOiBudGgoJF9ndXR0ZXJzLCAyKSAvIG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICAgY29sdW1uLXdpZHRoOiBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlcnM6IGlmKCRfZ3V0dGVycywgKGd1dHRlcnM6ICRfZ3V0dGVycyksICgpKTtcbiAgfVxuXG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfY29sdW1ucyk7XG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfZ3V0dGVycyk7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHcmlkL0NvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWdyaWQoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogcGFyc2Utc2V0dGluZ3MoJHNob3J0KTtcbiAgJF9sYXlvdXQ6ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gbnVtYmVyIG9yIGxpc3RcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IG9yIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICAgJF9sYXlvdXQ6IGFwcGVuZCgkX2xheW91dCwgJGl0ZW0pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY29udGFpbmVyOiAkaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9sYXlvdXQ6IGlmKGxlbmd0aCgkX2xheW91dCkgPiAwLCBwYXJzZS1sYXlvdXQoJF9sYXlvdXQpLCAkX2xheW91dCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkX3JldHVybiwgJF9sYXlvdXQpO1xufVxuXG5cbi8vIFBhcnNlIFNwYW5cbi8vIC0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zcGFuKFxuICAkc2hvcnQsXG4gICRrZXk6IHNwYW5cbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgICRfYXQ6IGluZGV4KCRzaG9ydCwgYXQpO1xuXG4gICAgQGlmICRfYXQge1xuICAgICAgJF9sb2NpOiAkX2F0ICsgMTtcbiAgICAgICRfbG9jYXRpb246IG50aCgkc2hvcnQsICRfbG9jaSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAobG9jYXRpb246ICRfbG9jYXRpb24pKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfYXQsIG51bGwpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9sb2NpLCBudWxsKTtcbiAgICB9XG5cbiAgICAkX2k6IDE7XG4gICAgJF9zcGFuOiAoKTtcblxuICAgIEB3aGlsZSAkX2kgPD0gbGVuZ3RoKCRzaG9ydCkge1xuICAgICAgJF90aGlzOiBudGgoJHNob3J0LCAkX2kpO1xuXG4gICAgICBAaWYgdHlwZS1vZigkX3RoaXMpID09IG51bWJlciB7XG4gICAgICAgICRfc3BhbjogYXBwZW5kKCRfc3BhbiwgJF90aGlzKTtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgIH0gQGVsc2UgaWYgJF90aGlzID09IG9mIHtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgICAgJF9pOiBsZW5ndGgoJHNob3J0KSArIDE7XG4gICAgICB9XG5cbiAgICAgICRfaTogJF9pICsgMTtcbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCRfc3BhbikgPiAwIHtcbiAgICAgICRfc3BhbjogaWYobGVuZ3RoKCRfc3BhbikgPT0gMSwgbnRoKCRfc3BhbiwgMSksICRfc3Bhbik7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJGtleTogJF9zcGFuKSk7XG4gICAgfVxuXG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgcGFyc2UtZ3JpZCgkc2hvcnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWd1dHRlcnMoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX2d1dHRlcnM6IHBhcnNlLXNwYW4oJHNob3J0LCBndXR0ZXItb3ZlcnJpZGUpO1xuICAkX3NwYW46IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJF9ndXR0ZXJzKTtcblxuICBAaWYgJF9zcGFuIGFuZCBub3QobWFwLWdldCgkX2d1dHRlcnMsIGNvbHVtbnMpKSB7XG4gICAgJF9jb250ZXh0OiAoKTtcbiAgICAkX25ldzogKCk7XG5cbiAgICBAZWFjaCAkaXRlbSBpbiAkX3NwYW4ge1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgJF9jb250ZXh0OiBhcHBlbmQoJF9jb250ZXh0LCAkaXRlbSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJF9uZXc6IGFwcGVuZCgkX25ldywgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICRfY29udGV4dDogcGFyc2UtZ3JpZCgkX2NvbnRleHQpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDAsIG51bGwsICRfbmV3KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAxLCBudGgoJF9uZXcsIDEpLCAkX25ldyk7XG4gICAgJF9uZXc6IChndXR0ZXItb3ZlcnJpZGU6IGlmKCRfbmV3ICE9ICRfc3BhbiwgJF9uZXcsICRfc3BhbikpO1xuXG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX25ldyk7XG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX2NvbnRleHQpO1xuICB9XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG4iLCIvLyBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09XG5cblxuLy8gVmFsaWRhdGUgQ29sdW1uIE1hdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1uLW1hdGgoXG4gICRtYXRoLFxuICAkY29sdW1uLXdpZHRoXG4pIHtcbiAgQGlmICRtYXRoID09IHN0YXRpYyBhbmQgbm90KCRjb2x1bW4td2lkdGgpIHtcbiAgICBAZXJyb3IgJ1N0YXRpYyBtYXRoIHJlcXVpcmVzIGEgdmFsaWQgY29sdW1uLXdpZHRoIHNldHRpbmcuJztcbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi13aWR0aDtcbn1cbiIsIi8vIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBTZXQgYSBuZXcgbGF5b3V0IHVzaW5nIGEgc2hvcnRoYW5kXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXlvdXQsICRpbnNwZWN0KTtcbn1cblxuXG4vLyBVc2UgR3JpZFxuLy8gLS0tLS0tLS1cbi8vIFVzZSBhbiBhcmJpdHJhcnkgbGF5b3V0IGZvciBhIHNlY3Rpb24gb2YgY29kZVxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIHdpdGgtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJG9sZCAgICAgIDogJHN1c3k7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qod2l0aC1sYXlvdXQsICRpbnNwZWN0KTtcblxuICBAY29udGVudDtcblxuICAkc3VzeTogJG9sZCAhZ2xvYmFsO1xufVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gYSBwYXJzZWQgbGF5b3V0IG1hcCBiYXNlZCBvbiBzaG9ydGhhbmQgc3ludGF4XG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBsYXlvdXQoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgQHJldHVybiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xufVxuXG5cbi8vIEdldCBMYXlvdXRcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIG5ldyBsYXlvdXQgYmFzZWQgb24gY3VycmVudCBhbmQgZ2l2ZW4gc2V0dGluZ3Ncbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBmdW5jdGlvbiBfZ2V0LWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRsYXlvdXQ6IGxheW91dCgkbGF5b3V0KTtcbiAgQHJldHVybiBpZigkY2xlYW4sICRsYXlvdXQsIF9zdXN5LWRlZXAtbWVyZ2UoJHN1c3ksICRsYXlvdXQpKTtcbn1cbiIsIi8vIFN1c3kgQm94IFNpemluZ1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBib3ggbW9kZWwgZ2xvYmFsbHkgb24gYWxsIGVsZW1lbnRzLlxuLy8gLSBbJGJveF06IGJvcmRlci1ib3ggfCBjb250ZW50LWJveFxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBnbG9iYWwtYm94LXNpemluZyhcbiAgJGJveDogc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpLFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdDogJGJveDtcblxuICBAaWYgJGluaGVyaXQge1xuICAgIEBhdC1yb290IHtcbiAgICAgICBodG1sIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgICAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cbiAgICAgfVxuICB9IEBlbHNlIHtcbiAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2xvYmFsLWJveC1zaXppbmcsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgdXBkYXRlLWJveC1tb2RlbCgkYm94KTtcbn1cblxuLy8gQm9yZGVyIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBIGxlZ2FjeSBzaG9ydGN1dC4uLlxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBib3JkZXItYm94LXNpemluZyhcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCwgJGluaGVyaXQpO1xufVxuXG4vLyBVcGRhdGUgQm94IE1vZGVsXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBVcGRhdGVzIGdsb2JhbCBib3ggbW9kZWwgc2V0dGluZ1xuQG1peGluIHVwZGF0ZS1ib3gtbW9kZWwoXG4gICRib3hcbikge1xuICBAaWYgJGJveCAhPSBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykge1xuICBAaW5jbHVkZSBzdXN5LXNldChnbG9iYWwtYm94LXNpemluZywgJGJveCk7XG4gIH1cbn1cbiIsIi8vIENvbnRleHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBOZXN0ZWQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBncmlkIGZvciBuZXN0ZWQgY29udGV4dC5cbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuQGZ1bmN0aW9uIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkY29udGV4dCAgICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkc3BhbiAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRjb250ZXh0KTtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGNvbnRleHQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcblxuICBAcmV0dXJuIHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xufVxuXG4vLyBOZXN0ZWQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFVzZSBhIHN1YnNldCBncmlkIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbi8vIC0gQGNvbnRlbnQgICA6IDxjb250ZW50PlxuQG1peGluIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRvbGQgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpO1xuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiBuZXN0ZWQoJGNvbnRleHQpKSkgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobmVzdGVkLCAkaW5zcGVjdCk7XG4gIEBjb250ZW50O1xuXG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6ICRvbGQpKSAhZ2xvYmFsO1xufVxuIiwiLy8gQmFja2dyb3VuZCBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IGZhbHNlO1xuXG5cbi8vIFNob3cgR3JpZC9zXG4vLyAtLS0tLS0tLS0tLVxuLy8gU2hvdyBncmlkIG9uIGFueSBlbGVtZW50IHVzaW5nIGVpdGhlciBiYWNrZ3JvdW5kIG9yIG92ZXJsYXkuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIHNob3ctZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3Q6ICRncmlkO1xuICAkX291dHB1dDogZGVidWctZ2V0KG91dHB1dCwgJGdyaWQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzaG93LWdyaWQsICRpbnNwZWN0KTtcbiAgQGlmICRfb3V0cHV0ID09IG92ZXJsYXkgYW5kIHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCkgIT0gaGlkZSB7XG4gICAgQGluY2x1ZGUgb3ZlcmxheS1ncmlkKCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvdy1ncmlkcyhcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRncmlkKTtcbn1cblxuLy8gQmFja2dyb3VuZCBHcmlkXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNob3cgYSBncmlkIGJhY2tncm91bmQgb24gYW55IGVsZW1lbnQuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIGJhY2tncm91bmQtZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGdyaWQ7XG4gICRfb3V0cHV0ICA6IGdldC1iYWNrZ3JvdW5kKCRncmlkKTtcblxuICBAaWYgbGVuZ3RoKCRfb3V0cHV0KSA+IDAge1xuICAgICRfZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpO1xuXG4gICAgJF9pbWFnZTogKCk7XG4gICAgQGVhY2ggJG5hbWUsICRsYXllciBpbiBtYXAtZ2V0KCRfb3V0cHV0LCBpbWFnZSkge1xuICAgICAgJF9kaXJlY3Rpb246IGlmKCRuYW1lID09IGJhc2VsaW5lLCB0byBib3R0b20sIHRvIHRvKCRfZmxvdykpO1xuICAgICAgJF9pbWFnZTogYXBwZW5kKCRfaW1hZ2UsIGxpbmVhci1ncmFkaWVudCgkX2RpcmVjdGlvbiwgJGxheWVyKSwgY29tbWEpO1xuICAgIH1cbiAgICAkX291dHB1dDogbWFwLW1lcmdlKCRfb3V0cHV0LCAoaW1hZ2U6ICRfaW1hZ2UpKTtcblxuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICAgIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChiYWNrZ3JvdW5kLWdyaWQsICRpbnNwZWN0KTtcbiAgfVxufVxuXG5cbi8vIE92ZXJsYXkgR3JpZFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBHZW5lcmF0ZSBhbiBpY29uIHRvIHRyaWdnZXIgZ3JpZC1vdmVybGF5cyBvbiBhbnkgZ2l2ZW4gZWxlbWVudHMuXG4vLyAkZ3JpZHMuLi4gIDogPHNlbGVjdG9yPiBbPHNldHRpbmdzPl0gWywgPHNlbGVjdG9yPl0qXG5AbWl4aW4gb3ZlcmxheS1ncmlkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGlmIG5vdCgkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHMpIHtcbiAgICBAYXQtcm9vdCBoZWFkIHsgQGluY2x1ZGUgb3ZlcmxheS1oZWFkKCRncmlkKTsgfVxuICAgIEBhdC1yb290IGhlYWQ6YmVmb3JlIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpob3ZlciB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlci1ob3ZlcjsgfVxuICAgICRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgaGVhZDpob3ZlciB+ICYsXG4gIGhlYWQ6aG92ZXIgfiBib2R5ICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLW92ZXJsYXktYmFzZTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlciB7XG4gIGNvbnRlbnQ6IFwifHx8XCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udDoge1xuICAgIGZhbWlseTogc2Fucy1zZXJpZjtcbiAgICBzaXplOiAxNnB4O1xuICAgIHdlaWdodDogYm9sZDtcbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXIgSG92ZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXItaG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuNSk7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgSGVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGhlYWQ+IHN0eWxlcyB0byBjcmVhdGUgZ3JpZCBvdmVybGF5IHRvZ2dsZVxuQG1peGluIG92ZXJsYXktaGVhZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRfdG9nZ2xlOiBkZWJ1Zy1nZXQodG9nZ2xlLCAkZ3JpZCk7XG4gICRfaG9yejogbnVsbDtcbiAgJF92ZXJ0OiBudWxsO1xuXG4gIEBlYWNoICRzaWRlIGluICRfdG9nZ2xlIHtcbiAgICAkX2hvcno6IGlmKCRzaWRlID09IGxlZnQgb3IgJHNpZGUgPT0gcmlnaHQsICRzaWRlLCAkX2hvcnopO1xuICAgICRfdmVydDogaWYoJHNpZGUgPT0gdG9wIG9yICRzaWRlID09IGJvdHRvbSwgJHNpZGUsICRfdmVydCk7XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICAjeyRfaG9yen06IDEwcHg7XG4gICN7JF92ZXJ0fTogMTBweDtcbiAgei1pbmRleDogOTk5O1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjI1KTtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gR3JpZCBPdmVybGF5IEJhc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmFzZSBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIG92ZXJsYXlcbkBtaXhpbiBncmlkLW92ZXJsYXktYmFzZSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICB6LWluZGV4OiA5OTg7XG59XG5cblxuLy8gR2V0IFN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLXN5bShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgICAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9ndXR0ZXJzICAgICAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGdyaWQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRncmlkKTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGdyaWQpO1xuXG4gICRfY29sb3IgICAgICAgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfdHJhbnMgICAgICAgICA6IHRyYW5zcGFyZW50O1xuICAkX2xpZ2h0ICAgICAgICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG5cbiAgJF9lbmQgICAgICAgICAgIDogMSArICRfZ3V0dGVycztcbiAgJF9hZnRlciAgICAgICAgIDogcGVyY2VudGFnZSgxLyRfZW5kKTtcbiAgJF9zdG9wcyAgICAgICAgIDogKCk7XG4gICRfc2l6ZSAgICAgICAgICA6IHNwYW4oMSAkZ3JpZCB3aWRlKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodDtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3BsaXQ6ICRfZ3V0dGVycy8yO1xuICAgICRfYmVmb3JlOiBwZXJjZW50YWdlKCRfc3BsaXQvJF9lbmQpO1xuICAgICRfYWZ0ZXI6IHBlcmNlbnRhZ2UoKDEgKyAkX3NwbGl0KS8kX2VuZCk7XG4gICAgJF9zdG9wczogJF90cmFucyAkX2JlZm9yZSwgJF9jb2xvciAkX2JlZm9yZSwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9XG5cbiAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICRfc2l6ZTogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkgKiAkX2VuZDtcbiAgfVxuXG4gICRfb3V0cHV0OiAoXG4gICAgaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSxcbiAgICBzaXplOiAkX3NpemUsXG4gICk7XG5cbiAgQHJldHVybiAkX291dHB1dDtcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEluc2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1pbnNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgU3BsaXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1zcGxpdChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRzdGFydCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuXG4gICAgJF9lbmQ6ICRzdGFydCArIHNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRfZW5kLCBjb21tYSk7XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIE91dHNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLW91dHNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfdHJhbnMgICA6IHRyYW5zcGFyZW50O1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGd1dHRlcjogZ2V0LXNwYW4td2lkdGgoZmlyc3QgJGxvY2F0aW9uICRncmlkKTtcblxuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuXG4gICAgICAkZ3V0dGVyOiAkX2xpZ2h0ICRndXR0ZXIsICRfdHJhbnMgJGd1dHRlciwgJF90cmFucyAkX2VuZDtcbiAgICAgICR0aGlzLXN0b3A6IGpvaW4oJHRoaXMtc3RvcCwgJGd1dHRlciwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtYXN5bShcbiAgJGdyaWRcbikge1xuICAkX3N0b3BzOiAoKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0taW5zaWRlKCRncmlkKTtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLXNwbGl0KCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tb3V0c2lkZSgkZ3JpZCk7XG4gIH1cblxuICBAcmV0dXJuIChpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpKTtcbn1cblxuXG4vLyBHZXQgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9zaG93ICAgIDogc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKTtcbiAgJF9yZXR1cm4gIDogKCk7XG5cbiAgQGlmICRfc2hvdyBhbmQgJF9zaG93ICE9ICdoaWRlJyB7XG4gICAgJF9jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICAkX3N5bTogaXMtc3ltbWV0cmljYWwoJF9jb2x1bW5zKTtcbiAgICAgICRfcmV0dXJuOiBpZigkX3N5bSwgZ2V0LWJhY2tncm91bmQtc3ltKCRncmlkKSwgZ2V0LWJhY2tncm91bmQtYXN5bSgkZ3JpZCkpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGNvbnRlbnQtYm94KSk7XG4gICAgfVxuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1jb2x1bW5zJ1xuICAgICAgYW5kIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoYmFzZS1saW5lLWhlaWdodClcbiAgICAgIGFuZCB0eXBlLW9mKCRiYXNlLWxpbmUtaGVpZ2h0KSA9PSAnbnVtYmVyJ1xuICAgICAgYW5kIG5vdCB1bml0bGVzcygkYmFzZS1saW5lLWhlaWdodCkge1xuICAgICAgJF9jb2xvcjogdmFyaWFibGUtZXhpc3RzKCdncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3InKTtcbiAgICAgICRfY29sb3I6IGlmKCRfY29sb3IsICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICMwMDApO1xuXG4gICAgICAkX2ltYWdlOiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSk7XG4gICAgICAkX3NpemU6IG1hcC1nZXQoJF9yZXR1cm4sIHNpemUpO1xuICAgICAgJF9iYXNlbGluZTogKGJhc2VsaW5lOiAoJF9jb2xvciAxcHgsIHRyYW5zcGFyZW50IDFweCkpO1xuICAgICAgJF9iYXNlbGluZS1zaXplOiAxMDAlICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoXG4gICAgICAgIGltYWdlOiBpZigkX2ltYWdlLCBtYXAtbWVyZ2UoJF9pbWFnZSwgJF9iYXNlbGluZSksICRfYmFzZWxpbmUpLFxuICAgICAgICBzaXplOiBpZigkX3NpemUsICgkX3NpemUsICRfYmFzZWxpbmUtc2l6ZSksICRfYmFzZWxpbmUtc2l6ZSksXG4gICAgICApKTtcblxuICAgICAgQGlmICRfc2hvdyA9PSAnc2hvdycge1xuICAgICAgICAkX2NsaXA6IG1hcC1nZXQoJF9yZXR1cm4sIGNsaXApO1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogam9pbigkX2NsaXAsIGJvcmRlci1ib3gsIGNvbW1hKSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJF9zaG93ID09ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICBAd2FybiAnUGxlYXNlIHByb3ZpZGUgYSAkYmFzZS1saW5lLWhlaWdodCB3aXRoIHRoZSBkZXNpcmVkIGhlaWdodCBhbmQgdW5pdHMnO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSkge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChmbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gR2V0IERlYnVnXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgdmFsdWUgb2YgYSBkZWJ1ZyBzZXR0aW5nXG4vLyAtICRrZXk6IDxzZXR0aW5nPlxuQGZ1bmN0aW9uIGRlYnVnLWdldChcbiAgJGtleSxcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGtleTogam9pbihkZWJ1ZywgJGtleSwgc3BhY2UpO1xuICBAcmV0dXJuIHN1c3ktZ2V0KCRrZXksICRncmlkKTtcbn1cbiIsIi8vIENvbnRhaW5lciBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBjb250YWluZXIgZWxlbWVudFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQG1peGluIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgICA6ICRsYXlvdXQ7XG4gICRsYXlvdXQgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcblxuICAkX3dpZHRoICAgICA6IGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG4gICRfanVzdGlmeSAgIDogcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKHN1c3ktZ2V0KGNvbnRhaW5lci1wb3NpdGlvbiwgJGxheW91dCkpO1xuICAkX3Byb3BlcnR5ICA6IGlmKHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpID09IHN0YXRpYywgd2lkdGgsIG1heC13aWR0aCk7XG5cbiAgJF9ib3ggICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkbGF5b3V0KTtcblxuICBAaWYgJF9ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJF9ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChjb250YWluZXIsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgZmxvYXQtY29udGFpbmVyKCRfd2lkdGgsICRfanVzdGlmeSwgJF9wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0KTtcbn1cblxuLy8gQ29udGFpbmVyIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gIEByZXR1cm4gZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbn1cblxuLy8gR2V0IENvbnRhaW5lciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIHRoZSBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWNvbnRhaW5lci13aWR0aChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0ICAgICAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX3dpZHRoICAgICAgICAgOiBzdXN5LWdldChjb250YWluZXIsICRsYXlvdXQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRsYXlvdXQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkbGF5b3V0KTtcblxuICBAaWYgbm90KCRfd2lkdGgpIG9yICRfd2lkdGggPT0gYXV0byB7XG4gICAgQGlmIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpIHtcbiAgICAgICRfY29sdW1ucyAgIDogc3VzeS1nZXQoY29sdW1ucywgJGxheW91dCk7XG4gICAgICAkX2d1dHRlcnMgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRsYXlvdXQpO1xuICAgICAgJF9zcHJlYWQgICAgOiBpZihpcy1zcGxpdCgkbGF5b3V0KSwgd2lkZSwgbmFycm93KTtcbiAgICAgICRfd2lkdGggICAgIDogc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSAqICRfY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF93aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfd2lkdGg7XG59XG5cbi8vIFBhcnNlIENvbnRhaW5lciBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZSB0aGUgJGNvbnRhaW5lci1wb3NpdGlvbiBpbnRvIG1hcmdpbiB2YWx1ZXMuXG4vLyAtIFskanVzdGlmeV0gICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IDxsZW5ndGg+IFs8bGVuZ3RoPl1cbkBmdW5jdGlvbiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oXG4gICRqdXN0aWZ5OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBjb250YWluZXItcG9zaXRpb24pXG4pIHtcbiAgJF9yZXR1cm46IGlmKCRqdXN0aWZ5ID09IGxlZnQsIDAsIGF1dG8pIGlmKCRqdXN0aWZ5ID09IHJpZ2h0LCAwLCBhdXRvKTtcblxuICBAaWYgbm90KGluZGV4KGxlZnQgcmlnaHQgY2VudGVyLCAkanVzdGlmeSkpIHtcbiAgICAkX3JldHVybjogbnRoKCRqdXN0aWZ5LCAxKTtcbiAgICAkX3JldHVybjogJF9yZXR1cm4gaWYobGVuZ3RoKCRqdXN0aWZ5KSA+IDEsIG50aCgkanVzdGlmeSwgMiksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIElzb2xhdGlvbiBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuXG4vLyBJc29sYXRlIFtNaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGlzb2xhdGlvbiBhcyBhbiBvdmVycmlkZS5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBtaXhpbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpbnNwZWN0OiAkaXNvbGF0ZTtcblxuICAkb3V0cHV0OiAoXG4gICAgcHVzaDogaXNvbGF0ZSgkaXNvbGF0ZSksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGlzb2xhdGUpLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChpc29sYXRlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGlzb2xhdGUtb3V0cHV0KCRvdXRwdXQuLi4pO1xufVxuXG5cbi8vIElzb2xhdGUgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYW4gaXNvbGF0aW9uIG9mZnNldCB3aWR0aC5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBmdW5jdGlvbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpc29sYXRlOiBwYXJzZS1zcGFuKCRpc29sYXRlKTtcbiAgJGlzb2xhdGlvbjogc3VzeS1nZXQoc3BhbiwgJGlzb2xhdGUpO1xuXG4gIEBpZiAkaXNvbGF0aW9uIGFuZCBub3QoZ2V0LWxvY2F0aW9uKCRpc29sYXRlKSkge1xuICAgICRuZXc6IChcbiAgICAgIHNwYW46IG51bGwsXG4gICAgICBsb2NhdGlvbjogJGlzb2xhdGlvbixcbiAgICApO1xuICAgICRpc29sYXRlOiBtYXAtbWVyZ2UoJGlzb2xhdGUsICRuZXcpO1xuICB9XG5cbiAgQHJldHVybiBnZXQtaXNvbGF0aW9uKCRpc29sYXRlKTtcbn1cblxuXG4vLyBHZXQgSXNvbGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGhcbi8vIC0gJGlucHV0OiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1pc29sYXRpb24oXG4gICRpbnB1dFxuKSB7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRpbnB1dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGlucHV0KTtcbiAgJHdpZHRoICAgICAgOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyIGFuZCBub3QodW5pdGxlc3MoJGxvY2F0aW9uKSkge1xuICAgICR3aWR0aDogJGxvY2F0aW9uO1xuICB9IEBlbHNlIGlmICRsb2NhdGlvbiB7XG4gICAgJHB1c2g6ICRsb2NhdGlvbiAtIDE7XG4gICAgQGlmICRwdXNoID4gMCB7XG4gICAgICAkcHVzaDogbWFwLW1lcmdlKCRpbnB1dCwgKFxuICAgICAgICBzcGFuOiAkcHVzaCxcbiAgICAgICAgbG9jYXRpb246IDEsXG4gICAgICAgIHNwcmVhZDogd2lkZSxcbiAgICAgICkpO1xuICAgICAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkcHVzaCk7XG4gICAgfVxuICB9XG5cbiAgQGlmIHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGlucHV0KSA9PSBzcGxpdFxuICAgICAgYW5kIHN1c3ktZ2V0KGd1dHRlcnMsICRpbnB1dCkgPiAwIHtcbiAgICAkd2lkdGg6IGlmKCR3aWR0aCA9PSBudWxsLCBndXR0ZXJzKCRpbnB1dCksICR3aWR0aCArIGd1dHRlcnMoJGlucHV0KSk7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aCBvciAwO1xufVxuIiwiLy8gR2FsbGVyeSBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIEdhbGxlcnlcbi8vIC0tLS0tLS1cbi8vIENyZWF0ZSBhbiBpc29sYXRlZCBnYWxsZXJ5XG4vLyAtICRzcGFuICAgICAgICA6IDxzcGFuPlxuLy8gLSBbJHNlbGVjdG9yXSAgOiBjaGlsZCB8IG9mLXR5cGVcbkBtaXhpbiBnYWxsZXJ5KFxuICAkc3BhbixcbiAgJHNlbGVjdG9yOiBjaGlsZFxuKSB7XG4gICRpbnNwZWN0ICAgIDogJHNwYW47XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRzcGFuICAgICAgIDogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246IDEpKTtcblxuICAkbiAgICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkY29udGV4dCAgICAgIDogc3VzeS1jb3VudCgkY29sdW1ucyk7XG4gICRmbG93ICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG5cbiAgJGluc2lkZSAgICAgICA6IGlzLWluc2lkZSgkc3Bhbik7XG4gICRmcm9tICAgICAgICAgOiBmcm9tKCRmbG93KTtcbiAgJGxpbmUgICAgICAgICA6IGZsb29yKCRjb250ZXh0IC8gJG4pO1xuICAkc3ltbWV0cmljYWwgIDogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aCAgICAgICAgICAgICA6IG51bGwsXG4gICAgZmxvYXQgICAgICAgICAgICAgOiBmcm9tLFxuICAgIG1hcmdpbi1iZWZvcmUgICAgIDogbnVsbCxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IG51bGwsXG4gICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICApO1xuXG4gIEBpZiAkaW5zaWRlIHtcbiAgICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAoXG4gICAgICBwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKSxcbiAgICAgIHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKSxcbiAgICApKTtcbiAgfVxuXG4gIEBpZiAkc3ltbWV0cmljYWwge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAod2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKSkpO1xuICB9XG5cbiAgJGJveCAgICAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGdsb2JhbC1ib3ggICA6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSA9PSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2FsbGVyeSwgJGluc3BlY3QpO1xuXG4gIC8vIENvbGxlY3RpdmUgT3V0cHV0XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggb3IgKCRpbnNpZGUgYW5kIG5vdCgkYm94KSBhbmQgbm90KCRnbG9iYWwtYm94KSkge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogYm9yZGVyLWJveCkpO1xuICB9IEBlbHNlIGlmICRib3ggPT0gY29udGVudC1ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogY29udGVudC1ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIC8vIEluZGl2aWR1YWwgTG9vcFxuICBAZm9yICRpdGVtIGZyb20gMSB0aHJvdWdoICRsaW5lIHtcbiAgICAkbnRoOiAnI3skbGluZX1uICsgI3skaXRlbX0nO1xuICAgICY6bnRoLSN7JHNlbGVjdG9yfSgjeyRudGh9KSB7XG4gICAgICAvLyBJbmRpdmlkdWFsIFByZXBcbiAgICAgICRvdXRwdXQ6IChcbiAgICAgICAgd2lkdGggICAgICAgICAgICAgOiBpZigkc3ltbWV0cmljYWwsIG51bGwsIGdldC1zcGFuLXdpZHRoKCRzcGFuKSksXG4gICAgICAgIGZsb2F0ICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgbWFyZ2luLWJlZm9yZSAgICAgOiBnZXQtaXNvbGF0aW9uKCRzcGFuKSxcbiAgICAgICAgbWFyZ2luLWFmdGVyICAgICAgOiAtMTAwJSxcbiAgICAgICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgICAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICAgICApO1xuXG4gICAgICAvLyBJbmRpdmlkdWFsIE91dHB1dFxuICAgICAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgICAgIEBpZiBnZXQtZWRnZSgkc3BhbikgPT0gZmlyc3Qge1xuICAgICAgICBAaW5jbHVkZSBicmVhaztcbiAgICAgICAgQGluY2x1ZGUgZmlyc3QoJHNwYW4pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgTG9jYXRpb24gSW5jcmVtZW50XG4gICAgICAkbG9jYXRpb246IGdldC1sb2NhdGlvbigkc3BhbikgKyAkbjtcbiAgICAgICRsb2NhdGlvbjogaWYoJGxvY2F0aW9uID4gJGNvbnRleHQsIDEsICRsb2NhdGlvbik7XG4gICAgICAkc3BhbjogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246ICRsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZ3V0dGVyIDogZ3V0dGVyKCRzcGFuKTtcbiAgJHNwYW4gICA6IHNwYW4oJHNwYW4pO1xuICAkd2lkdGggIDogaWYoJHNwbGl0IGFuZCAkZ3V0dGVyLCAkc3BhbiArICRndXR0ZXIsICRzcGFuKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNxdWlzaCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmUoJHByZSk7XG4gIEBpbmNsdWRlIHBvc3QoJHBvc3QpO1xufVxuIiwiLy8gUGFkZGluZyBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmVmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFN1ZmZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzdWZmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHN1ZmZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUGFkXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBwYWQoXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocGFkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZWZpeCgkcHJlKTtcbiAgQGluY2x1ZGUgc3VmZml4KCRwb3N0KTtcblxufVxuIiwiLy8gQmxlZWQgU3ludGF4XG4vLyA9PT09PT09PT09PT1cblxuLy8gQmxlZWRcbi8vIC0tLS0tXG4vLyBBZGQgbmVnYXRpdmUgbWFyZ2lucywgYW5kIGVxdWFsIHBvc2l0aXZlIHBhZGRpbmcgdG8gY3JlYXRlIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQoXG4gICRibGVlZDogMCBndXR0ZXIoKVxuKSB7XG4gICRpbnNwZWN0ICA6ICRibGVlZDtcbiAgJG91dHB1dCAgIDogZ2V0LWJsZWVkKCRibGVlZCk7XG5cbiAgQGlmIHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSBjb250ZW50LWJveCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKChib3gtc2l6aW5nOiBjb250ZW50LWJveCksICRvdXRwdXQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJsZWVkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuXG4vLyBCbGVlZC14XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgaG9yaXpvbnRhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXgoXG4gICRibGVlZDogZ3V0dGVyKClcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAyKSAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXggb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEJsZWVkLXlcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciB2ZXJ0aWNhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXkoXG4gICRibGVlZDogaWYoZnVuY3Rpb24tZXhpc3RzKHJoeXRobSksIHJoeXRobSgxKSwgMWVtKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwIG50aCgkdHJibCwgMikgMCkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteSBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gR2V0IEJsZWVkXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBibGVlZCBvdXRwdXQgdmFsdWVzXG4vLyAtICRibGVlZDogPHNwYW4+XG5AZnVuY3Rpb24gZ2V0LWJsZWVkKFxuICAkYmxlZWRcbikge1xuICAkYmxlZWQgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJGJsZWVkKSk7XG4gICR0cmJsICAgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG4gICRzaG9ydCAgICA6IG51bGw7XG4gICRvdXRwdXQgICA6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR0cmJsKSB7XG4gICAgJHRoaXM6IG50aCgkdHJibCwgJGkpO1xuICAgICRuZXc6ICgpO1xuICAgICRtYXJnaW46IG51bGw7XG4gICAgJHBhZGRpbmc6IG51bGw7XG4gICAgJHBhZGRpbmcteDogbnVsbDtcblxuICAgIEBpZiAkdGhpcyA+IDAge1xuICAgICAgJHRoaXM6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAkdGhpcykpO1xuICAgICAgJG1hcmdpbjogc3BhbigkdGhpcyk7XG4gICAgICAkcGFkZGluZzogJG1hcmdpbjtcbiAgICAgICRwYWRkaW5nLXg6ICRwYWRkaW5nO1xuICAgIH1cblxuICAgIEBpZiAkbWFyZ2luIGFuZCAkbWFyZ2luID4gMCB7XG4gICAgICAkbWFyZ2luOiAtICRtYXJnaW47XG5cbiAgICAgIEBpZiBpcy1pbnNpZGUoJHRoaXMpIHtcbiAgICAgICAgJGd1dHRlcjogZ3V0dGVyKCR0aGlzKTtcbiAgICAgICAgJGpvaW46IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHBhZGRpbmcsICRndXR0ZXIpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICRwYWRkaW5nLXg6IGlmKCRqb2luIGFuZCAkcGFkZGluZyA+IDAsICRwYWRkaW5nICsgJGd1dHRlciwgJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAyIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDMge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gNCB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAkbmV3KTtcbiAgfVxuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG91dHB1dCB7XG4gICAgJG91dHB1dDogaWYoJHZhbHVlID09IDAsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJHByb3A6IG51bGwpKSwgJG91dHB1dCk7XG4gIH1cblxuICBAcmV0dXJuIGJsZWVkLXNob3J0aGFuZCgkb3V0cHV0KTtcbn1cblxuLy8gQmxlZWQgU2hvcnRoYW5kXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENvbnZlcnQgYmxlZWQgb3V0cHV0IGludG8gc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuXG4vLyAtICRibGVlZDogPG91dHB1dCBtYXA+XG5AZnVuY3Rpb24gYmxlZWQtc2hvcnRoYW5kKFxuICAkYmxlZWRcbikge1xuICAkbWFyZ2luOiAoKTtcbiAgJHBhZGRpbmc6ICgpO1xuICAkcmV0dXJuOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJsZWVkIHtcbiAgICBAaWYgc3RyLWluZGV4KCRrZXksIG1hcmdpbikge1xuICAgICAgJG1hcmdpbjogbWFwLW1lcmdlKCRtYXJnaW4sICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIGlmIHN0ci1pbmRleCgka2V5LCBwYWRkaW5nKSA+IDAge1xuICAgICAgJHBhZGRpbmc6IG1hcC1tZXJnZSgkcGFkZGluZywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICRwcm9wczogKFxuICAgIG1hcmdpbjogJG1hcmdpbixcbiAgICBwYWRkaW5nOiAkcGFkZGluZyxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJG1hcCBpbiAkcHJvcHMge1xuICAgICRmb3VyOiBpZihsZW5ndGgobWFwLWtleXMoJG1hcCkpID09IDQsIHRydWUsIGZhbHNlKTtcbiAgICAkbnVsbDogaWYoaW5kZXgobWFwLXZhbHVlcygkbWFwKSwgbnVsbCksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkZm91ciBhbmQgbm90KCRudWxsKSB7XG4gICAgICAkdG9wOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS10b3AnKTtcbiAgICAgICRyaWdodDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tcmlnaHQnKTtcbiAgICAgICRib3R0b206IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWJvdHRvbScpO1xuICAgICAgJGxlZnQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWxlZnQnKTtcblxuICAgICAgJHRiOiBpZigkdG9wID09ICRib3R0b20sICR0b3AsIG51bGwpO1xuICAgICAgJHJsOiBpZigkcmlnaHQgPT0gJGxlZnQsICRyaWdodCwgbnVsbCk7XG4gICAgICAkYWxsOiBpZigkdGIgPT0gJHJsLCAkdGIsIG51bGwpO1xuXG4gICAgICAkbmV3OiBpZigkYWxsLCAkYWxsLCBudWxsKTtcblxuICAgICAgQGlmIG5vdCgkbmV3KSB7XG4gICAgICAgIEBpZiAkdGIgYW5kICRybCB7XG4gICAgICAgICAgJG5ldzogJHRiICRybDtcbiAgICAgICAgfSBAZWxzZSBpZiAkcmwge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJsICRib3R0b207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJpZ2h0ICRib3R0b20gJGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmFtZTogJG5ldykpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICRtYXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cbiIsIi8qXG4qIFNjdXQsIGEgY29sbGVjdGlvbiBvZiBTYXNzIHV0aWxpdGllc1xuKiB0byBlYXNlIGFuZCBpbXByb3ZlIG91ciBpbXBsZW1lbnRhdGlvbnMgb2YgY29tbW9uIHN0eWxlLWNvZGUgcGF0dGVybnMuXG4qIHYxLjQuMFxuKiBEb2NzIGF0IGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0XG4qL1xuXG5AbWl4aW4gc2N1dC1jbGVhcmZpeCB7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNsZWFyZml4IHtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtdW5zdHlsZWQoXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCk7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1mbG9hdGVkIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJGRpcjogbGVmdCxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xuXG4gICYgPiBsaSB7XG4gICAgZmxvYXQ6ICRkaXI7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tI3skZGlyfTogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtZmxvYXRlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkO1xufVxuXG5AZnVuY3Rpb24gc2N1dC1hdXRvT3JWYWx1ZSAoJHZhbCkge1xuICBAaWYgJHZhbCA9PSBhIG9yICR2YWwgPT0gYXV0byB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtY29vcmRzIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICAkdG9wOiBudGgoJGNvb3JkaW5hdGVzLCAxKTtcbiAgJHJpZ2h0OiBudGgoJGNvb3JkaW5hdGVzLCAyKTtcbiAgJGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyk7XG4gICRsZWZ0OiBudGgoJGNvb3JkaW5hdGVzLCA0KTtcblxuICBAaWYgJHRvcCAhPSBuIHtcbiAgICB0b3A6IHNjdXQtYXV0b09yVmFsdWUoJHRvcCk7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBuIHtcbiAgICByaWdodDogc2N1dC1hdXRvT3JWYWx1ZSgkcmlnaHQpO1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG4ge1xuICAgIGJvdHRvbTogc2N1dC1hdXRvT3JWYWx1ZSgkYm90dG9tKTtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbiB7XG4gICAgbGVmdDogc2N1dC1hdXRvT3JWYWx1ZSgkbGVmdCk7XG4gIH1cblxufVxuQGZ1bmN0aW9uIHNjdXQtc3RyaXAtdW5pdCAoXG4gICRudW1cbikge1xuXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1lbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtZW0gKFxuICAkcGl4ZWxzLFxuICAkYmFzZTogJHNjdXQtZW0tYmFzZVxuKSB7XG5cbiAgLy8gJGJhc2UgY291bGQgYmUgaW4gZW0gb3IgcHggKG5vIHVuaXQgPSBweCkuXG4gIC8vIEFkanVzdCBhY2NvcmRpbmdseSB0byBjcmVhdGUgYSAkZGl2aXNvciB0aGF0XG4gIC8vIHNlcnZlcyBhcyBjb250ZXh0IGZvciAkcGl4ZWxzLlxuICAkbXVsdGlwbGllcjogaWYodW5pdCgkYmFzZSkgPT0gZW0sIDE2LCAxKTtcbiAgJGRpdmlzb3I6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZSkgKiAkbXVsdGlwbGllcjtcblxuICAkZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1lbXM6IChzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkZGl2aXNvcikgKiAxZW07XG4gICAgJGVtLXZhbHM6IGFwcGVuZCgkZW0tdmFscywgJHZhbC1pbi1lbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZW0tdmFscztcbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1yZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LXJlbSAoXG4gICRwaXhlbHNcbikge1xuXG4gICRyZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1yZW1zOiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkc2N1dC1yZW0tYmFzZSAqIDFyZW07XG4gICAgJHJlbS12YWxzOiBhcHBlbmQoJHJlbS12YWxzLCAkdmFsLWluLXJlbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcmVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkcmVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRyZW0tdmFscztcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1ib3JkZXIgKFxuICAkc3R5bGUsXG4gICRzaWRlczogbiB5XG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaWRlcykgPT0gMiB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaWRlcykgPT0gNCB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDMpICE9IG4ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgNCkgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlNjdXQtYm9yZGVyIHJlcXVpcmVzIGEgJHNpZGVzIGFyZ3VtZW50IG9mIDIgb3IgNCB2YWx1ZXMuXCJcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jaXJjbGUgKFxuICAkc2l6ZSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBAaWYgJGNvbG9yID09IGluaGVyaXQge1xuICAgIC8vIElmIHVzZXIgd2FudHMgdG8gaW5oZXJpdCB0aGUgY29sb3IsXG4gICAgLy8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBib3JkZXJcbiAgICAvLyBjb2xvciBkZWZhdWx0cyB0byB0aGUgdGV4dCBjb2xvciBvZiB0aGUgZWxlbWVudC5cbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGhlaWdodDogMDtcbiAgICB3aWR0aDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHVzZSBiYWNrZ3JvdW5kLWNvbG9yLlxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jb2xvci1zd2FwIChcbiAgJG9mZixcbiAgJG9uLFxuICAkZHVyYXRpb246IDAsXG4gICRiZzogZmFsc2Vcbikge1xuXG4gICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IG51bGw7XG4gICRvZmYtaXMtbGlzdDogdHlwZS1vZigkb2ZmKSA9PSBsaXN0O1xuICAkb24taXMtbGlzdDogdHlwZS1vZigkb24pID09IGxpc3Q7XG5cbiAgLy8gSWYgJG9mZiBJUyBhIGxpc3QsXG4gIC8vIGFzc2lnbiBjb2xvciBhbmQgYmFja2dyb3VuZC1jb2xvci5cbiAgQGlmICRvZmYtaXMtbGlzdCB7XG4gICAgY29sb3I6IG50aCgkb2ZmLCAxKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9mZiwgMik7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvciwgY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBUUlVFLFxuICAvLyBhc3NpZ24gYmFja2dyb3VuZC1jb2xvci5cbiAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9mZi1pcy1saXN0KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgRkFMU0UsXG4gIC8vIGFzc2lnbiBjb2xvci5cbiAgQGVsc2Uge1xuICAgIGNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGNvbG9yO1xuICB9XG5cbiAgLy8gT25seSBzZXQtdXAgdHJhbnNpdGlvbiBpZiAkZHVyYXRpb24gIT0gMC5cbiAgQGlmICRkdXJhdGlvbiAhPSAwIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzO1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuXG4gICAgLy8gJG9uIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgJG9mZiwgYWJvdmUuXG4gICAgQGlmICRvbi1pcy1saXN0IHtcbiAgICAgIGNvbG9yOiBudGgoJG9uLCAxKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb24sIDIpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvbi1pcy1saXN0KSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb247XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgY29sb3I6ICRvbjtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtaGQtYnAgKFxuICAkcmF0aW86IDEuM1xuKSB7XG5cbiAgQG1lZGlhICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAoJHJhdGlvIC8gMSkpLFxuICAgICAgICAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgICAgICAgIChtaW4tcmVzb2x1dGlvbjogKHJvdW5kKDk2ICogJHJhdGlvKSAqIDFkcGkpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oaWRlLXZpc3VhbGx5IHtcblxuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcblxufVxuXG4lc2N1dC1oaWRlLXZpc3VhbGx5IHtcbiAgQGluY2x1ZGUgc2N1dC1oaWRlLXZpc3VhbGx5O1xufVxuQG1peGluIHNjdXQtaW1hZ2UtcmVwbGFjZSB7XG5cbiAgdGV4dC1pbmRlbnQ6IDEwMiU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG5cbn1cblxuJXNjdXQtaW1hZ2UtcmVwbGFjZSB7XG4gIEBpbmNsdWRlIHNjdXQtaW1hZ2UtcmVwbGFjZTtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LXJlbSBhbmQgc2N1dC1zdHJpcC11bml0XG5cbkBtaXhpbiBzY3V0LXJlbS1mYWxsYmFjayAoXG4gICRwaXhlbHMsXG4gICRwcm9wZXJ0eTogZm9udC1zaXplXG4pIHtcblxuICAkcHgtdmFsczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXB4OiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgKiAxcHg7XG4gICAgJHB4LXZhbHM6IGFwcGVuZCgkcHgtdmFscywgJHZhbC1pbi1weCk7XG4gIH1cbiAgJHJlbS12YWxzOiBzY3V0LXJlbSgkcGl4ZWxzKTtcblxuICAjeyRwcm9wZXJ0eX06ICRweC12YWxzO1xuICAjeyRwcm9wZXJ0eX06ICRyZW0tdmFscztcblxufVxuQG1peGluIHNjdXQtcmVzZXQtYm9yZGVyLWJveCB7XG4gIC8vIE1ha2UgZXZlcnl0aGluZyBhIGJvcmRlci1ib3gsIGJlY2F1c2Ugd2h5IG5vdD9cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1hbnRpYWxpYXMge1xuICAvLyBBbnRpYWxpYXMhXG4gIGJvZHkge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXNlbWFudGljaXplIHtcbiAgLy8gTWFrZSBoZWFkZXJzIGFuZCA8Yj4gc2VtYW50aWMsIG5vdCBwcmVzZW50YXRpb25hbC5cbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wb2ludGVyIHtcbiAgLy8gQ2xpY2thYmxlIGZvcm0gZWxlbWVudHMgc2hvdWxkIGhhdmUgYSBwb2ludGVyLlxuICBsYWJlbCxcbiAgc2VsZWN0LFxuICBvcHRpb24sXG4gIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZvcm0ge1xuICBmaWVsZHNldCB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWJ1dHRvbiB7XG4gIC8vIFJlc2V0IGRlZmF1bHQgYnV0dG9uIHN0eWxlcywgd2hpY2ggYXJlIG5ldmVyIHVzZWQuXG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdLFxuICBbdHlwZT1cInJlc2V0XCJdIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogYXV0bztcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBhcmFncmFwaCB7XG4gIC8vIFNvbWUgcGFyYWdyYXBoIG1hcmdpbnMganVzdCBnZXQgaW4gdGhlIHdheS5cbiAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LW1lZGlhIHtcbiAgLy8gWW91IHdhbnQgdGhlc2UgZWxlbWVudHMgZmx1aWQsIHByb2JhYmx5LlxuICBpbWcsXG4gIHZpZGVvIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZpZ3VyZSB7XG4gIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbnMuXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8vIENhbGwgdGhlbSBhbGwsIG1pbnVzIGV4Y2x1c2lvbnMhXG5AbWl4aW4gc2N1dC1yZXNldCAoJGV4Y2x1ZGU6IGZhbHNlKSB7XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJvcmRlci1ib3gpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1ib3JkZXItYm94O1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGFudGlhbGlhcykpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWFudGlhbGlhcztcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBzZW1hbnRpY2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXNlbWFudGljaXplO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBvaW50ZXIpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wb2ludGVyO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZvcm0pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1mb3JtO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJ1dHRvbikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJ1dHRvbjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwYXJhZ3JhcGgpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wYXJhZ3JhcGg7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgbWVkaWEpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1tZWRpYTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmaWd1cmUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1maWd1cmU7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtc2VsZWN0ZWQgKFxuICAkYWN0aXZlOiBmYWxzZVxuKSB7XG5cbiAgQGlmICRhY3RpdmUge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtdHJpYW5nbGUgKFxuICAkZGlyZWN0aW9uOiByaWdodCxcbiAgJHNpemU6IDAuNzVlbSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIC8vIEZvciBpbXByb3ZlZCBhcHBlYXJhbmNlIGluIHNvbWUgV2Via2l0IGJyb3dzZXJzXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcblxuICAvLyBTZXQgdXAgc29tZSB2YXJpYWJsZXNcbiAgJHdpZHRoOiBudWxsO1xuICAkaGVpZ2h0OiBudWxsO1xuICAkYm9yZGVyLXdpZHRoczogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gbGlzdCB7XG4gICAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR3aWR0aDogJHNpemU7XG4gICAgJGhlaWdodDogJHNpemU7XG4gIH1cblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICAvLyBGb3IgdXAgYW5kIGRvd24sIHdpZHRoIGdldHMgdHdvIGJvcmRlcnMgYnV0IGhlaWdodCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgc2Vjb25kIGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICRoZWlnaHQgKCR3aWR0aCAvIDIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgLy8gRm9yIHJpZ2h0IGFuZCBsZWZ0LCBoZWlnaHQgZ2V0cyB0d28gYm9yZGVycyBidXQgd2lkdGggb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIGZpcnN0IGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgJHdpZHRoO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBGb3IgcmlnaHQgdHJpYW5nbGVzICh0aGUgcmVzdCksIGJvdGggc2lkZXMgZ2V0IHR3byBib3JkZXJzLFxuICAgIC8vIHNvIGRpdmlkZSBib3RoIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAoJHdpZHRoIC8gMik7XG4gIH1cblxuICBib3JkZXItd2lkdGg6ICRib3JkZXItd2lkdGhzO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG5cbiAgLy8gU1RBTkRBUkQgVFJJQU5HTEVTXG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cblxuICAvLyBDT1JORVIgVFJJQU5HTEVTXG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdG9wLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdHJpYW5nbGUge1xuICBAaW5jbHVkZSBzY3V0LXRyaWFuZ2xlO1xufVxuQG1peGluIHNjdXQtY2VudGVyLWFic29sdXRlbHkgKFxuICAkZGltZW5zaW9uc1xuKSB7XG5cbiAgJHdpZHRoOiBudGgoJGRpbWVuc2lvbnMsIDEpO1xuICAkaGVpZ2h0OiBudGgoJGRpbWVuc2lvbnMsIDIpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJHdpZHRoICE9IG4ge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAoLSR3aWR0aCAvIDIpO1xuICB9XG5cbiAgQGlmICRoZWlnaHQgIT0gbiB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6ICgtJGhlaWdodCAvIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1ibG9jayAoXG4gICRtYXgtd2lkdGg6IGZhbHNlXG4pIHtcblxuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBAaWYgJG1heC13aWR0aCB7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICB9XG5cbn1cblxuJXNjdXQtY2VudGVyLWJsb2NrIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItYmxvY2s7XG59XG5cbkBtaXhpbiBzY3V0LWNlbnRlci10cmFuc2Zvcm0gKFxuICAkYXhpczogZmFsc2UgLy8gb3IgeCBvciB5XG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICRheGlzICE9IHgge1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgfVxuXG4gIEBpZiAkYXhpcyAhPSB5IHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgJHRyYW5zbGF0ZS12YWw6IG51bGw7XG5cbiAgQGlmIG5vdCgkYXhpcykge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geCB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIC1tcy10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICB0cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXgge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeCk7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuQG1peGluIHNjdXQtZmlsbCAoXG4gICR3aWR0aC1oZWlnaHQ6IGZhbHNlXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgQGlmICR3aWR0aC1oZWlnaHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtZmlsbCB7XG4gIEBpbmNsdWRlIHNjdXQtZmlsbDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtY3VzdG9tIChcbiAgJGNvbnRlbnQ6IFwiXFwyMDIyXCIsXG4gICRtYXJrZXItd2lkdGg6IDAuNzVlbSxcbiAgJHBhZDogMCxcbiAgJG5vLW1hcmdpbjogZmFsc2Vcbikge1xuXG4gICRjb250ZW50LXZhbDogbnVsbDtcbiAgJGNvdW50ZXI6IGluZGV4KCRjb250ZW50LCBjb3VudCk7XG4gIEBpZiAkY291bnRlciB7XG4gICAgQGlmIGxlbmd0aCgkY29udGVudCkgPT0gMyB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyLCBudGgoJGNvbnRlbnQsIDMpKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAyIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICRjb250ZW50LXZhbDogJGNvbnRlbnQ7XG4gIH1cblxuICBwYWRkaW5nLWxlZnQ6ICRtYXJrZXItd2lkdGggKyAkcGFkO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gICYgPiBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiAkY291bnRlciB7XG4gICAgICBjb3VudGVyLWluY3JlbWVudDogc2N1dGxpc3Rjb3VudGVyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkY29udGVudC12YWw7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IC0kbWFya2VyLXdpZHRoO1xuICAgICAgd2lkdGg6ICRtYXJrZXItd2lkdGg7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC1mbG9hdGVkYCwgd2hpY2ggZGVwZW5kcyBpbiB0dXJuIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1kaXZpZGVkIChcbiAgJGRpdmlkZXI6IFwifFwiLFxuICAkc3BhY2U6IDAuNWVtLFxuICAkZGlyOiBsZWZ0LFxuICAkaGVpZ2h0OiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQoJGRpcjogJGRpciwgJG5vLW1hcmdpbjogJG5vLW1hcmdpbik7XG5cbiAgJHBzZXVkbzogaWYoJGRpciA9PSBsZWZ0LCAnYmVmb3JlJywgJ2FmdGVyJyk7XG5cbiAgLy8gSWYgYW4gZXhwbGljaXQgaGVpZ2h0IGlzIHBhc3NlZCxcbiAgLy8gdGhpbmdzIGFyZSBkaWZmZXJlbnQ6IEFsbCA8bGk+c1xuICAvLyBuZWVkIHRoZSBwc2V1ZG8tZWxlbWVudCAodG8gZm9yY2UgaGVpZ2h0KSxcbiAgLy8gYnV0IHRoZSBmaXJzdCdzIG11c3QgYmUgaGlkZGVuLlxuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICAmID4gbGkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICAmID4gbGk6I3skcHNldWRvfSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgJiA+IGxpOmZpcnN0LWNoaWxkOiN7JHBzZXVkb30ge1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gICYgPiBsaSArIGxpOiN7JHBzZXVkb30ge1xuICAgIEBpZiBub3QoJGhlaWdodCkge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjZTtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtYmFyIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQ7XG59XG5cbiVzY3V0LWxpc3QtYnJlYWRjcnVtYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKFwiL1wiKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWlubGluZSAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtaW5saW5lO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtcHVuY3R1YXRlZCAoXG4gICRkaXZpZGVyOiBcIiwgXCIsXG4gICRkaXNwbGF5OiBpbmxpbmUsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6ICRkaXNwbGF5O1xuICAgICY6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWNvbW1hIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXB1bmN0dWF0ZWQ7XG59XG5AbWl4aW4gc2N1dC1tYXJnaW4gKFxuICAkbWFyZ2luXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDEgYW5kICRtYXJnaW4gIT0gbiB7XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMiB7XG4gICAgJG1hcmdpbi15OiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgQGlmICRtYXJnaW4teSAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDMge1xuICAgICRtYXJnaW4teS10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLXktYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgQGlmICRtYXJnaW4teS10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi15LWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSA0IHtcbiAgICAkbWFyZ2luLXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4tcmlnaHQ6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgICRtYXJnaW4tbGVmdDogbnRoKCRtYXJnaW4sIDQpO1xuICAgIEBpZiAkbWFyZ2luLXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1yaWdodCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi1yaWdodDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWxlZnQgIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi1sZWZ0O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1wYWRkaW5nIChcbiAgJHBhZGRpbmdcbikge1xuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDEgYW5kICRwYWRkaW5nICE9IG4ge1xuICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDIge1xuICAgICRwYWRkaW5nLXk6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICBAaWYgJHBhZGRpbmcteSAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15O1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXk7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAzIHtcbiAgICAkcGFkZGluZy15LXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLXktYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgIEBpZiAkcGFkZGluZy15LXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15LXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteS1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gNCB7XG4gICAgJHBhZGRpbmctdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXJpZ2h0OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICAkcGFkZGluZy1sZWZ0OiBudGgoJHBhZGRpbmcsIDQpO1xuICAgIEBpZiAkcGFkZGluZy10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmctdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctcmlnaHQgIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy1yaWdodDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1sZWZ0ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy1sZWZ0O1xuICAgIH1cbiAgfVxufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1hYnNvbHV0ZSAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWFic29sdXRlIHtcbiAgQGluY2x1ZGUgc2N1dC1hYnNvbHV0ZTtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtZml4ZWQgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1maXhlZCB7XG4gIEBpbmNsdWRlIHNjdXQtZml4ZWQ7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LXJlbGF0aXZlIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cbkBtaXhpbiBzY3V0LXJhdGlvLWJveCAoXG4gICRyYXRpbzogMS8xXG4pIHtcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVGhlIGNvbnRhaW5lcidzIGhlaWdodCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZVxuICAvLyBjb250YWluZXIncyB3aWR0aCwgaXMgc2V0IGJ5IGFzc2lnbmluZ1xuICAvLyBwYWRkaW5nLXRvcCB0byBhIHBzZXVkby1lbGVtZW50LlxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgcGFkZGluZy10b3A6ICgxIC8gJHJhdGlvKSAqIDEwMCU7XG4gIH1cblxufVxuXG4lc2N1dC1yYXRpby1ib3gge1xuICBAaW5jbHVkZSBzY3V0LXJhdGlvLWJveDtcbn1cbkBtaXhpbiBzY3V0LXNpemUoXG4gICRzaXplXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAxIHtcbiAgICB3aWR0aDogICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICB3aWR0aDogIG50aCgkc2l6ZSwgMSk7XG4gICAgaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAtJGhlaWdodDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAjeyR3cmFwcGVyfTphZnRlcixcbiAgI3skZm9vdGVyfSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG5cbn1cblxuLy8gZGVwcmVjYXRlZFxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3RlciAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbil7XG4gIEBpbmNsdWRlIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCgkaGVpZ2h0LCAkd3JhcHBlciwgJGZvb3Rlcik7XG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZsdWlkIChcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICN7JGZvb3Rlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcbiAgICBoZWlnaHQ6IDFweDtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLWliIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICAvLyBUaGUgaW5uZXIgZWxlbWVudCBpcyB2ZXJ0aWNhbGx5IGNlbnRlcmVkXG4gIC8vIGJ5IG1pZGRsZS1hbGlnbmluZyBpdCB3aXRoIGFuIGlubGluZSBwc2V1ZG8tZWxlbWVudFxuICAvLyB3aG9zZSBoZWlnaHQgaXMgMTAwJS5cblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgLy8gQSBzbWFsbCBuZWdhdGl2ZSByaWdodCBtYXJnaW4gaXMgc2V0XG4gICAgLy8gdG8gYWNjb3VudCBmb3IgdGhlIGRlZmF1bHRcbiAgICAvLyB3b3JkLXNwYWNpbmcgb2YgaW5saW5lLWJsb2NrLlxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVlbTtcbiAgfVxuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC12Y2VudGVyLWliIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLWliO1xufVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLWxoIChcbiAgJGhlaWdodFxuKSB7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJGhlaWdodDtcblxufVxuQG1peGluIHNjdXQtdmNlbnRlci10ZCAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgZGlzcGxheTogdGFibGU7XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG5cbiVzY3V0LXZjZW50ZXItdGQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdGQ7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1jZW50ZXItdHJhbnNmb3JtXG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItdHQgKCkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbiVzY3V0LXZjZW50ZXItdHQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdHQ7XG59XG4vLyBzcGFjZVxuJHNjdXQtc3BhY2U6IFwiXFwwMDIwXCI7XG4vLyBub24tYnJlYWtpbmcgc3BhY2VcbiRzY3V0LW5ic3A6IFwiXFwwMGEwXCI7XG5cbi8vIHF1b3RhdGlvbiBtYXJrXG4kc2N1dC1xdW90OiBcIlxcMDAyMlwiO1xuLy8gbGVmdCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LWxzcXVvOiBcIlxcMjAxOFwiO1xuLy8gcmlnaHQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1yc3F1bzogXCJcXDIwMTlcIjtcbi8vIGxlZnQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1sZHF1bzogXCJcXDIwMUNcIjtcbi8vIHJpZ2h0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtcmRxdW86IFwiXFwyMDFEXCI7XG4vLyBsZWZ0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbHNhcXVvOiBcIlxcMjAzOVwiO1xuLy8gcmlnaHQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yc2FxdW86IFwiXFwyMDNBXCI7XG4vLyBsZWZ0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbGFxdW86IFwiXFwwMGFiXCI7XG4vLyByaWdodCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJhcXVvOiBcIlxcMDBiYlwiO1xuXG4vLyBlbSBkYXNoIChtdXR0b24pXG4kc2N1dC1tZGFzaDogXCJcXDIwMTRcIjtcbi8vIGVuIGRhc2ggKG51dClcbiRzY3V0LW5kYXNoOiBcIlxcMjAxM1wiO1xuLy8gaHlwaGVuXG4kc2N1dC1oeXBoZW46IFwiXFwyMDEwXCI7XG5cbi8vIGFtcGVyc2FuZFxuJHNjdXQtYW1wOiBcIlxcMDAyNlwiO1xuLy8gZ3JlYXRlciB0aGFuXG4kc2N1dC1ndDogXCJcXDAwM2VcIjtcbi8vIGxlc3MgdGhhblxuJHNjdXQtbHQ6IFwiXFwwMDNjXCI7XG4vLyB0aW1lc1xuJHNjdXQtdGltZXM6IFwiXFwwMEQ3XCI7XG4vLyBiaWcgdGltZXNcbiRzY3V0LWJpZ3RpbWVzOiBcIlxcMjcxNVwiO1xuLy8gY2hlY2ttYXJrXG4kc2N1dC1jaGVja21hcms6IFwiXFwyNzEzXCI7XG5cbi8vIHNlY3Rpb24gc2lnbiAoZG91YmxlIFMsIGh1cnJpY2FuZSwgc2VjdGlvbmFsIHN5bWJvbCwgdGhlIGxlZ2FsIGRvdWdobnV0LCBzaWdudW0gc2VjdGlvbmlzKVxuJHNjdXQtc2VjdDogXCJcXDAwYTdcIjtcbi8vIHBhcmFncmFwaCBzeW1ib2wgKHBpbGNyb3cpXG4kc2N1dC1wYXJhOiBcIlxcMDBiNlwiO1xuXG4vLyBtaWRkb3QgKGludGVycHVuY3QsIGludGVycG9pbnQpXG4kc2N1dC1taWRkb3Q6IFwiXFwwMGI3XCI7XG4vLyBvLXNsYXNoIChzbGFzaGVkIG8pXG4kc2N1dC1vc2xhc2g6IFwiXFwwMGY4XCI7XG4vLyBidWxsZXRcbiRzY3V0LWJ1bGw6IFwiXFwyMDIyXCI7XG4vLyB3aGl0ZSBidWxsZXRcbiRzY3V0LXdoaWJ1bGw6IFwiXFwyNUU2XCI7XG4vLyBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1oZWxsaXA6IFwiXFwyMDI2XCI7XG4vLyB2ZXJ0aWNhbCBlbGxpcHNpc1xuJHNjdXQtdmVsbGlwOiBcIlxcMjJFRVwiO1xuLy8gbWlkbGluZSBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1taWRoZWxsaXA6IFwiXFwyMkVGXCI7XG5cbi8vIHVwLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC11dHJpOiBcIlxcMjViMlwiO1xuLy8gZG93bi1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtZHRyaTogXCJcXDI1YmNcIjtcbi8vIGxlZnQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWx0cmk6IFwiXFwyNWMwXCI7XG4vLyByaWdodC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtcnRyaTogXCJcXDI1YjZcIjtcbi8vIHVwLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC11c3RyaTogXCJcXDI1YjRcIjtcbi8vIGRvd24tcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWRzdHJpOiBcIlxcMjViZVwiO1xuLy8gbGVmdC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtbHN0cmk6IFwiXFwyNWMyXCI7XG4vLyByaWdodC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtcnN0cmk6IFwiXFwyNWI4XCI7XG4vLyBkaWFtb25kXG4kc2N1dC1kaWFtb25kOiBcIlxcMjVjNlwiO1xuLy8gZmlzaGV5ZVxuJHNjdXQtZmlzaGV5ZTogXCJcXDI1YzlcIjtcbi8vIGJ1bGxzZXllXG4kc2N1dC1idWxsc2V5ZTogXCJcXDI1Y2VcIjtcbi8vIGNpcmNsZVxuJHNjdXQtY2lyY2xlOiBcIlxcMjVjZlwiO1xuLy8gd2hpdGUgY2lyY2xlXG4kc2N1dC13aGl0ZWNpcmNsZTogXCJcXDI1Y2JcIjtcbi8vIHNxdWFyZVxuJHNjdXQtc3F1YXJlOiBcIlxcMjVhMFwiO1xuLy8gd2hpdGUgc3F1YXJlXG4kc2N1dC13aGl0ZXNxdWFyZTogXCJcXDI1YTFcIjtcbi8vIHNtYWxsIHNxdWFyZVxuJHNjdXQtc3NxdWFyZTogXCJcXDI1YWFcIjtcbi8vIHNtYWxsIHdoaXRlIHNxdWFyZVxuJHNjdXQtc3doaXRlc3F1YXJlOiBcIlxcMjVhYlwiO1xuXG4vLyBnZW5lcmFsIGN1cnJlbmN5XG4kc2N1dC1jdXJyZW5jeTogXCJcXDAwYTRcIjtcbi8vIGNlbnRcbiRzY3V0LWNlbnQ6IFwiXFwwMGEyXCI7XG4vLyBkb2xsYXJcbiRzY3V0LWRvbGxhcjogXCJcXDAwMjRcIjtcbi8vIHBvdW5kXG4kc2N1dC1wb3VuZDogXCJcXDAwYTNcIjtcbi8vIGV1cm9cbiRzY3V0LWV1cm86IFwiXFwyMGFjXCI7XG4vLyB5ZW5cbiRzY3V0LXllbjogXCJcXDAwYTVcIjtcbi8vIHJ1cGVlXG4kc2N1dC1ydXBlZTogXCJcXDIwQjlcIjtcbkBmdW5jdGlvbiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KSB7XG4gIC8vIFJldHVybiB0aGUgbGlzdCBvZiBgc3JjYCB2YWx1ZXMsIGluIG9yZGVyLCB0aGF0XG4gIC8vIGEgZ29vZCBgQGZvbnQtZmFjZWAgd2lsbCBuZWVkLCBpbmNsdWRpbmcgb25seVxuICAvLyB0aG9zZSBmb3JtYXRzIHNwZWNpZmllZCBpbiB0aGUgbGlzdCBgJGZvcm1hdHNgLlxuICAkcmVzdWx0OiAoKTtcbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAkZW90LXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRlb3QtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmMikge1xuICAgICR3b2ZmMi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYyLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZikge1xuICAgICR3b2ZmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB0dGYpIHtcbiAgICAkdHRmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHR0Zi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHN2Zykge1xuICAgICRzdmctdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fScpIGZvcm1hdCgnc3ZnJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRzdmctdmFsLCBjb21tYSk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AbWl4aW4gc2N1dC1mb250LWZhY2UgKFxuICAkZm9udC1mYW1pbHksXG4gICRmaWxlLXBhdGgsXG4gICR3ZWlnaHQ6IG5vcm1hbCxcbiAgJHN0eWxlOiBub3JtYWwsXG4gICRmb3JtYXRzOiBlb3Qgd29mZjIgd29mZiB0dGYgc3ZnXG4pIHtcblxuICBAaWYgaW5kZXgoJ2l0YWxpYycgJ29ibGlxdWUnLCAkd2VpZ2h0KSB7XG4gICAgJHN0eWxlOiAkd2VpZ2h0O1xuICAgICR3ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuXG4gICAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAgIHNyYzogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgIH1cbiAgICBzcmM6IG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpO1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGFuZ2luZy1pbmRlbnQgKFxuICAkaW5kZW50OiAxZW1cbikge1xuXG4gIC8vIHBhZGRpbmctbGVmdCBjcmVhdGVzIHRoZSBpbmRlbnQsXG4gIC8vIHdoaWxlIHRleHQtaW5kZW50IHB1bGxzIHRoZSBmaXJzdCBsaW5lXG4gIC8vIGJhY2sgdG8gdGhlIGVkZ2UuXG5cbiAgcGFkZGluZy1sZWZ0OiAkaW5kZW50O1xuICB0ZXh0LWluZGVudDogLSRpbmRlbnQ7XG5cbn1cblxuJXNjdXQtaGFuZ2luZy1pbmRlbnQge1xuICBAaW5jbHVkZSBzY3V0LWhhbmdpbmctaW5kZW50O1xufVxuQG1peGluIHNjdXQtaW5kZW50ZWQtcHMgKFxuICAkaW5kZW50OiAxLjVlbSxcbiAgJG5vLWZpcnN0LWluZGVudDogdHJ1ZVxuKSB7XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtaW5kZW50OiAkaW5kZW50O1xuICB9XG5cbiAgQGlmICRuby1maXJzdC1pbmRlbnQge1xuICAgIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB0ZXh0LWluZGVudDogMDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1pbmRlbnRlZC1wcyB7XG4gIEBpbmNsdWRlIHNjdXQtaW5kZW50ZWQtcHM7XG59XG5AbWl4aW4gc2N1dC1rZXktdmFsIChcbiAgJGRpdmlkZXI6IFwiOlwiLFxuICAkcGFkOiAwLjI1ZW0sXG4gICRpbmRlbnQ6IDFlbSxcbiAgJHNwYWNpbmc6IDAsXG4gICRwYWQtbGVmdDogMFxuKSB7XG5cbiAgJiA+IGR0IHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkcGFkO1xuICAgICAgQGlmICRwYWQtbGVmdCAhPSAwIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRwYWQtbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmID4gZGQge1xuICAgIG1hcmdpbi1sZWZ0OiAkaW5kZW50O1xuICAgIEBpZiAkc3BhY2luZyAhPSAwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWtleS12YWwge1xuICBAaW5jbHVkZSBzY3V0LWtleS12YWw7XG59XG5AbWl4aW4gc2N1dC1saW5rLWJiIChcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkd2lkdGg6IDFweFxuKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gIGJvcmRlci1ib3R0b20td2lkdGg6ICR3aWR0aDtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgfVxuXG59XG5cbiVzY3V0LWxpbmstYmIge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstYmI7XG59XG4vLyBTQ1VUIExJTksgVU5TVFlMRURcbi8vIGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0LyNsaW5rLXVuc3R5bGVkXG5cbkBtaXhpbiBzY3V0LWxpbmstdW5zdHlsZWQoKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcblxufVxuXG4lc2N1dC1saW5rLXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLXVuc3R5bGVkKCk7XG59XG5cbkBtaXhpbiBzY3V0LXJldmVyc2UtaXRhbGljcyAoXG4gICRlbGVtZW50czogbnVsbFxuKSB7XG5cbiAgJGVsZW1lbnQtbGlzdDogZW0sIGNpdGUsIGk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgI3tqb2luKCRlbGVtZW50LWxpc3QsICRlbGVtZW50cyl9IHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cblxufVxuXG4lc2N1dC1yZXZlcnNlLWl0YWxpY3Mge1xuICBAaW5jbHVkZSBzY3V0LXJldmVyc2UtaXRhbGljcztcbn1cblxuQG1peGluIHNjdXQtc2lkZS1saW5lZCAoXG4gICRoZWlnaHQ6IDFweCxcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkdi1hZGp1c3Q6IGZhbHNlLFxuICAkZG91YmxlOiBmYWxzZVxuKSB7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDUwJTtcblxuICAgIGJvcmRlci10b3Atc3R5bGU6ICRzdHlsZTtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAkaGVpZ2h0O1xuXG4gICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgJHYtYWRqdXN0ICE9IGZhbHNlIHtcbiAgICAgIGJvdHRvbTogJHYtYWRqdXN0O1xuICAgIH1cblxuICAgIEBpZiAkZG91YmxlICE9IGZhbHNlIHtcbiAgICAgIGhlaWdodDogJGRvdWJsZTtcbiAgICAgIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6ICRoZWlnaHQ7XG4gICAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0OiAkc3BhY2U7XG4gICAgbWFyZ2luLWxlZnQ6IC01MCU7XG4gIH1cbiAgJjphZnRlciB7XG4gICAgbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXNpZGUtbGluZWQge1xuICBAaW5jbHVkZSBzY3V0LXNpZGUtbGluZWQ7XG59XG5AbWl4aW4gc2N1dC10cnVuY2F0ZSB7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbn1cblxuJXNjdXQtdHJ1bmNhdGUge1xuICBAaW5jbHVkZSBzY3V0LXRydW5jYXRlO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInRvb2xraXQvcGxhY2Vob2xkZXJzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcInRvb2xraXQvY29sb3JzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9mb250c1wiO1xuQGltcG9ydCBcInRvb2xraXQvaW50cmluc2ljLXJhdGlvXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9uZXN0ZWQtY29udGV4dFwiO1xuQGltcG9ydCBcInRvb2xraXQvcGFyYWxsYXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3J0bFwiO1xuQGltcG9ydCBcInRvb2xraXQvdGFyZ2V0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC90cmlhbmdsZVwiO1xuQGltcG9ydCBcInRvb2xraXQvY2VudGVyXCI7XG5AaW1wb3J0IFwidG9vbGtpdC92aWV3cG9ydFwiO1xuQGltcG9ydCBcInRvb2xraXQvdW5kZXJsaW5lXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9hcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3NldC1tdWx0aXBsZVwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRUb29sa2l0LVNldHRpbmdzOiAoXG4gICdjbGVhcmZpeCBleHRlbmQnOiBmYWxzZSxcbiAgJ2NvbG9yIHN0YWNrIGFtb3VudHMnOiAyNSUgNTAlIDc1JSA4NSUgOTAlLFxuICAndGludCBzaGFkZSBhbW91bnRzJzogNzUlIDUwJSAyNSUsXG4gICd0aW50IGNvbG9yJzogI2ZmZixcbiAgJ3NoYWRlIGNvbG9yJzogIzAwMCxcbiAgJ2NvbG9yIHNjYWxlIHN0ZXBzJzogNixcbiAgJ2xpZ2F0dXJlIGV4dGVuZCc6IGZhbHNlLFxuICAnZm9udCBmYWNlIHdlaWdodCc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBzdHlsZSc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZic6IGZhbHNlLFxuICAnaWNvbiBmb250IGV4dGVuZCc6IGZhbHNlLFxuICAnaWNvbiBmb250IHNwZWFrJzogZmFsc2UsXG4gICdmYWRlIGluIGR1cmF0aW9uJzogMXMsXG4gICdmYWRlIGluIGxvYWRpbmcgY2xhc3MnOiAnLndmLWxvYWRpbmcnLFxuICAnZmFkZSBpbiBleHRlbmQnOiBmYWxzZSxcbiAgJ2ludHJpbnNpYyByYXRpbyc6IDE2LzksXG4gICdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnOiAxMDAlLFxuICAnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJzogJz4gKicsXG4gICdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nOiB0b3AsXG4gICdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJzogZmFsc2UsXG4gICduZXN0ZWQgY29udGV4dCBjb250ZXh0cyc6IDEwMCUsXG4gICduZXN0ZWQgY29udGV4dCBwb3NpdGlvbic6IGxlZnQsXG4gICd0cmlhbmdsZSBjb2xvcic6ICMwMDAsXG4gICd0cmlhbmdsZSBoZWlnaHQnOiAxZW0sXG4gICd0cmlhbmdsZSB3aWR0aCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIGFuZ2xlJzogMCxcbiAgJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJzogMSxcbiAgJ3BhcmFsbGF4IGVsZW1lbnQnOiAnYm9keScsXG4gICdwYXJhbGxheCBpb3MnOiB0cnVlLFxuICAncGFyYWxsYXggZGlzdGFuY2UnOiAwLFxuICAndmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICd2ZXJ0aWNhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnOiA1MCUsXG4gICdob3Jpem9udGFsIGZpeGVkJzogZmFsc2UsXG4gICdob3Jpem9udGFsIGV4dGVuZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJzogZmFsc2UsXG4gICd1bmRlcmxpbmUgYmFja2dyb3VuZCc6ICNmZmYsXG4gICd1bmRlcmxpbmUgY29sb3InOiAjMDBlLFxuICAndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnOiB0cnVlLFxuICAndW5kZXJsaW5lIGRpc3RhbmNlJzogMSxcbiAgJ3VuZGVybGluZSB3aWR0aCc6IDIsXG4gICd1bmRlcmxpbmUgZXh0ZW5kJzogZmFsc2UsXG4gICdhcnQgcGl4ZWwgc2l6ZSc6IDFweCxcbiAgJ2FydCBjb2xvcic6IGJsYWNrLFxuICAnYXJ0IGJvcmRlciByYWRpdXMnOiAwJVxuKTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBOZXcgU2V0dGluZ3MgbW9kdWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdsb2JhbFxuJEdsb2JhbFNldHRpbmdzOiAkVG9vbGtpdC1TZXR0aW5ncyAhZGVmYXVsdDtcbi8vIFVzZXJcbiRVc2VyU2V0dGluZ3M6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVzZXIgU2V0dGluZyBFeGlzdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJFJldHVybjtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1oYXMoJHNldHRpbmcpIHtcbiAgQHJldHVybiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIEdldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEdsb2JhbFNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctZ2V0LW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkdmFsdWVzOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkdmFsdWVzOiBtYXAtbWVyZ2UoJHZhbHVlcywgKCRzZXR0aW5nOiBzZXR0aW5nLWdldCgkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICR2YWx1ZXM7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtZ2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1nZXQoJHNldHRpbmcpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZ3MgU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgJHNldHRpbmdzKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZS1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJFJldHVybjogKCk7XG5cbiAgQGVhY2ggJEtleSwgJFZhbHVlIGluICRVc2VyU2V0dGluZ3Mge1xuICAgICRSZXR1cm46IGlmKCRzZXR0aW5nID09ICRLZXksICRSZXR1cm4sIG1hcC1tZXJnZSgkUmV0dXJuLCAoJEtleTogJFZhbHVlKSkpO1xuICB9XG5cbiAgJFVzZXJTZXR0aW5nczogJFJldHVybiAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRjbGVhci10aGUtc2V0dGluZ3M6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcmVzZXQoKSB7XG4gICRVc2VyU2V0dGluZ3M6ICgpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLXJlc2V0KCk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBQaWNrXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2soJHNldHRpbmcsICRpbnB1dCkge1xuICBAcmV0dXJuIGlmKCRpbnB1dCAhPSBudWxsLCAkaW5wdXQsIHNldHRpbmctZ2V0KCRzZXR0aW5nKSk7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2stbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZywgJGlucHV0IGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogc2V0dGluZy1waWNrKCRpbnB1dCwgJHNldHRpbmcpKSk7XG4gIH1cblxuICBAcmV0dXJuICRSZXR1cm47XG59IiwiJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFBsYWNlaG9sZGVyIEdldC9TZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCkge1xuICAkdW5pcXVlLWlkOiB1bmlxdWUtaWQoKTtcbiAgJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6IG1hcC1tZXJnZSgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgKCRpZDogJHVuaXF1ZS1pZCkpICFnbG9iYWw7XG4gIEByZXR1cm4gJHVuaXF1ZS1pZDtcbn1cblxuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCkge1xuICBAcmV0dXJuIG1hcC1nZXQoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICRpZCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhdGUgUGxhY2Vob2xkZXIgQ2xhc3MgYW5kIEV4dGVuZFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKTtcblxuICBAaWYgJHBsYWNlaG9sZGVyLWlkID09IG51bGwge1xuICAgICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKTtcbiAgICBAYXQtcm9vdCAlI3skcGxhY2Vob2xkZXItaWR9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZXh0ZW5kICUjeyRwbGFjZWhvbGRlci1pZH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU3RhdGljIE1peGluIEhlbHBlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gbWl4aW4tZHJ5ZXIoJGlkLCAkZXh0ZW5kOiB0cnVlKSB7XG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNb2Rlcm4gQ2xlYXJmaXggTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNsZWFyZml4KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnY2xlYXJmaXggZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjbGVhcmZpeCcpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb21wYXNzIEV4dGVuc2lvbiBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUaW50IGFuZCBTaGFkZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMdW1hXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBsdW1hKCRjb2xvcikge1xuICBAcmV0dXJuIChyZWQoJGNvbG9yKSAqIC4yOTkpICsgKGdyZWVuKCRjb2xvcikgKiAuNTg3KSArIChibHVlKCRjb2xvcikgKiAuMTE0KTtcbn1cblxuQGZ1bmN0aW9uIGx1bWEtZ3RlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPj0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWx0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpIDw9IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1kaWZmKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQHJldHVybiBsdW1hKCRjb2xvcjEpIC0gbHVtYSgkY29sb3IyKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTdGFja3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXN0YWNrKCRtYWluLCAkc2Vjb25kYXJ5LCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ2NvbG9yIHN0YWNrIGFtb3VudHMnKTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJGFtb3VudHMpID09IDEge1xuICAgICRhbW91bnRzOiBudGgoJGFtb3VudHMsIDEpO1xuICB9XG5cbiAgJHN0YWNrOiAkbWFpbjtcblxuICBAZWFjaCAkYW1vdW50IGluICRhbW91bnRzIHtcbiAgICAkc3RhY2s6IGpvaW4oJHN0YWNrLCBtaXgoJHNlY29uZGFyeSwgbnRoKCRzdGFjaywgMSksICRhbW91bnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0YWNrO1xufVxuXG4vLyBUaW50IFN0YWNrXG5AZnVuY3Rpb24gdGludC1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFNoYWRlIFN0YWNrXG5AZnVuY3Rpb24gc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFRpbnQvU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgJGNvbG9yczogKCk7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgndGludCBzaGFkZSBhbW91bnRzJyk7XG4gIH1cbiAgJGxlbmd0aDogbGVuZ3RoKCRhbW91bnRzKTtcblxuICAvLyBTaGFkZXNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgc2hhZGUoJGNvbG9yLCBudGgoJGFtb3VudHMsICRpKSkpO1xuICB9XG5cbiAgLy8gQmFzZVxuICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgJGNvbG9yKTtcblxuICAvLyBUaW50c1xuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRsZW5ndGggLSAxIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgdGludCgkY29sb3IsIG50aCgkYW1vdW50cywgJGxlbmd0aCAtICRpKSkpO1xuICB9XG5cbiAgQHJldHVybiAkY29sb3JzO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFNjYWxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc2NhbGUoJG1haW4sICRzZWNvbmRhcnksICRzdGVwczogbnVsbCkge1xuICAkc3RlcHM6IGlmKCRzdGVwcyAhPSBudWxsLCAkc3RlcHMsIHRvb2xraXQtZ2V0KCdjb2xvciBzY2FsZSBzdGVwcycpKTtcblxuICAkbGlzdDogJG1haW47XG5cbiAgJHJlZDE6IHJlZCgkbWFpbik7XG4gICRyZWQyOiByZWQoJHNlY29uZGFyeSk7XG4gICRyZWQtZGlmZjogKCgkcmVkMSAtICRyZWQyKSAvICgoJHN0ZXBzIC0gMSkpKTtcblxuICAkaHVlMTogaHVlKCRtYWluKTtcbiAgJGh1ZTI6IGh1ZSgkc2Vjb25kYXJ5KTtcbiAgQGlmICgkaHVlMiArIDM1OSAtICRodWUxKSA8IGFicygkaHVlMSAtICRodWUyKSB7XG4gICAgJGh1ZTI6ICRodWUyICsgMzU5O1xuICB9XG4gICRodWUtZGlmZjogKCRodWUyIC0gJGh1ZTEpIC8gKCRzdGVwcyAtIDEpO1xuXG4gICRzYXQxOiBzYXR1cmF0aW9uKCRtYWluKTtcbiAgJHNhdDI6IHNhdHVyYXRpb24oJHNlY29uZGFyeSk7XG4gICRzYXQtZGlmZjogMDtcbiAgQGlmICRzYXQxID4gJHNhdDIge1xuICAgICRzYXQtZGlmZjogKCRzYXQyIC0gJHNhdDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MSAtICRzYXQyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRsdGUxOiBsaWdodG5lc3MoJG1haW4pO1xuICAkbHRlMjogbGlnaHRuZXNzKCRzZWNvbmRhcnkpO1xuICAkbHRlLWRpZmY6IDA7XG4gIEBpZiAkbHRlMSA+ICRsdGUyIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMiAtICRsdGUxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTEgLSAkbHRlMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkYWxwMTogYWxwaGEoJG1haW4pO1xuICAkYWxwMjogYWxwaGEoJHNlY29uZGFyeSk7XG4gICRhbHAtZGlmZjogMDtcbiAgQGlmICRhbHAxID4gJGFscDIge1xuICAgICRhbHAtZGlmZjogKCRhbHAyIC0gJGFscDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMSAtICRhbHAyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRodWUtaG9sZDogJGh1ZTE7XG4gICRzYXQtaG9sZDogJHNhdDE7XG4gICRsdGUtaG9sZDogJGx0ZTE7XG4gICRhbHAtaG9sZDogJGFscDE7XG4gICRjb2xvci1ob2xkOiAwO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJHN0ZXBzIHtcbiAgICAkaHVlLWhvbGQ6ICRodWUtaG9sZCArICRodWUtZGlmZjtcbiAgICAkc2F0LWhvbGQ6ICRzYXQtaG9sZCArICRzYXQtZGlmZjtcbiAgICAkbHRlLWhvbGQ6ICRsdGUtaG9sZCArICRsdGUtZGlmZjtcbiAgICAkYWxwLWhvbGQ6ICRhbHAtaG9sZCArICRhbHAtZGlmZjtcblxuICAgICRjb2xvci1ob2xkOiBoc2xhKCRodWUtaG9sZCwgJHNhdC1ob2xkLCAkbHRlLWhvbGQsICRhbHAtaG9sZCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGNvbG9yLWhvbGQpO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFbmFibGUgbGlnYXR1cmVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnbGlnYXR1cmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnZW5hYmxlIGxpZ2F0dXJlcycpIHtcbiAgICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXM7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2E9MSwgZGxpZz0xXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1zLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtby1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIixcImRsaWdcIjtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFjZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZm9udC1mYWNlKCRuYW1lLCAkZmlsZXMsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGlubGluZS13b2ZmOiBudWxsKSB7XG4gICR3ZWlnaHQ6IGlmKCR3ZWlnaHQgIT0gbnVsbCwgJHdlaWdodCwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSB3ZWlnaHQnKSk7XG4gICRzdHlsZTogaWYoJHN0eWxlICE9IG51bGwsICRzdHlsZSwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBzdHlsZScpKTtcbiAgJGlubGluZS13b2ZmOiBpZigkaW5saW5lLXdvZmYgIT0gbnVsbCwgJGlubGluZS13b2ZmLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIGlubGluZSB3b2ZmJykpO1xuXG4gICRmb250LXN0YWNrOiAoKTtcbiAgJGZvbnQtc3JjOiAnJztcbiAgJGVvdDogZmFsc2U7XG4gICRmb250LWV4dGVuc2lvbnM6ICgnZW90JzogJ2VtYmVkZGVkLW9wZW50eXBlJywgJ3dvZmYyJzogJ3dvZmYyJywgJ3dvZmYnOiAnd29mZicsICd0dGYnOiAndHJ1ZXR5cGUnLCAnc3ZnJzogJ3N2ZycpO1xuXG4gIEBlYWNoICRleHQsICRmb3JtYXQgaW4gJGZvbnQtZXh0ZW5zaW9ucyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRmaWxlcywgJGV4dCkge1xuICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhpbmxpbmUtZm9udC1maWxlcykgYW5kICRpbmxpbmUtd29mZiA9PSB0cnVlIGFuZCAoJGV4dCA9PSAnd29mZicgb3IgJGV4dCA9PSAnd29mZjInKSB7XG4gICAgICAgICRmb250LXNyYzogaW5saW5lLWZvbnQtZmlsZXMobWFwLWdldCgkZmlsZXMsICRleHQpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIGZ1bmN0aW9uLWV4aXN0cyhmb250LXVybCkge1xuICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkZm9udC1zdGFjazogYXBwZW5kKCRmb250LXN0YWNrLCAkZm9udC1zcmMsICdjb21tYScpO1xuICAgIH1cblxuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRuYW1lO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6ICRlb3Q7XG4gICAgfVxuICAgIEBpZiBsZW5ndGgoJGZvbnQtc3RhY2spID4gMCB7XG4gICAgICBzcmM6ICRmb250LXN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEljb24gRm9udFxuLy8gRnJvbSBodHRwOi8vaWNvbW9vbi5pb1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaWNvbi1mb250KCRmb250LXN0YWNrLCAkc3BlYWs6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHNwZWFrOiBpZigkc3BlYWsgIT0gbnVsbCwgJHNwZWFrLCB0b29sa2l0LWdldCgnaWNvbiBmb250IHNwZWFrJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjaztcbiAgQGlmICRzcGVhayA9PSBmYWxzZSB7XG4gICAgc3BlYWs6IG5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gaWNvbi1mb250LS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCAge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpY29uIGZvbnQgY29yZScpIHtcbiAgICAgIEBpbmNsdWRlIGljb24tZm9udC0tY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZCk7XG5cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWRlIEluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjb250ZW50LWZhZGUtaW4oJGR1cmF0aW9uOiBudWxsLCAkbG9hZGluZzogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZHVyYXRpb246IGlmKCRkdXJhdGlvbiAhPSBudWxsLCAkZHVyYXRpb24sIHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykpO1xuICAkbG9hZGluZzogaWYoJGxvYWRpbmcgIT0gbnVsbCwgJGxvYWRpbmcsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUgYW5kICRkdXJhdGlvbiA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpIGFuZCAkbG9hZGluZyA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjb250ZW50IGZhZGUgaW4nKSB7XG4gICAgICBAaW5jbHVkZSBjb250ZW50LWZhZGUtaW4oJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaWYgbm90IG1peGluLWV4aXN0cygnc2luZ2xlLXRyYW5zaXRpb24nKSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG9wYWNpdHkgJGR1cmF0aW9uKTtcbiAgICB9XG5cbiAgICAjeyRsb2FkaW5nfSAmIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZsdWlkIEVtYmVkcyBhbmQgd2hhdGV2ZXIgV0lUSCBOTyBKQVZBU0NJUFQhXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBwYXJlbnQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gY2hpbGQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICB0b3A6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG5cbiAgcGFkZGluZy0jeyRwb3NpdGlvbn06ICgxIC8gJHJhdGlvKSAqICR3aWR0aDtcbiAgd2lkdGg6ICR3aWR0aDtcbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRlbGVtZW50czogaWYoJGVsZW1lbnRzICE9IG51bGwsICRlbGVtZW50cywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZCk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xuXG4gIEBlYWNoICRlbGVtZW50IGluICRlbGVtZW50cyB7XG4gICAgI3skZWxlbWVudH0ge1xuICAgIFx0QGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXIoJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpbygkcmF0aW8sICR3aWR0aCwgJGVsZW1lbnRzLCAkZXh0ZW5kLCAkcG9zaXRpb24pO1xufVxuXG5AbWl4aW4gaXItcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG59IiwiLy8gc2ltcGxlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbnRleHQgb2YgYSBuZXN0ZWQgcGVyY2VudGFnZS5cbkBmdW5jdGlvbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG5cbiAgLy8gRmlyc3QgbGV2ZWwgZGVlcCBpcyBhbHdheXMgMTAwJVxuICAkcGVyY2VudGFnZTogMTAwJTtcblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBsZXZlbFxuICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgIC8vIEludmVydCB0aGUgcGVyY2VudGFnZSB0byBmaW5kIGNvbnRleHRcbiAgICAkcGVyY2VudGFnZTogcGVyY2VudGFnZSgkcGVyY2VudGFnZSAvICRjb250ZXh0KTtcbiAgfVxuICAvLyBSZXR1cm4gZmluYWwgcGVyY2VudGFnZVxuICBAcmV0dXJuICRwZXJjZW50YWdlO1xufVxuXG4vLyBtaXhpbiB0byBtYWtlIHRoaW5ncyBlYXNpZXJcbkBtaXhpbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nKSk7XG5cbiAgd2lkdGg6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cyk7XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJjZW50ZXJcIiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0uNTtcbiAgfVxuICBAaWYgJHBvc2l0aW9uID09IFwicmlnaHRcIiB7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtMSArIDEwMCU7XG4gIH1cbn0iLCIvLyBNYWdpYyBwYXJhbGxheCBtaXhpbnNcbkBtaXhpbiBwYXJhbGxheC1pbml0KCRwZXJzcGVjdGl2ZTogbnVsbCwgJGVsZW1lbnQ6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcblxuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJGVsZW1lbnQ6IGlmKCRlbGVtZW50ICE9IG51bGwsICRlbGVtZW50LCB0b29sa2l0LWdldCgncGFyYWxsYXggZWxlbWVudCcpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIEBpZiAkZWxlbWVudCA9PSAnYm9keScge1xuICAgIEBhdC1yb290IHtcbiAgICAgIGh0bWwsIGJvZHkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICBib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGVsZW1lbnQgPT0gdGhpcyB7XG4gICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGF0LXJvb3QgI3skZWxlbWVudH0ge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmU6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBvdmVyZmxvdzogYXV0bztcbiAgQGlmIG1peGluLWV4aXN0cyhwZXJzcGVjdGl2ZSkge1xuICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSAqIDFweCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgICBwZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICB9XG4gIC8vIEFsbG93cyBmb3Igc21vb3RoIHNjcm9sbGluZyBidXQgZGlzYWJsZXMgcGFyYWxsYXggZWZmZWN0cy5cbiAgQGlmICRwYXJhbGxheC1pb3MgPT0gZmFsc2Uge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAvLyBNYWtlIHN1cmUgM0QgcGVyc3BlY3RpdmUgaXMgcHJlc2VydmVkXG4gICYsICYgKiB7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0tc3R5bGUpIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZShwcmVzZXJ2ZS0zZCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheCgkZGlzdGFuY2U6IG51bGwsICRwZXJzcGVjdGl2ZTogbnVsbCkge1xuXG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGRpc3RhbmNlJykpO1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcblxuICAkdHJhbnNmb3JtOiB0cmFuc2xhdGVaKCRkaXN0YW5jZSAqICRwZXJzcGVjdGl2ZSAqIDFweCkgc2NhbGUoYWJzKCRkaXN0YW5jZSAtIDEpKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnNmb3JtKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gICAgdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICB9XG5cbiAgei1pbmRleDogJGRpc3RhbmNlICogMTAwO1xufVxuIiwiQG1peGluIHJ0bCgkcHJvcGVydHksICR2YWx1ZSkge1xuICAkX3Byb3BlcnR5OiAkcHJvcGVydHk7XG4gICN7JHByb3BlcnR5fTogJHZhbHVlO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA9PSA0IHtcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgI3skcHJvcGVydHl9OiBudGgoJHZhbHVlLCAxKSBudGgoJHZhbHVlLCA0KSBudGgoJHZhbHVlLCAzKSBudGgoJHZhbHVlLCAyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpIC0gMSkgKyAncmlnaHQnO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykgLSAxKSArICdsZWZ0JztcbiAgICB9XG5cbiAgICBAaWYgJHByb3BlcnR5ICE9ICRfcHJvcGVydHkge1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiQG1peGluIHRhcmdldCgkdGFyZ2V0KSB7XG4gIEBhdC1yb290IHtcbiAgICAvKiEgQHt0YXJnZXQ6ICN7JHRhcmdldH19ICovXG4gICAgJiB7XG4gICAgICBAY29udGVudDsgIFxuICAgIH1cbiAgICAvKiEge3RhcmdldDogI3skdGFyZ2V0fX1AICovICBcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRHJhdyB0cmlhbmdsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gdHJpYW5nbGUoJGNvbG9yOiBudWxsLCAkaGVpZ2h0OiBudWxsLCAkd2lkdGg6IG51bGwsICRhbmdsZTogbnVsbCkge1xuXG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGNvbG9yJykpO1xuICAkaGVpZ2h0OiBpZigkaGVpZ2h0ICE9IG51bGwsICRoZWlnaHQsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBoZWlnaHQnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIHdpZHRoJykpO1xuICAkYW5nbGU6IGlmKCRhbmdsZSAhPSBudWxsLCAkYW5nbGUsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBhbmdsZScpKTtcblxuICBAaWYgbnRoKCRhbmdsZSwgMSkgPT0gXCJ0b3BcIiBvciBudGgoJGFuZ2xlLCAxKSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IFwiI3skYW5nbGV9XCI7XG4gIH1cblxuICBAaWYgJGFuZ2xlID09IFwidG9wXCIge1xuICAgICRhbmdsZTogMDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiA3O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJyaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAxO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDQ7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiAzO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA2O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNTtcbiAgfVxuXG4gIEBpZiB1bml0KCRoZWlnaHQpID09IFwiXCIgb3IgdW5pdCgkaGVpZ2h0KSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skaGVpZ2h0fSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIGhlaWdodC5cIlxuICB9XG5cbiAgQGlmIHVuaXQoJHdpZHRoKSA9PSBcIlwiIG9yIHVuaXQoJHdpZHRoKSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skd2lkdGh9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3Igd2lkdGguXCJcbiAgfVxuXG4gIC8vIG9mZnNldCA0NWRlZyB0byBtYWtlIGVhY2ggc2lkZSBzdGFydCBhdCAwXG4gICRkZWc6ICRhbmdsZSArIDQ1O1xuICAvLyBpZiB1bml0cywgcmVtb3ZlIHVuaXRzXG4gIEBpZiB1bml0KCRkZWcpID09IGRlZyB7XG4gICAgJGRlZzogJGRlZyAvIDFkZWc7XG4gIH1cbiAgLy8gc2hpZnQgdG8gYmUgb24gYSBzY2FsZSBmcm9tIDAgdG8gOTAuXG4gIEB3aGlsZSAkZGVnID4gOTAge1xuICAgICRkZWc6ICRkZWcgLSA5MDtcbiAgfVxuICBAd2hpbGUgJGRlZyA8IDAge1xuICAgICRkZWc6ICRkZWcgKyA5MDtcbiAgfVxuICAvLyBHZXQgYSByYXRpbyBvZiA5MCB0byBtdWx0aXBseSBieS5cbiAgJGRlZzogJGRlZyAvIDkwO1xuXG4gIC8vIG1ha2Ugc3VyZSBtZXRyaWNzIGFyZSByZXNldFxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gIC8vIHJ1biB0aHJvdWdoIHNpZGVzXG4gIEBpZiAkYW5nbGUgPD0gNDUgb3IgJGFuZ2xlID4gMzE1IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKSAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gNDUgYW5kICRhbmdsZSA8PSAxMzUge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqICRkZWcpIDAgKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGg7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDEzNSBhbmQgJGFuZ2xlIDw9IDIyNSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAoJHdpZHRoICogJGRlZykgMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDIyNSBhbmQgJGFuZ2xlIDw9IDMxNSB7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aCAoJGhlaWdodCAqICRkZWcpIDA7XG4gIH1cbn0iLCIvLyBWZXJ0aWNhbGx5IGNlbnRlciBhbnl0aGluZywgbGl0ZXJhbGx5IGFueXRoaW5nLlxuLy8gaHR0cDovL3plcm9zaXh0aHJlZS5zZS92ZXJ0aWNhbC1hbGlnbi1hbnl0aGluZy13aXRoLWp1c3QtMy1saW5lcy1vZi1jc3MvXG5AbWl4aW4gdmVydGljYWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuXG4gIHRvcDogJG1pZHBvaW50O1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3ZlcnRpY2FsIGNlbnRlcicpIHtcbiAgICAgIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhvcml6b250YWwgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgQGlmICRtaWRwb2ludCAhPSAwJSB7XG4gICAgbGVmdDogJG1pZHBvaW50O1xuICB9XG5cbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBYnNvbHV0ZSBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFic29sdXRlLWNlbnRlcigkdmVydGljYWw6IG51bGwsICRob3Jpem9udGFsOiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHZlcnRpY2FsOiBpZigkdmVydGljYWwgIT0gbnVsbCwgJHZlcnRpY2FsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgdG9wOiAkdmVydGljYWw7XG4gIEBpZiAkaG9yaXpvbnRhbCAhPSAwJSB7XG4gICAgbGVmdDogJGhvcml6b250YWw7XG4gIH1cblxuICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENTUyBsZXZlbCA0IFZpZXdwb3J0XG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtZGV2aWNlLWFkYXB0LyN0aGUtYXR2aWV3cG9ydC1ydWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiB2aWV3cG9ydCB7XG4gIEAtd2Via2l0LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tcy12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQHZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4iLCJAbWl4aW4gdW5kZXJsaW5lKCRiYWNrZ3JvdW5kOiBudWxsLCAkY29sb3I6IG51bGwsICRjbGVhci1kZXNjZW5kZXJzOiBudWxsLCAkZGlzdGFuY2U6IG51bGwsICR3aWR0aDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkYmFja2dyb3VuZDogaWYoJGJhY2tncm91bmQgIT0gbnVsbCwgJGJhY2tncm91bmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgYmFja2dyb3VuZCcpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNvbG9yJykpO1xuICAkY2xlYXItZGVzY2VuZGVyczogaWYoJGNsZWFyLWRlc2NlbmRlcnMgIT0gbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnMsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycycpKTtcbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGRpc3RhbmNlJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgd2lkdGgnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgJFBYOiAuMDYyNWVtO1xuXG4gIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKCRleHRlbmQpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHMoYmFja2dyb3VuZC1pbWFnZSkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhsaW5lYXItZ3JhZGllbnQpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKFxuICAgICAgbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKVxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSk7XG4gIH1cbiAgYmFja2dyb3VuZC1zaXplOiAoMiAqICRQWCkgKCgxICsgJHdpZHRoKSAqICRQWCk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgKCgkd2lkdGgpICogJFBYKSArICRkaXN0YW5jZTtcblxuICBAaWYgJGNsZWFyLWRlc2NlbmRlcnMge1xuICAgIHRleHQtc2hhZG93OiAoMSAqICRQWCkgKDEgKiAkUFgpIDAgJGJhY2tncm91bmQsICgtMSAqICRQWCkgMCAwICRiYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd1bmRlcmxpbmUnKSB7XG4gICAgICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBUlQhXG4vLyBJbnNwaXJlZCBieSBodHRwOi8vZWxydW1vcmRlbGFsdXouZ2l0aHViLmlvL1BpeGVsYXRvci9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFydCgkYXJ0LCAkcHgtc2l6ZTogbnVsbCwgJGNvbG9yOiBudWxsLCAkcmFkaXVzOiBudWxsKSB7XG4gICRweC1zaXplOiBpZigkcHgtc2l6ZSAhPSBudWxsLCAkcHgtc2l6ZSwgdG9vbGtpdC1nZXQoJ2FydCBwaXhlbCBzaXplJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCdhcnQgY29sb3InKSk7XG4gICRyYWRpdXM6IGlmKCRyYWRpdXMgIT0gbnVsbCwgJHJhZGl1cywgdG9vbGtpdC1nZXQoJ2FydCBib3JkZXIgcmFkaXVzJykpO1xuXG4gICRidWlsZDogKCk7XG4gICR5OiAkcHgtc2l6ZTtcbiAgJHg6IDA7XG5cbiAgaGVpZ2h0OiAkcHgtc2l6ZTtcbiAgd2lkdGg6ICRweC1zaXplO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyX2xlbmd0aCgkYXJ0KSB7XG4gICAgJGNoYXI6IHN0cl9zbGljZSgkYXJ0LCAkaSwgJGkpO1xuICAgICR4OiAkeCArICRweC1zaXplO1xuXG4gICAgQGlmICRjaGFyID09ICduJyB7XG4gICAgICAkeTogJHkgKyAkcHgtc2l6ZTtcbiAgICAgICR4OiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY2hhciAhPSAnICcge1xuICAgICAgJGJvcmRlcjogJHggJHkgMCAkY29sb3I7XG4gICAgICAkYnVpbGQ6IGFwcGVuZCgkYnVpbGQsICRib3JkZXIsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBib3gtc2hhZG93OiAkYnVpbGQ7XG59IiwiQG1peGluIHNldC1tdWx0aXBsZSgkdmFsdWUsICRwcm9wZXJ0aWVzLi4uKSB7XG4gICRwcm9wZXJ0eS1sZW5ndGg6IGxlbmd0aCgkcHJvcGVydGllcyk7XG4gICRlcnJvci1tc2c6IFwiVGhlIGBzZXQtbXVsdGlwbGVgIG1peGluIHJlcXVpcmVzIHlvdSB0byBwYXNzIGluIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzIHRoZSBzZWNvbmQgYXJndW1lbnRcIjtcblxuICBAaWYgJHByb3BlcnR5LWxlbmd0aCA8IDEge1xuICAgIEBpZiBmZWF0dXJlLWV4aXN0cyhhdC1lcnJvcikge1xuICAgICAgQGVycm9yICRlcnJvci1tc2c7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICRlcnJvci1tc2c7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCBpbiBpcyBhIHdoaXRlLXNwYWNlZCBzZXBhcmF0ZWQgbGlzdC5cbiAgJHByb3BlcnRpZXM6IGlmKCRwcm9wZXJ0eS1sZW5ndGggPT0gMSwgbnRoKCRwcm9wZXJ0aWVzLCAxKSwgJHByb3BlcnRpZXMpO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSBpbiAkcHJvcGVydGllcyB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWVcbiAgfVxufVxuIiwiLy8gIE1vZHVsZSBTY2FsZSBhbmQgYmFzZSBmb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJGJhc2UtZm9udC1zaXplOiAgIDE0cHg7XG4kaWRlYWwtZm9udC1zaXplOiAgMjJweDtcbi8vICRiYXNlLWxpbmUtaGVpZ2h0OiBtcygxLCAkYmFzZS1mb250LXNpemUpO1xuXG4kcmh5dGhtLXVuaXQ6IFwicmVtXCI7XG4kcmh5dGhtLWdhcDogOHB4O1xuJHJlbS13aXRoLXB4LWZhbGxiYWNrOiBmYWxzZTtcblxuJHNjdXQtcmVtLWJhc2U6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZS1mb250LXNpemUpO1xuXG5cbi8vIHt7IENvbXBvbmVudCBzaXplIH19XG4kZ2xvYmFsLXJhZGl1czogM3B4O1xuIiwiLy8gIEdyaWQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG5cbiRsYXlvdXQtYmFzZTogKFxuICBndXR0ZXJzOiAxLzUsXG4gIGNvbHVtbi13aWR0aDogODBweCxcbiAgLy8gZ3V0dGVyLXBvc2l0aW9uOiBpbnNpZGUtc3RhdGljLFxuICBkZWJ1ZzogKFxuICAgIC8vIGltYWdlOiBzaG93LFxuICApLFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IHRydWUsXG4gICAgcmVtOiBmYWxzZSxcbiAgKSxcbik7XG4kc3VzeTogbGF5b3V0KDUgJGxheW91dC1iYXNlKTtcblxuLy8ge3sgRWxlbWVudCB0d2ljayBwb2ludHMgfX1cblxuLy8ge3sgRGV2aWNlIGxheW91dHMgfX1cbiRzdXN5LW1lZGlhOiAoXG4gICdtb2JpbGUnOiAnKG1heC13aWR0aDogNDE0cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6ICcobWF4LXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiAnKG1heC13aWR0aDogMTAyNHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3RhYmxldCc6ICcobWluLXdpZHRoOiA3NjhweCknLFxuICAndGFibGV0LXBvcnRyYWl0LW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ2Rlc2t0b3AnOiAnKG1pbi13aWR0aDogMTIwMHB4KScsXG4gICdjYXRlZ29yeS1tZW51JzogJyhtaW4td2lkdGg6IDEwMjRweCknXG4pO1xuJHRhYmxldDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgdGFibGV0KSxcbiAgbGF5b3V0OiA5IC41XG4pO1xuJHRhYmxldC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCR0YWJsZXQsIGxheW91dCkpO1xuJGRlc2t0b3A6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIGRlc2t0b3ApLFxuICBsYXlvdXQ6IDEyIDEuNSBzcGxpdFxuKTtcbiRkZXNrdG9wLWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJGRlc2t0b3AsIGxheW91dCkpO1xuJGRlc2t0b3AtZ3JpZC1wYWRkaW5nOiBzY3V0LXJlbSgxNSk7XG5cbi8vICB7eyBMYXllcnMgLS0tLS0tIH19XG4kbGF5ZXJzOiAoXG4gIGJhc2UsXG4gIGhlYWRlci1tZW51LFxuICBkcmF3ZXIsXG4gIGRyYXdlci1zaGFkb3csXG4gIGRyYXdlci1uYXYsXG4pOyIsIi8vICBTZXR0aW5nc1xuLy8gID09PT09PT09XG5cbiRjb2xvci1saWdodC1zYXR1cmF0aW9uOiA5MyU7XG5cbi8vICBDb2xvcnNcbi8vICA9PT09PT1cblxuJGdyYXktYmFzZTogICAgICMwMDAgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrZXI6ICAgdGludCgkZ3JheS1iYXNlLCAxMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrOiAgICAgdGludCgkZ3JheS1iYXNlLCAyMCUpICAgIWRlZmF1bHQ7XG4kZ3JheTogICAgICAgICAgdGludCgkZ3JheS1iYXNlLCAzMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodDogICAgdGludCgkZ3JheS1iYXNlLCA0Ni41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodGVyOiAgdGludCgkZ3JheS1iYXNlLCA5My41JSkgIWRlZmF1bHQ7XG5cbi8vICBUZXh0c1xuLy8gIC0tLS0tXG5cbiR0ZXh0LWNvbG9yOiAkZ3JheS1kYXJrO1xuXG4vLyAgUGFsbGV0ZVxuLy8gIC0tLS0tLS0tLS0tXG5cbiRibHVlOiAjMmQ2ZWM2O1xuJGJsdWUtZGFyazogcmdiKDAsIDY5LCAxNjQpO1xuJGJsdWUtbGlnaHQ6ICNkOGU5ZmY7XG4keWVsbG93OiAjZmM5NjAwO1xuJHllbGxvdy1kYXJrOiAjYjg2ZTAwO1xuJHllbGxvdy1saW5rOiAjZmZkODAwO1xuJG9yYW5nZTogI2ZjNDcwMDtcbiRvcmFuZ2UtZGFyazogI2I4NmUwMDtcbiRyZWQ6IHJnYigyMDYsIDY4LCA2Mik7XG4kZ3JlZW46IHJnYigyOCwgMTQ5LCAyMik7XG4kcGluazogcmdiKDE5NywgMzEsIDEyNCk7XG5cbiRwcmltYXJ5OiBzaGFkZSgjNDI4YmNhLCA2LjUlKTtcbiRzdWNjZXNzOiAjNWNiODVjO1xuJGluZm86ICAgICM1YmMwZGM7XG4kd2FybmluZzogI2YwYWQ0ZTtcbiRkYW5nZXI6ICAjZDk1MzRmO1xuXG4kaW5wdXQtYm9yZGVyOiAjZTRlNGU0O1xuJGJvcmRlci1ncmF5OiAjOTE5MTkxO1xuJGJhY2tncm91bmQtZ3JheTogI2U5ZTllOTtcblxuLy8gIExpbmtzXG4vLyAgLS0tLS1cblxuJGxpbmstY29sb3I6ICAgICAgICAgICAjMDAwICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICBzaGFkZSgkbGluay1jb2xvciwgMTUlKSAhZGVmYXVsdDtcbiRsaW5rLWZvY3VzLWNvbG9yOiAgICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLWFjdGl2ZS1jb2xvcjogICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLXZpc2l0ZWQtY29sb3I6ICAgJGdyYXktZGFyayAhZGVmYXVsdDtcblxuLy8gIE5Qcm9ncmVzc1xuLy8gIC0tLS0tLS0tLVxuJG5wcm9ncmVzcy1jb2xvcjogICAgJHByaW1hcnk7XG4iLCIvLyAgRm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiAgIHJpZ2h0O1xuXG4vLyDlg4Xph53lsI3oi7Hmlodcbi8vIEBmb250LWZhY2Uge1xuLy8gICBmb250LWZhbWlseTogRW5nbGlzaDtcbi8vICAgdW5pY29kZS1yYW5nZTogVSswMC0wMjRGO1xuLy8gICBzcmM6IGxvY2FsKEhlbHZldGljYSk7XG4vLyB9XG5cbiRzYW5zOiAgICBIZWx2ZXRpY2FOZXVlLUxpZ2h0XG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUgTGlnaHQnXG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUnXG4gICAgICAgLCAgSGVsdmV0aWNhXG4gICAgICAgLCAnSGVpdGkgVEMnXG4gICAgICAgLCAnTGlIZWkgUHJvJ1xuICAgICAgICwgJ01pY3Jvc29mdCBKaGVuZ0hlaSdcbiAgICAgICAsICflvq7ou5/mraPpu5Hpq5QnXG4gICAgICAgLCAgQXJpYWxcbiAgICAgICAsICBzYW5zLXNlcmlmO1xuXG4kc2VyaWY6ICAnUFQgU2VyaWYnXG4gICAgICAgLCBHZW9yZ2lhXG4gICAgICAgLCBUaW1lc1xuICAgICAgICwgJ1RpbWVzIE5ldyBSb21hbidcbiAgICAgICAsICdTb25ndGkgVEMnXG4gICAgICAgLCAnSGlyYWdpbm8gTWluY2hvIFByb04nXG4gICAgICAgLCBzZXJpZjtcblxuJGJhc2UtZm9udC1mYW1pbHk6ICRzYW5zOyJdLCJtYXBwaW5ncyI6IkE4Q0FBOzs7OztFQUtFO0FENkNFLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtFN0N2Q0UsQUFBQSxrQkFBa0IsQ0FBQztJQUV2QyxPQUFPLEVBQUUsSUFBSztJQUNkLFNBQVMsRUFBRSxRQUFTO0lBQ3BCLGVBQWUsRUFBRSxhQUFjLEdBRWxDOztBQUNELEFBQUEsVUFBVSxDQUFDO0VBQ1QsT0FBTyxFQUFFLElBQUs7RUFDZCxTQUFTLEVBQUUsYUFBYztFQUN6QixXQUFXLEVBQUUsTUFBTztFQUNwQixPQUFPLEVDbkJ3QixHQUFXO0VEb0IxQyxhQUFhLEVDcEJrQixHQUFXO0VEcUIxQyxRQUFRLEVBQUUsUUFBUztFQUNuQixnQkFBZ0IsRWtFa0JBLE9BQU8sR2xFVnhCO0U2Q2lCRyxNQUFNLEVBQUwsU0FBUyxFQUFFLEtBQUs7STdDaENyQixBQUFBLFVBQVUsQ0FBQztNQVNQLFNBQVMsRUFBRSxVQUFXO01BQ3RCLFdBQVcsRUFBRSxPQUFRLEdBS3hCO0U2Q2lCRyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07STdDaEN0QixBQUFBLFVBQVUsQ0FBQztNQWFQLEtBQUssRUFBRSxlQUFJLEdBRWQ7O0FBQ0QsQUFBQSxxQkFBcUIsQ0FBQztFQUNwQixJQUFJLEVBQUUsU0FBVSxHQUVqQjtFNkNhRyxNQUFNLEVBQUwsU0FBUyxFQUFFLEtBQUs7STdDaEJyQixBQUFBLHFCQUFxQixDQUFDO01BRUssSUFBSSxFQUFFLFdBQVksR0FDNUM7O0FBQ0QsQUFBQSwyQkFBMkIsQ0FBQztFQUMxQixJQUFJLEVBQUUsR0FBSTtFQUNWLFdBQVcsRUNyQ29CLEdBQVc7RURzQzFDLFdBQVcsRUN0Q29CLElBQVcsR0QwQzNDO0U2Q0tHLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztJN0NackIsQUFBQSwyQkFBMkIsQ0FBQztNQUt4QixXQUFXLEVDeENrQixJQUFXLEdEMEMzQzs7QUFDRCxBQUFBLG1CQUFtQixDQUFDO0VBQ2xCLE1BQU0sRUFBRSxDQUFFO0VBQ1YsSUFBSSxFQUFFLFFBQVMsR0FDaEI7O0FBQ0QsQUFBQSxtQkFBbUIsQ0FBQztFQUFDLFVBQVUsRUFBRSxDQUFFLEdBQUc7O0FBQ3RDLEFBQUEsaUJBQWlCLENBQUM7RUFDaEIsT0FBTyxFQUFFLElBQUs7RUFDZCxXQUFXLEVBQUUsTUFBTztFQUNwQixJQUFJLEVBQUUsa0JBQW1CO0VBQ3pCLElBQUksRUFBRSxTQUFVO0VBQ2hCLFFBQVEsRUFBRSxRQUFRLENDckRhLElBQVcsQ0FBWCxHQUFXLENBRnBCLENBQU8sQ0FBUCxDQUFPO0VEd0Q3QixnQkFBZ0IsRWtFMUJaLE9BQUcsR2xFNEJSO0VBUkQsQUFPRSxpQkFQZSxDQU9mLEtBQUssQ0FBQztJQUFFLE1BQU0sRUFBRSxJQUFLLEdBQUkiLCJuYW1lcyI6W119 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.post-preview__count,
.post-preview__reporter,
.post-preview__summary {
  display: none; }

.post-preview {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex; }

.post-preview__thumbnail {
  max-width: 40%; }

.post-preview img { width: 160px; height: 109px; }

@media (min-width: 768px) {
  .post-preview img { width: 242px; height: 165px; }
  .post-preview__thumbnail { max-width: none; } }
@media (min-width: 1200px) {
  .news-list .post-preview__thumbnail {
    width: 242px;
    height: 165px;
    object-position: 50% 15%; } }

.post-preview__content {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: row wrap;
  flex-flow: row wrap;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  -webkit-box-flex: 1;
  -ms-flex: 1 0;
  flex: 1 0;
  padding-left: 16px; }

@media (min-width: 768px) {
  .post-preview__content {
    -ms-flex-line-pack: start;
    align-content: flex-start; } }
.post-preview__title {
  margin-top: auto;
  margin-bottom: auto;
  font-size: 18px; }

@media (min-width: 768px) {
  .post-preview__title {
    margin-top: 0;
    margin-bottom: 0;
    width: 100%; } }
.post-preview__more {
  text-decoration: underline;
  color: #2d6ec6; }

@media (min-width: 768px) {
  .post-preview__reporter,
  .post-preview__summary {
    display: block;
    margin: 0; } }
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX3Bvc3QtcHJldmlldy5zY3NzIiwic291cmNlcyI6WyIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fcG9zdC1wcmV2aWV3LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX21peGlucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19jbGFzc2VzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2N1dC9kaXN0L19zY3V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL190b29sa2l0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BsYWNlaG9sZGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fZm9udHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9faW50cmluc2ljLXJhdGlvLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX25lc3RlZC1jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BhcmFsbGF4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3J0bC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190YXJnZXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdHJpYW5nbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2VudGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3ZpZXdwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3VuZGVybGluZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19hcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0LW11bHRpcGxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3NjYWxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2ZvbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tIHZlbmRvciBtaXhpbiBsaWJyYXJpZXMgLS0tLVxuQGltcG9ydCBcIm1peGluc1wiLFxuICAgICAgICBcImNsYXNzZXNcIixcbiAgICAgICAgXCJ+c3VzeVwiLFxuICAgICAgICBcIn5zY3V0XCIsXG4gICAgICAgIFwifnNhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0XCI7XG5cbi8vIC0tLS0gdmFyaWFibGVzIGFuZCBjb25maWcgLS0tLVxuQGltcG9ydCBcInNldHRpbmdzL3NjYWxlXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZ3JpZFwiLFxuICAgICAgICBcInNldHRpbmdzL2NvbG9yc1wiLFxuICAgICAgICBcInNldHRpbmdzL2ZvbnRcIjsucG9zdC1wcmV2aWV3X19wdWJsaXNoLXRpbWUsXG4ucG9zdC1wcmV2aWV3X19jb3VudCxcbi5wb3N0LXByZXZpZXdfX3JlcG9ydGVyLFxuLnBvc3QtcHJldmlld19fc3VtbWFyeSB7IGRpc3BsYXk6IG5vbmU7IH1cblxuLnBvc3QtcHJldmlldyB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG4ucG9zdC1wcmV2aWV3X190aHVtYm5haWwge1xuICBtYXgtd2lkdGg6IDQwJTtcbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7IG1heC13aWR0aDogbm9uZTsgfVxuICBAaW5jbHVkZSBzdXN5KCRkZXNrdG9wKSB7XG4gICAgLm5ld3MtbGlzdCAmIHsgbWF4LXdpZHRoOiAxNjBweDsgfSBcbiAgfVxufVxuLnBvc3QtcHJldmlld19fY29udGVudCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZmxleDogMSAwO1xuICBwYWRkaW5nLWxlZnQ6IHIoMik7XG4gIEBpbmNsdWRlIHN1c3koJHRhYmxldCkge1xuICAgIGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIH1cbn1cbi5wb3N0LXByZXZpZXdfX3RpdGxlIHtcbiAgbWFyZ2luOiBhdXRvIG4oKTtcbiAgZm9udC1zaXplOiAxOHB4O1xuICBAaW5jbHVkZSBzdXN5KCR0YWJsZXQpIHtcbiAgICBtYXJnaW46IDAgbigpO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG4ucG9zdC1wcmV2aWV3X19tb3JlIHsgdGV4dDogdW5kZXJsaW5lICRibHVlOyB9XG5cbkBpbmNsdWRlIHN1c3koJHRhYmxldCkge1xuICAucG9zdC1wcmV2aWV3X19yZXBvcnRlcixcbiAgLnBvc3QtcHJldmlld19fc3VtbWFyeSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG4iLCIvLyB7e1Nhc3MgbWl4aW5zIC0tLS0tLS0tfX1cbkBmdW5jdGlvbiBuKCkgeyBAcmV0dXJuIHVucXVvdGUoXCIqXCIpOyB9XG5cbkBmdW5jdGlvbiByKCR0aW1lczogMSkgeyBAcmV0dXJuICRyaHl0aG0tZ2FwICogJHRpbWVzOyB9XG5cbkBtaXhpbiBzdXN5KCRtYXApIHtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJG1hcCwgcXVlcnkpLCBtYXAtZ2V0KCRtYXAsIGxheW91dCkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gcmV2ZXJzZS1oaWRlLXZpc3VhbGx5KCkge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG59XG5cbkBtaXhpbiBzaGFyZS1icmVha3BvaW50cygkbWFwLCAkY3NzcHJvcDogY29udGVudCkge1xuICAkZGVzY3JpcHRpb246ICcnO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRtYXAge1xuICAgIEBpZiAkZGVzY3JpcHRpb24gIT0gICcnIHtcbiAgICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJyB8ICc7XG4gICAgfVxuICAgIFxuICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJHByb3BlcnR5ICsnOiAnKyBpbnNwZWN0KCR2YWx1ZSk7XG4gIH1cblxuICBkaXNwbGF5OiBub25lO1xuICAjeyRjc3Nwcm9wfTogICRkZXNjcmlwdGlvbjtcbn1cblxuQG1peGluIHRvZ2dsZS1mYWRlKCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICB9XG59XG5cbkBtaXhpbiB0b2dnbGUtc2hvdygpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAwO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgfSAgXG59XG5cbkBtaXhpbiBzaG93KCkge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgaGVpZ2h0OiBhdXRvOyAgXG59XG5cbkBtaXhpbiBpbnB1dC1wbGFjZWhvbGRlcigpIHtcbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgXG4gICY6Oi1tb3otcGxhY2Vob2xkZXIsXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbn1cblxuQG1peGluIGRlYnVnKCRjb2xvcjogI2ZmZiByZ2JhKHRvbWF0bywgLjMpKSB7XG4gIGNvbG9yOiAkY29sb3Jcbn1cblxuQG1peGluIGxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpO1xuICA+IGxpICsgbGk6YmVmb3JlIHsgbWFyZ2luLWxlZnQ6ICRzcGFjZSArIDRweDsgfVxufVxuIiwiQG1peGluIEhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG5AbWl4aW4gU2VsZWN0IHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgcGFkZGluZzogMCByKDIpIDAgcigxKTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgLy8gaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICAvLyBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAvLyBiYWNrZ3JvdW5kOiB1cmwoXCJpbWFnZXMvYXJyb3ctZG93bi5zdmdcIilcbiAgLy8gICAgICAgICAgIDkyJSA1MCUgLyA4cHggMTBweFxuICAvLyAgICAgICAgICAgbm8tcmVwZWF0XG4gIC8vICAgICAgICAgICB0cmFuc3BhcmVudDtcbiAgLm5vLWNzcy1hcHBlYXJhbmNlICYge1xuICAgIEBpbmNsdWRlIHNjdXQtcGFkZGluZyhuIDApO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIE5vcm1hbGl6ZSgpIHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lIHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwO1xufSIsIi8vIFN1c3lcbi8vID09PT1cblxuQGltcG9ydCAnc3VzeS9sYW5ndWFnZS9zdXN5JztcbiIsIi8vIFN1c3kgTmV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuJHN1c3ktdmVyc2lvbjogMi4xO1xuXG5AaW1wb3J0IFwiLi4vc3VcIjtcbkBpbXBvcnQgXCIuLi9vdXRwdXQvZmxvYXRcIjtcblxuQGltcG9ydCBcInN1c3kvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdXN5L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdXN5L2dyaWRzXCI7XG5AaW1wb3J0IFwic3VzeS9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VzeS9jb250ZXh0XCI7XG5AaW1wb3J0IFwic3VzeS9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VzeS9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzdXN5L3NwYW5cIjtcbkBpbXBvcnQgXCJzdXN5L2d1dHRlcnNcIjtcbkBpbXBvcnQgXCJzdXN5L2lzb2xhdGVcIjtcbkBpbXBvcnQgXCJzdXN5L2dhbGxlcnlcIjtcbkBpbXBvcnQgXCJzdXN5L3Jvd3NcIjtcbkBpbXBvcnQgXCJzdXN5L21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzdXN5L3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2JsZWVkXCI7XG5AaW1wb3J0IFwic3VzeS9icmVha3BvaW50LXBsdWdpblwiO1xuIiwiLy8gU3Vcbi8vID09XG5cbkBpbXBvcnQgXCJzdS91dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJzdS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdS9ncmlkXCI7XG4iLCIvLyBNYXAgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gVHJ1bmNhdGUgTGlzdFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSBsaXN0LCB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBsZW5ndGhcbkBmdW5jdGlvbiBfc3VzeS10cnVuY2F0ZS1saXN0KFxuICAkbGlzdCxcbiAgJGxlbmd0aFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGlzdCkge1xuICAgICRfcmV0dXJuOiBpZigkaSA8PSAkbGVuZ3RoLCBhcHBlbmQoJF9yZXR1cm4sIG50aCgkbGlzdCwgJGkpKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIEdldFxuLy8gLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtZ2V0KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiAkbWFwO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiB0eXBlLW9mKCRfcmV0dXJuKSA9PSBtYXAge1xuICAgICAgJF9yZXR1cm46IG1hcC1nZXQoJF9yZXR1cm4sICRrZXkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBTZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFNldCBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLXNldChcbiAgJG1hcCxcbiAgJGtleXMtdmFsdWUuLi5cbikge1xuICAkX3ZhbHVlOiBudGgoJGtleXMtdmFsdWUsIC0xKTtcbiAgJF9rZXlzOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRrZXlzLXZhbHVlLCBsZW5ndGgoJGtleXMtdmFsdWUpIC0gMSk7XG4gICRfbGVuZ3RoOiBsZW5ndGgoJF9rZXlzKTtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJF9sZW5ndGgge1xuICAgICRfbjogMCAtICRpO1xuICAgICRfbGV2ZWw6IF9zdXN5LXRydW5jYXRlLWxpc3QoJF9rZXlzLCAkX2xlbmd0aCArICRfbik7XG4gICAgJF9sZXZlbDogX3N1c3ktZGVlcC1nZXQoJG1hcCwgJF9sZXZlbC4uLik7XG4gICAgJF9tZXJnZTogbnRoKCRfa2V5cywgJF9uKTtcbiAgICAkX21lcmdlOiAoJF9tZXJnZTogJF92YWx1ZSk7XG4gICAgJF9yZXR1cm46IGlmKCRfbGV2ZWwsIG1hcC1tZXJnZSgkX2xldmVsLCAkX21lcmdlKSwgJF9tZXJnZSk7XG4gICAgJF92YWx1ZTogJF9yZXR1cm47XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgTWVyZ2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiAyIG9iamVjdHMgb2YgYW55IGRlcHRoLCBtZXJnZWRcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLW1lcmdlKFxuICAkbWFwMSxcbiAgJG1hcDJcbikge1xuXG4gIEBpZiB0eXBlLW9mKCRtYXAxKSAhPSBtYXAgb3IgdHlwZS1vZigkbWFwMikgIT0gbWFwIHtcbiAgICAkbWFwMTogJG1hcDI7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwMiB7XG4gICAgICAkX25ldzogKCRrZXk6IF9zdXN5X2RlZXAtbWVyZ2UobWFwLWdldCgkbWFwMSwgJGtleSksICR2YWx1ZSkpO1xuICAgICAgJG1hcDE6IG1hcC1tZXJnZSgkbWFwMSwgJF9uZXcpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG1hcDE7XG59XG5cblxuLy8gRGVlcCBIYXMtS2V5XG4vLyAtLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIHRydWUgaWYgYSBkZWVwIGtleSBleGlzdHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWhhcy1rZXkoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46IG51bGw7XG4gICRfc3RvcDogZmFsc2U7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIG5vdCgkX3N0b3ApIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KTtcbiAgICB9XG5cbiAgICBAaWYgJF9yZXR1cm4ge1xuICAgICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfc3RvcDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU2V0dGluZ3Ncbi8vID09PT09PT09XG5cbi8vIFZlcnNpb25cbi8vIC0tLS0tLS1cbiRzdS12ZXJzaW9uOiAxLjE7XG5cblxuLy8gRGVmYXVsdCBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVGhlIGJhc2ljIHNldHRpbmdzXG4kc3VzeS1kZWZhdWx0czogKFxuICBjb2x1bW5zOiA0LFxuICBndXR0ZXJzOiAuMjUsXG4pO1xuXG5cbi8vIFVzZXIgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gRGVmaW5lIHRoZSAkc3VzeSB2YXJpYWJsZSB3aXRoIGEgbWFwIG9mIHlvdXIgb3duIHNldHRpbmdzLlxuLy8gLSBTZXQgRUlUSEVSICRjb2x1bW4td2lkdGggT1IgJGNvbnRhaW5lclxuLy8gLSBVc2UgJGNvbHVtbi13aWR0aCBmb3Igc3RhdGljIGxheW91dHNcbiRzdXN5OiAoKSAhZGVmYXVsdDtcblxuXG4vLyBTdXN5IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBBZGQgZGVmYXVsdHMgdG8gU3VzeVxuQG1peGluIHN1c3ktZGVmYXVsdHMoXG4gICRkZWZhdWx0c1xuKSB7XG4gICRzdXN5LWRlZmF1bHRzOiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRkZWZhdWx0cykgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IFNldFxuLy8gLS0tLS0tLS1cbi8vIENoYW5nZSBvbmUgc2V0dGluZ1xuLy8gLSAka2V5ICAgOiBzZXR0aW5nIG5hbWVcbi8vIC0gJHZhbHVlIDogc2V0dGluZyB2YWx1ZVxuQG1peGluIHN1c3ktc2V0KFxuICAka2V5LXZhbHVlLi4uXG4pIHtcbiAgJHN1c3k6IF9zdXN5LWRlZXAtc2V0KCRzdXN5LCAka2V5LXZhbHVlLi4uKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgR2V0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJuIG9uZSBzZXR0aW5nIGZyb20gYSBncmlkXG4vLyAtICRrZXkgICAgIDogPGtleXdvcmQ+XG4vLyAtICRsYXlvdXQgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIHN1c3ktZ2V0KFxuICAka2V5LFxuICAkbGF5b3V0OiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRzdXN5KVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfb3B0aW9uczogJGxheW91dCAkc3VzeSAkc3VzeS1kZWZhdWx0cztcbiAgJF9icmVhazogZmFsc2U7XG4gICRfcmV0dXJuOiBudWxsO1xuXG4gIEBlYWNoICRvcHQgaW4gJF9vcHRpb25zIHtcbiAgICBAaWYgdHlwZS1vZigkb3B0KSA9PSBtYXAgYW5kIG5vdCgkX2JyZWFrKSB7XG4gICAgICAkX2tleXNldDogX3N1c3ktZGVlcC1oYXMta2V5KCRvcHQsICRrZXkuLi4pO1xuICAgICAgQGlmICRfa2V5c2V0IHtcbiAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtZ2V0KCRvcHQsICRrZXkuLi4pO1xuICAgICAgICAkX2JyZWFrOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBNYXRoIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PVxuXG5cbi8vIFZhbGlkIENvbHVtbnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBjb2x1bW4gc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW5zKFxuICAkY29sdW1ucyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkY29sdW1ucyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGNvbHVtbnMpIHtcbiAgICAkcmV0dXJuOiAkY29sdW1ucztcbiAgfSBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAkZmFpbDogbnVsbDtcbiAgICBAZWFjaCAkY29sIGluICRjb2x1bW5zIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRjb2wpID09IG51bWJlciB7XG4gICAgICAgICRmYWlsOiAkZmFpbCBvciBpZih1bml0bGVzcygkY29sKSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGZhaWw6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgICRyZXR1cm46IGlmKCRmYWlsLCAkcmV0dXJuLCAkY29sdW1ucyk7XG4gIH1cblxuICBAaWYgJHJldHVybiAhPSAkY29sdW1ucyBhbmQgbm90KCRzaWxlbnQpIHtcbiAgICAkcmV0dXJuOiBudWxsO1xuICAgICR3YXJuOiAnJGNvbHVtbnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlciBvciBsaXN0IG9mIHVuaXRsZXNzIG51bWJlcnMuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRjb2x1bW5zfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cblxuLy8gVmFsaWQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGd1dHRlciBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWd1dHRlcnMoXG4gICRndXR0ZXJzLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRndXR0ZXJzKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkZ3V0dGVycykge1xuICAgICRyZXR1cm46ICRndXR0ZXJzO1xuICB9IEBlbHNlIGlmIG5vdCgkc2lsZW50KSB7XG4gICAgJHdhcm46ICckZ3V0dGVycyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skZ3V0dGVyc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQ29sdW1uIG1hdGhcbi8vID09PT09PT09PT09XG5cblxuLy8gSXMgU3ltbWV0cmljYWxcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgYSBncmlkIGlzIHN5bW1ldHJpY2FsLlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIGlzLXN5bW1ldHJpY2FsKFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaWYodHlwZS1vZigkY29sdW1ucykgPT0gbnVtYmVyLCAkY29sdW1ucywgbnVsbCk7XG59XG5cblxuLy8gU3VzeSBDb3VudFxuLy8gLS0tLS0tLS0tLVxuLy8gRmluZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gYSBnaXZlbiBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LWNvdW50KFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpIG9yIGxlbmd0aCgkY29sdW1ucyk7XG59XG5cblxuLy8gU3VzeSBTdW1cbi8vIC0tLS0tLS0tXG4vLyBGaW5kIHRoZSB0b3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeS1zdW0oXG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcblxuICAkc3ByZWFkOiBpZigkc3ByZWFkID09IHdpZGUsIDAsIGlmKCRzcHJlYWQgPT0gd2lkZXIsIDEsIC0xKSk7XG4gICRndXR0ZXItc3VtOiAoc3VzeS1jb3VudCgkY29sdW1ucykgKyAkc3ByZWFkKSAqICRndXR0ZXJzO1xuICAkY29sdW1uLXN1bTogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gIEBpZiBub3QoJGNvbHVtbi1zdW0pIHtcbiAgICBAZWFjaCAkY29sdW1uIGluICRjb2x1bW5zIHtcbiAgICAgICRjb2x1bW4tc3VtOiAoJGNvbHVtbi1zdW0gb3IgMCkgKyAkY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi1zdW0gKyAkZ3V0dGVyLXN1bTtcbn1cblxuXG4vLyBTdXN5IFNsaWNlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgb2YgY29sdW1ucyBhdCBhIGdpdmVuIGxvY2F0aW9uLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktc2xpY2UoXG4gICRzcGFuLFxuICAkbG9jYXRpb24sXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJHN1Yi1jb2x1bW5zOiAkc3BhbjtcblxuICBAaWYgbm90KGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSkge1xuICAgICRsb2NhdGlvbjogJGxvY2F0aW9uIG9yIDE7XG4gICAgJHN1Yi1jb2x1bW5zOiAoKTtcbiAgICBAZm9yICRpIGZyb20gJGxvY2F0aW9uIHRvICgkbG9jYXRpb24gKyAkc3Bhbikge1xuICAgICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRpKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3ViLWNvbHVtbnM7XG59XG5cblxuLy8gU3VzeVxuLy8gLS0tLVxuLy8gRmluZCB0aGUgc3VtIG9mIGEgY29sdW1uLXNwYW4uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbiAgICAgOiBmYWxzZSxcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgICAgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICAgICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAkc3Bhbjogc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG5cbiAgQHJldHVybiBzdXN5LXN1bSgkc3BhbiwgJGd1dHRlcnMsICRzcHJlYWQpO1xufVxuIiwiLy8gRmxvYXQgQVBJXG4vLyA9PT09PT09PT1cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5AaW1wb3J0IFwiZmxvYXQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiZmxvYXQvc3BhblwiO1xuQGltcG9ydCBcImZsb2F0L2VuZFwiO1xuQGltcG9ydCBcImZsb2F0L2lzb2xhdGVcIjtcbiIsIi8vIFNoYXJlZCBBUElcbi8vID09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnRcIjtcblxuQGltcG9ydCBcInNoYXJlZC9pbnNwZWN0XCI7XG5AaW1wb3J0IFwic2hhcmVkL291dHB1dFwiO1xuQGltcG9ydCBcInNoYXJlZC9kaXJlY3Rpb25cIjtcbkBpbXBvcnQgXCJzaGFyZWQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInNoYXJlZC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzaGFyZWQvbWFyZ2luc1wiO1xuQGltcG9ydCBcInNoYXJlZC9wYWRkaW5nXCI7XG5cblxuXG4iLCIvLyBTdXN5IEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnQvc3VwcG9ydFwiO1xuQGltcG9ydCBcInN1cHBvcnQvcHJlZml4XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9yZW1cIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2NsZWFyZml4XCI7XG4iLCIvLyBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IFN1cHBvcnQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogZmFsc2UsXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kLW9wdGlvbnM6IGZhbHNlLFxuICAgIGJyZWFrcG9pbnQ6IHRydWUsXG4gICAgYm94LXNpemluZzogdHJ1ZSxcbiAgICByZW06IHRydWUsXG4gICksXG4pKTtcblxuXG4vLyBTdXN5IFN1cHBvcnQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlbmQgcHJvcGVydHktdmFsdWUgcGFpcnMgdG8gdGhlIHByb3BlciBzdXBwb3J0IG1vZHVsZXMuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1zdXBwb3J0KFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gIC8vIEJhY2tncm91bmQgU3VwcG9ydFxuICBAaWYgJHByb3AgPT0gYmFja2dyb3VuZC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWltYWdlKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtc2l6ZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLXNpemUoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1vcmlnaW4ge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1jbGlwIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtY2xpcCgkdmFsKTtcbiAgfVxuXG4gIC8vIEJveC1TaXppbmcgU3VwcG9ydFxuICBAZWxzZSBpZiAkcHJvcCA9PSBib3gtc2l6aW5nIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJveC1zaXppbmcoJHZhbCk7XG4gIH1cblxuICAvLyBSZW0gU3VwcG9ydFxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJHByb3AsICR2YWwpO1xuICB9XG59XG5cblxuLy8gU3VzeSBTdXBwb3J0IFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3Igc3VwcG9ydCBvZiBhIGZlYXR1cmUuXG4vLyAtICRmZWF0dXJlICAgICAgIDogPHN0cmluZz5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyBcInJlbVwiIG9yIFwiYm94LXNpemluZ1wiXG4vLyAtICRyZXF1aXJlbWVudHMgIDogPG1hcD5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyAodmFyaWFibGU6IHJlbS13aXRoLXB4LWZhbGxiYWNrLCBtaXhpbjogcmVtKVxuLy8gLSAkd2FybiAgICAgICAgICA6IDxib29sPlxuQGZ1bmN0aW9uIHN1c3ktc3VwcG9ydChcbiAgJGZlYXR1cmUsXG4gICRyZXF1aXJlbWVudHM6ICgpLFxuICAkd2FybjogdHJ1ZVxuKSB7XG4gICRfc3VwcG9ydDogc3VzeS1nZXQodXNlLWN1c3RvbSAkZmVhdHVyZSk7XG5cbiAgQGlmICRfc3VwcG9ydCB7XG4gICAgJF9mYWlsOiBmYWxzZTtcblxuICAgIEBlYWNoICRfdHlwZSwgJF9yZXEgaW4gJHJlcXVpcmVtZW50cyB7XG4gICAgICBAZWFjaCAkX2kgaW4gJF9yZXEge1xuICAgICAgICAkX3Bhc3M6IGNhbGwodW5xdW90ZShcIiN7JF90eXBlfS1leGlzdHNcIiksICRfaSk7XG5cbiAgICAgICAgQGlmIG5vdCgkX3Bhc3MpIHtcbiAgICAgICAgICAkX2ZhaWw6IHRydWU7XG4gICAgICAgICAgQGlmICR3YXJuIHtcbiAgICAgICAgICAgIEB3YXJuIFwiWW91IHJlcXVlc3RlZCBjdXN0b20gc3VwcG9ydCBvZiAjeyRmZWF0dXJlfSwgYnV0IHRoZSAjeyRfaX0gI3skX3R5cGV9IGlzIG5vdCBhdmFpbGFibGUuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zdXBwb3J0OiBpZigkX2ZhaWwsIGZhbHNlLCAkX3N1cHBvcnQpO1xuICB9XG5cbiAgQHJldHVybiAkX3N1cHBvcnQ7XG59XG4iLCIvLyBTdXN5IFByZWZpeFxuLy8gPT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBzaW1wbGUgcHJlZml4ZWQgcHJvcGVydGllcy5cbi8vIC0gJHByb3AgICAgICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICAgICAgOiA8Y3NzIHZhbHVlPlxuLy8gLSBbJHByZWZpeF0gIDogPGJyb3dzZXIgcHJlZml4IGxpc3Q+XG5AbWl4aW4gc3VzeS1wcmVmaXgoXG4gICRwcm9wLFxuICAkdmFsLFxuICAkcHJlZml4OiBvZmZpY2lhbFxuKSB7XG4gIEBlYWNoICRmaXggaW4gJHByZWZpeCB7XG4gICAgJGZpeDogaWYoJGZpeCA9PSBvZmZpY2lhbCBvciBub3QoJGZpeCksICRwcm9wLCAnLSN7JGZpeH0tI3skcHJvcH0nKTtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkZml4LCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gQmFja2dyb3VuZCBQcm9wZXJ0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIEltYWdlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWltYWdlPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLWltYWdlLCAobWl4aW46IGJhY2tncm91bmQtaW1hZ2UpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS4uLik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgU2l6ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1zaXplPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1zaXplKFxuICAkc2l6ZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtc2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoJHNpemUpO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBPcmlnaW5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLW9yaWdpbj5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtb3JpZ2luKFxuICAkb3JpZ2luXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1vcmlnaW4pKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1vcmlnaW4oJG9yaWdpbik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkb3JpZ2luO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBDbGlwXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtY2xpcD5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtY2xpcChcbiAgJGNsaXBcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLWNsaXApKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1jbGlwKCRjbGlwKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcDtcbiAgfVxufVxuIiwiLy8gQm94IFNpemluZ1xuLy8gPT09PT09PT09PVxuXG4vLyBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJG1vZGVsOiA8Ym94LXNpemluZz5cbkBtaXhpbiBzdXN5LWJveC1zaXppbmcoXG4gICRtb2RlbDogY29udGVudC1ib3hcbikge1xuICBAaWYgJG1vZGVsIHtcbiAgICBAaWYgc3VzeS1zdXBwb3J0KGJveC1zaXppbmcsIChtaXhpbjogYm94LXNpemluZyksICR3YXJuOiBmYWxzZSkge1xuICAgICAgQGluY2x1ZGUgYm94LXNpemluZygkbW9kZWwpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByZWZpeDogKG1veiwgd2Via2l0LCBvZmZpY2lhbCk7XG4gICAgICBAaW5jbHVkZSBzdXN5LXByZWZpeChib3gtc2l6aW5nLCAkbW9kZWwsICRwcmVmaXgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRGVidWdnaW5nXG4vLyA9PT09PT09PT1cblxuLy8gU3VzeSBJbnNwZWN0XG4vLyAtLS0tLS0tLS0tLS1cbi8vIE91dHB1dCBhcmd1bWVudHMgcGFzc2VkIHRvIGEgaW5zcGVjdC5cbi8vIC0gJG1peGluICA6IDxzdXN5IG1peGluPlxuLy8gLSAkaW5zcGVjICAgOiA8bWl4aW4gYXJndW1lbnRzPlxuXG5AbWl4aW4gc3VzeS1pbnNwZWN0KFxuICAkbWl4aW4sXG4gICRpbnNwZWN0XG4pIHtcbiAgJHNob3c6IGZhbHNlO1xuXG4gIEBlYWNoICRpdGVtIGluICRpbnNwZWN0IHtcbiAgICBAaWYgaW5kZXgoJGl0ZW0sIGluc3BlY3QpIHtcbiAgICAgICRzaG93OiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2hvdyBvciBzdXN5LWdldChkZWJ1ZyBpbnNwZWN0KSB7XG4gICAgLXN1c3ktI3skbWl4aW59OiBpbnNwZWN0KCRpbnNwZWN0KTtcbiAgfVxufVxuIiwiLy8gT3V0cHV0XG4vLyA9PT09PT1cblxuLy8gT3V0cHV0XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBDU1Mgd2l0aCBwcm9wZXIgYnJvd3NlciBzdXBwb3J0LlxuLy8gLSAkc3R5bGVzICA6IDxtYXAgb2YgY3NzIHByb3BlcnR5LXZhbHVlIHBhaXJzPlxuQG1peGluIG91dHB1dChcbiAgJHN0eWxlc1xuKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsIGluICRzdHlsZXMge1xuICAgIEBpbmNsdWRlIHN1c3ktc3VwcG9ydCgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIERpcmVjdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEZsb3cgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgZmxvdzogbHRyLFxuKSk7XG5cbi8vIEdldCBEaXJlY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIG9yICd0bycgZGlyZWN0aW9uIG9mIGEgbHRyIG9yIHJ0bCBmbG93LlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuLy8gLSBbJGtleV0gICA6IGZyb20gfCB0b1xuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGtleTogZnJvbVxuKSB7XG4gICRyZXR1cm46IGlmKCRmbG93ID09IHJ0bCwgKGZyb206IHJpZ2h0LCB0bzogbGVmdCksIChmcm9tOiBsZWZ0LCB0bzogcmlnaHQpKTtcbiAgQHJldHVybiBtYXAtZ2V0KCRyZXR1cm4sICRrZXkpO1xufVxuXG4vLyBUb1xuLy8gLS1cbi8vIFJldHVybiB0aGUgJ3RvJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gdG8oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgdG8pO1xufVxuXG4vLyBGcm9tXG4vLyAtLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gZnJvbShcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCBmcm9tKTtcbn1cbiIsIi8vIEdyaWQgQmFja2dyb3VuZCBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cbi8vIC0gU3ViLXBpeGVsIHJvdW5kaW5nIGNhbiBsZWFkIHRvIHNldmVyYWwgcGl4ZWxzIHZhcmlhdGlvbiBiZXR3ZWVuIGJyb3dzZXJzLlxuXG4vLyBHcmlkIEJhY2tncm91bmQgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRpbWFnZTogYmFja2dyb3VuZC1pbWFnZVxuLy8gLSAkc2l6ZTogYmFja2dyb3VuZC1zaXplXG4vLyAtICRjbGlwOiBiYWNrZ3JvdW5kLWNsaXBcbi8vIC0gWyRmbG93XTogbHRyIHwgcnRsXG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkLW91dHB1dCAoXG4gICRpbWFnZSxcbiAgJHNpemU6IG51bGwsXG4gICRjbGlwOiBudWxsLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlLFxuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemUsXG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRjbGlwLFxuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogZnJvbSgkZmxvdykgdG9wLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFNoYXJlZCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICAgICAgICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGNvbnRhaW5lci1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICAkb3V0cHV0OiAoXG4gICAgI3skcHJvcGVydHl9OiAkd2lkdGggb3IgMTAwJSxcbiAgICBtYXJnaW4tbGVmdDogbnRoKCRqdXN0aWZ5LCAxKSxcbiAgICBtYXJnaW4tcmlnaHQ6IG50aCgkanVzdGlmeSwgMiksXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gTWFyZ2lucyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIE1hcmdpbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gbWFyZ2luLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3skZnJvbX06ICRiZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFBhZGRpbmcgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBQYWRkaW5nIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gcGFkZGluZy1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgQ29udGFpbmVyXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBmbG9hdC1jb250YWluZXIoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICBAaW5jbHVkZSBzdXN5LWNsZWFyZml4O1xuICBAaW5jbHVkZSBjb250YWluZXItb3V0cHV0KCR3aWR0aCwgJGp1c3RpZnksICRwcm9wZXJ0eSk7XG59XG4iLCIvLyBGbG9hdCBTcGFuIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgU3BhbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICR3aWR0aCAgICAgICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvYXRdICAgICAgICAgICA6IGZyb20gfCB0b1xuLy8gLSBbJG1hcmdpbi1iZWZvcmVdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJG1hcmdpbi1hZnRlcl0gICAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYmVmb3JlXSAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYWZ0ZXJdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICAgICAgICAgICAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1zcGFuLW91dHB1dChcbiAgJHdpZHRoLFxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb20sXG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbCxcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsLFxuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGwsXG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbCxcbiAgJGZsb3cgICAgICAgICAgICAgOiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0byAgICAgOiB0bygkZmxvdyk7XG4gICRmcm9tICAgOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGg6ICR3aWR0aCxcbiAgICBmbG9hdDogaWYoJGZsb2F0ID09IHRvLCAkdG8sIG51bGwpIG9yIGlmKCRmbG9hdCA9PSBmcm9tLCAkZnJvbSwgbnVsbCksXG4gICAgbWFyZ2luLSN7JGZyb219OiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJHBhZGRpbmctYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgRW5kcyBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRW5kIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgbGFzdC1mbG93OiB0byxcbikpO1xuXG4vLyBGbG9hdCBMYXN0XG4vLyAtLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtbGFzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAkbGFzdC1mbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBsYXN0LWZsb3cpLFxuICAkbWFyZ2luOiAwXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiBpZigkbGFzdC1mbG93ID09IHRvLCAkdG8sIG51bGwpLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4sXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG4vLyBGbG9hdCBGaXJzdFxuLy8gLS0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1maXJzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0je2Zyb20oJGZsb3cpfTogMCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBJc29sYXRpb24gQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIElzb2xhdGUgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkcHVzaCAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gaXNvbGF0ZS1vdXRwdXQoXG4gICRwdXNoLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogJGZyb20sXG4gICAgbWFyZ2luLSN7JGZyb219OiAkcHVzaCxcbiAgICBtYXJnaW4tI3skdG99OiAtMTAwJSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTdXN5IFNldHRpbmdzXG4vLyA9PT09PT09PT09PT09XG5cbi8vIFN1c3kgTGFuZ3VhZ2UgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogZmx1aWQsXG4gIG91dHB1dDogZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogY2VudGVyLFxuICBndXR0ZXItcG9zaXRpb246IGFmdGVyLFxuICBnbG9iYWwtYm94LXNpemluZzogY29udGVudC1ib3gsXG4gIGRlYnVnOiAoXG4gICAgaW1hZ2U6IGhpZGUsXG4gICAgY29sb3I6IHJnYmEoIzY2ZiwgLjI1KSxcbiAgICBvdXRwdXQ6IGJhY2tncm91bmQsXG4gICAgdG9nZ2xlOiB0b3AgcmlnaHQsXG4gICksXG4pKTtcblxuXG4vLyBWYWxpZCBLZXl3b3JkIFZhbHVlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURTogRE9OVCdUIFRPVUNIXG4kc3VzeS1rZXl3b3JkczogKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IHN0YXRpYyBmbHVpZCxcbiAgb3V0cHV0OiBpc29sYXRlIGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGxlZnQgY2VudGVyIHJpZ2h0LFxuICBmbG93OiBsdHIgcnRsLFxuICBndXR0ZXItcG9zaXRpb246IGJlZm9yZSBhZnRlciBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYyxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveCBjb250ZW50LWJveCxcbiAgc3BhbjogZnVsbCxcbiAgZWRnZTogZmlyc3QgYWxwaGEgbGFzdCBvbWVnYSBmdWxsLFxuICBzcHJlYWQ6IG5hcnJvdyB3aWRlIHdpZGVyLFxuICBndXR0ZXItb3ZlcnJpZGU6IG5vLWd1dHRlcnMgbm8tZ3V0dGVyLFxuICByb2xlOiBuZXN0LFxuICBjbGVhcjogYnJlYWsgbm9icmVhayxcbiAgZGVidWcgaW1hZ2U6IHNob3cgaGlkZSBzaG93LWNvbHVtbnMgc2hvdy1iYXNlbGluZSxcbiAgZGVidWcgb3V0cHV0OiBiYWNrZ3JvdW5kIG92ZXJsYXksXG4pO1xuXG5cbi8vIFBhcnNlIFN1c3kgS2V5d29yZHMgYW5kIE1hcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zZXR0aW5ncyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBzdHJpbmcge1xuICAgICAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHN1c3kta2V5d29yZHMge1xuICAgICAgICAgIEBpZiBpbmRleCgkdmFsdWUsICRpdGVtKSB7XG4gICAgICAgICAgICAkX2tleS12YWx1ZTogYXBwZW5kKCRrZXksICRpdGVtKTtcbiAgICAgICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLXNldCgkX3JldHVybiwgJF9rZXktdmFsdWUuLi4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgLy8gbWFwc1xuICAgICAgfSBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBtYXAge1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBDb2x1bW5zICYgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1sYXlvdXQoXG4gICRzaG9ydFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcbiAgJF9jb2x1bW5zOiAoKTtcbiAgJF9ndXR0ZXJzOiBudWxsO1xuXG4gIEBpZiBub3QodW5pdGxlc3MobnRoKG50aCgkc2hvcnQsIDEpLCAxKSkpIHtcbiAgICAkX2d1dHRlcnM6IG50aCgkc2hvcnQsIDEpO1xuICB9IEBlbHNlIHtcbiAgICAkX2NvbHVtbnM6IChjb2x1bW5zOiBudGgoJHNob3J0LCAxKSk7XG4gICAgJF9ndXR0ZXJzOiBpZihsZW5ndGgoJHNob3J0KSA+IDEsIG50aCgkc2hvcnQsIDIpLCAkX2d1dHRlcnMpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJF9ndXR0ZXJzKSA9PSBsaXN0IGFuZCBsZW5ndGgoJF9ndXR0ZXJzKSA+IDAge1xuICAgICRfZ3V0dGVyczogKFxuICAgICAgZ3V0dGVyczogbnRoKCRfZ3V0dGVycywgMikgLyBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICAgIGNvbHVtbi13aWR0aDogbnRoKCRfZ3V0dGVycywgMSksXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9ndXR0ZXJzOiBpZigkX2d1dHRlcnMsIChndXR0ZXJzOiAkX2d1dHRlcnMpLCAoKSk7XG4gIH1cblxuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2NvbHVtbnMpO1xuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2d1dHRlcnMpO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3JpZC9Db250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ncmlkKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46IHBhcnNlLXNldHRpbmdzKCRzaG9ydCk7XG4gICRfbGF5b3V0OiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIG51bWJlciBvciBsaXN0XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIG9yIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qge1xuICAgICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCBvciB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAgICRfbGF5b3V0OiBhcHBlbmQoJF9sYXlvdXQsICRpdGVtKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNvbnRhaW5lcjogJGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfbGF5b3V0OiBpZihsZW5ndGgoJF9sYXlvdXQpID4gMCwgcGFyc2UtbGF5b3V0KCRfbGF5b3V0KSwgJF9sYXlvdXQpO1xuICB9XG5cbiAgQHJldHVybiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfbGF5b3V0KTtcbn1cblxuXG4vLyBQYXJzZSBTcGFuXG4vLyAtLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc3BhbihcbiAgJHNob3J0LFxuICAka2V5OiBzcGFuXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICAkX2F0OiBpbmRleCgkc2hvcnQsIGF0KTtcblxuICAgIEBpZiAkX2F0IHtcbiAgICAgICRfbG9jaTogJF9hdCArIDE7XG4gICAgICAkX2xvY2F0aW9uOiBudGgoJHNob3J0LCAkX2xvY2kpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGxvY2F0aW9uOiAkX2xvY2F0aW9uKSk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2F0LCBudWxsKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfbG9jaSwgbnVsbCk7XG4gICAgfVxuXG4gICAgJF9pOiAxO1xuICAgICRfc3BhbjogKCk7XG5cbiAgICBAd2hpbGUgJF9pIDw9IGxlbmd0aCgkc2hvcnQpIHtcbiAgICAgICRfdGhpczogbnRoKCRzaG9ydCwgJF9pKTtcblxuICAgICAgQGlmIHR5cGUtb2YoJF90aGlzKSA9PSBudW1iZXIge1xuICAgICAgICAkX3NwYW46IGFwcGVuZCgkX3NwYW4sICRfdGhpcyk7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICB9IEBlbHNlIGlmICRfdGhpcyA9PSBvZiB7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICAgICRfaTogbGVuZ3RoKCRzaG9ydCkgKyAxO1xuICAgICAgfVxuXG4gICAgICAkX2k6ICRfaSArIDE7XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkX3NwYW4pID4gMCB7XG4gICAgICAkX3NwYW46IGlmKGxlbmd0aCgkX3NwYW4pID09IDEsIG50aCgkX3NwYW4sIDEpLCAkX3NwYW4pO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRrZXk6ICRfc3BhbikpO1xuICAgIH1cblxuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIHBhcnNlLWdyaWQoJHNob3J0KSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ndXR0ZXJzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9ndXR0ZXJzOiBwYXJzZS1zcGFuKCRzaG9ydCwgZ3V0dGVyLW92ZXJyaWRlKTtcbiAgJF9zcGFuOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRfZ3V0dGVycyk7XG5cbiAgQGlmICRfc3BhbiBhbmQgbm90KG1hcC1nZXQoJF9ndXR0ZXJzLCBjb2x1bW5zKSkge1xuICAgICRfY29udGV4dDogKCk7XG4gICAgJF9uZXc6ICgpO1xuXG4gICAgQGVhY2ggJGl0ZW0gaW4gJF9zcGFuIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICRfY29udGV4dDogYXBwZW5kKCRfY29udGV4dCwgJGl0ZW0pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRfbmV3OiBhcHBlbmQoJF9uZXcsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2NvbnRleHQ6IHBhcnNlLWdyaWQoJF9jb250ZXh0KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAwLCBudWxsLCAkX25ldyk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMSwgbnRoKCRfbmV3LCAxKSwgJF9uZXcpO1xuICAgICRfbmV3OiAoZ3V0dGVyLW92ZXJyaWRlOiBpZigkX25ldyAhPSAkX3NwYW4sICRfbmV3LCAkX3NwYW4pKTtcblxuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9uZXcpO1xuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9jb250ZXh0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuIiwiLy8gVmFsaWRhdGlvblxuLy8gPT09PT09PT09PVxuXG5cbi8vIFZhbGlkYXRlIENvbHVtbiBNYXRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbi1tYXRoKFxuICAkbWF0aCxcbiAgJGNvbHVtbi13aWR0aFxuKSB7XG4gIEBpZiAkbWF0aCA9PSBzdGF0aWMgYW5kIG5vdCgkY29sdW1uLXdpZHRoKSB7XG4gICAgQGVycm9yICdTdGF0aWMgbWF0aCByZXF1aXJlcyBhIHZhbGlkIGNvbHVtbi13aWR0aCBzZXR0aW5nLic7XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4td2lkdGg7XG59XG4iLCIvLyBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gU2V0IGEgbmV3IGxheW91dCB1c2luZyBhIHNob3J0aGFuZFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIGxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGF5b3V0LCAkaW5zcGVjdCk7XG59XG5cblxuLy8gVXNlIEdyaWRcbi8vIC0tLS0tLS0tXG4vLyBVc2UgYW4gYXJiaXRyYXJ5IGxheW91dCBmb3IgYSBzZWN0aW9uIG9mIGNvZGVcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiB3aXRoLWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRvbGQgICAgICA6ICRzdXN5O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHdpdGgtbGF5b3V0LCAkaW5zcGVjdCk7XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3k6ICRvbGQgIWdsb2JhbDtcbn1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIGEgcGFyc2VkIGxheW91dCBtYXAgYmFzZWQgb24gc2hvcnRoYW5kIHN5bnRheFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gbGF5b3V0KFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbn1cblxuXG4vLyBHZXQgTGF5b3V0XG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuZXcgbGF5b3V0IGJhc2VkIG9uIGN1cnJlbnQgYW5kIGdpdmVuIHNldHRpbmdzXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AZnVuY3Rpb24gX2dldC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkbGF5b3V0OiBsYXlvdXQoJGxheW91dCk7XG4gIEByZXR1cm4gaWYoJGNsZWFuLCAkbGF5b3V0LCBfc3VzeS1kZWVwLW1lcmdlKCRzdXN5LCAkbGF5b3V0KSk7XG59XG4iLCIvLyBTdXN5IEJveCBTaXppbmdcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgYm94IG1vZGVsIGdsb2JhbGx5IG9uIGFsbCBlbGVtZW50cy5cbi8vIC0gWyRib3hdOiBib3JkZXItYm94IHwgY29udGVudC1ib3hcbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gZ2xvYmFsLWJveC1zaXppbmcoXG4gICRib3g6IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSxcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3Q6ICRib3g7XG5cbiAgQGlmICRpbmhlcml0IHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgaHRtbCB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gICAgICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG4gICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdsb2JhbC1ib3gtc2l6aW5nLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHVwZGF0ZS1ib3gtbW9kZWwoJGJveCk7XG59XG5cbi8vIEJvcmRlciBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gQSBsZWdhY3kgc2hvcnRjdXQuLi5cbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gYm9yZGVyLWJveC1zaXppbmcoXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGdsb2JhbC1ib3gtc2l6aW5nKGJvcmRlci1ib3gsICRpbmhlcml0KTtcbn1cblxuLy8gVXBkYXRlIEJveCBNb2RlbFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVXBkYXRlcyBnbG9iYWwgYm94IG1vZGVsIHNldHRpbmdcbkBtaXhpbiB1cGRhdGUtYm94LW1vZGVsKFxuICAkYm94XG4pIHtcbiAgQGlmICRib3ggIT0gc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpIHtcbiAgQGluY2x1ZGUgc3VzeS1zZXQoZ2xvYmFsLWJveC1zaXppbmcsICRib3gpO1xuICB9XG59XG4iLCIvLyBDb250ZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gTmVzdGVkIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgZ3JpZCBmb3IgbmVzdGVkIGNvbnRleHQuXG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGNvbnRleHQgICAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJHNwYW4gICAgICAgOiBzdXN5LWdldChzcGFuLCAkY29udGV4dCk7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRjb250ZXh0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbn1cblxuLy8gTmVzdGVkIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBVc2UgYSBzdWJzZXQgZ3JpZCBmb3IgYSBuZXN0ZWQgY29udGV4dFxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG4vLyAtIEBjb250ZW50ICAgOiA8Y29udGVudD5cbkBtaXhpbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkb2xkICAgICAgOiBzdXN5LWdldChjb2x1bW5zKTtcbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogbmVzdGVkKCRjb250ZXh0KSkpICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KG5lc3RlZCwgJGluc3BlY3QpO1xuICBAY29udGVudDtcblxuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiAkb2xkKSkgIWdsb2JhbDtcbn1cbiIsIi8vIEJhY2tncm91bmQgR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiBmYWxzZTtcblxuXG4vLyBTaG93IEdyaWQvc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFNob3cgZ3JpZCBvbiBhbnkgZWxlbWVudCB1c2luZyBlaXRoZXIgYmFja2dyb3VuZCBvciBvdmVybGF5LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBzaG93LWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0OiAkZ3JpZDtcbiAgJF9vdXRwdXQ6IGRlYnVnLWdldChvdXRwdXQsICRncmlkKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc2hvdy1ncmlkLCAkaW5zcGVjdCk7XG4gIEBpZiAkX291dHB1dCA9PSBvdmVybGF5IGFuZCBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpICE9IGhpZGUge1xuICAgIEBpbmNsdWRlIG92ZXJsYXktZ3JpZCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gIH1cbn1cblxuQG1peGluIHNob3ctZ3JpZHMoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkZ3JpZCk7XG59XG5cbi8vIEJhY2tncm91bmQgR3JpZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTaG93IGEgZ3JpZCBiYWNrZ3JvdW5kIG9uIGFueSBlbGVtZW50LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRncmlkO1xuICAkX291dHB1dCAgOiBnZXQtYmFja2dyb3VuZCgkZ3JpZCk7XG5cbiAgQGlmIGxlbmd0aCgkX291dHB1dCkgPiAwIHtcbiAgICAkX2Zsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKTtcblxuICAgICRfaW1hZ2U6ICgpO1xuICAgIEBlYWNoICRuYW1lLCAkbGF5ZXIgaW4gbWFwLWdldCgkX291dHB1dCwgaW1hZ2UpIHtcbiAgICAgICRfZGlyZWN0aW9uOiBpZigkbmFtZSA9PSBiYXNlbGluZSwgdG8gYm90dG9tLCB0byB0bygkX2Zsb3cpKTtcbiAgICAgICRfaW1hZ2U6IGFwcGVuZCgkX2ltYWdlLCBsaW5lYXItZ3JhZGllbnQoJF9kaXJlY3Rpb24sICRsYXllciksIGNvbW1hKTtcbiAgICB9XG4gICAgJF9vdXRwdXQ6IG1hcC1tZXJnZSgkX291dHB1dCwgKGltYWdlOiAkX2ltYWdlKSk7XG5cbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmFja2dyb3VuZC1ncmlkLCAkaW5zcGVjdCk7XG4gIH1cbn1cblxuXG4vLyBPdmVybGF5IEdyaWRcbi8vIC0tLS0tLS0tLS0tLVxuLy8gR2VuZXJhdGUgYW4gaWNvbiB0byB0cmlnZ2VyIGdyaWQtb3ZlcmxheXMgb24gYW55IGdpdmVuIGVsZW1lbnRzLlxuLy8gJGdyaWRzLi4uICA6IDxzZWxlY3Rvcj4gWzxzZXR0aW5ncz5dIFssIDxzZWxlY3Rvcj5dKlxuQG1peGluIG92ZXJsYXktZ3JpZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpZiBub3QoJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzKSB7XG4gICAgQGF0LXJvb3QgaGVhZCB7IEBpbmNsdWRlIG92ZXJsYXktaGVhZCgkZ3JpZCk7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmJlZm9yZSB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlcjsgfVxuICAgIEBhdC1yb290IGhlYWQ6aG92ZXIgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXItaG92ZXI7IH1cbiAgICAkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIGhlYWQ6aG92ZXIgfiAmLFxuICBoZWFkOmhvdmVyIH4gYm9keSAmIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1vdmVybGF5LWJhc2U7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXIge1xuICBjb250ZW50OiBcInx8fFwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGZvbnQ6IHtcbiAgICBmYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgc2l6ZTogMTZweDtcbiAgICB3ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyIEhvdmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjUpO1xuICBjb2xvcjogcmVkO1xufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IEhlYWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDxoZWFkPiBzdHlsZXMgdG8gY3JlYXRlIGdyaWQgb3ZlcmxheSB0b2dnbGVcbkBtaXhpbiBvdmVybGF5LWhlYWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkX3RvZ2dsZTogZGVidWctZ2V0KHRvZ2dsZSwgJGdyaWQpO1xuICAkX2hvcno6IG51bGw7XG4gICRfdmVydDogbnVsbDtcblxuICBAZWFjaCAkc2lkZSBpbiAkX3RvZ2dsZSB7XG4gICAgJF9ob3J6OiBpZigkc2lkZSA9PSBsZWZ0IG9yICRzaWRlID09IHJpZ2h0LCAkc2lkZSwgJF9ob3J6KTtcbiAgICAkX3ZlcnQ6IGlmKCRzaWRlID09IHRvcCBvciAkc2lkZSA9PSBib3R0b20sICRzaWRlLCAkX3ZlcnQpO1xuICB9XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgI3skX2hvcnp9OiAxMHB4O1xuICAjeyRfdmVydH06IDEwcHg7XG4gIHotaW5kZXg6IDk5OTtcbiAgY29sb3I6ICMzMzM7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC4yNSk7XG59XG5cblxuLy8gW1ByaXZhdGVdIEdyaWQgT3ZlcmxheSBCYXNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJhc2Ugc3R5bGVzIGZvciBnZW5lcmF0aW5nIGEgZ3JpZCBvdmVybGF5XG5AbWl4aW4gZ3JpZC1vdmVybGF5LWJhc2UoKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBjb250ZW50OiBcIiBcIjtcbiAgei1pbmRleDogOTk4O1xufVxuXG5cbi8vIEdldCBTeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1zeW0oXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgICAgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfZ3V0dGVycyAgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRncmlkKTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkZ3JpZCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRncmlkKTtcblxuICAkX2NvbG9yICAgICAgICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX3RyYW5zICAgICAgICAgOiB0cmFuc3BhcmVudDtcbiAgJF9saWdodCAgICAgICAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuXG4gICRfZW5kICAgICAgICAgICA6IDEgKyAkX2d1dHRlcnM7XG4gICRfYWZ0ZXIgICAgICAgICA6IHBlcmNlbnRhZ2UoMS8kX2VuZCk7XG4gICRfc3RvcHMgICAgICAgICA6ICgpO1xuICAkX3NpemUgICAgICAgICAgOiBzcGFuKDEgJGdyaWQgd2lkZSk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQ7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3NwbGl0OiAkX2d1dHRlcnMvMjtcbiAgICAkX2JlZm9yZTogcGVyY2VudGFnZSgkX3NwbGl0LyRfZW5kKTtcbiAgICAkX2FmdGVyOiBwZXJjZW50YWdlKCgxICsgJF9zcGxpdCkvJF9lbmQpO1xuICAgICRfc3RvcHM6ICRfdHJhbnMgJF9iZWZvcmUsICRfY29sb3IgJF9iZWZvcmUsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfVxuXG4gIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAkX3NpemU6IHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpICogJF9lbmQ7XG4gIH1cblxuICAkX291dHB1dDogKFxuICAgIGltYWdlOiAoY29sdW1uczogJF9zdG9wcyksXG4gICAgc2l6ZTogJF9zaXplLFxuICApO1xuXG4gIEByZXR1cm4gJF9vdXRwdXQ7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBJbnNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0taW5zaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIFNwbGl0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tc3BsaXQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkc3RhcnQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcblxuICAgICRfZW5kOiAkc3RhcnQgKyBzcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkX2VuZCwgY29tbWEpO1xuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBPdXRzaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1vdXRzaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3RyYW5zICAgOiB0cmFuc3BhcmVudDtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRndXR0ZXI6IGdldC1zcGFuLXdpZHRoKGZpcnN0ICRsb2NhdGlvbiAkZ3JpZCk7XG5cbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcblxuICAgICAgJGd1dHRlcjogJF9saWdodCAkZ3V0dGVyLCAkX3RyYW5zICRndXR0ZXIsICRfdHJhbnMgJF9lbmQ7XG4gICAgICAkdGhpcy1zdG9wOiBqb2luKCR0aGlzLXN0b3AsICRndXR0ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLWFzeW0oXG4gICRncmlkXG4pIHtcbiAgJF9zdG9wczogKCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLWluc2lkZSgkZ3JpZCk7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1zcGxpdCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLW91dHNpZGUoJGdyaWQpO1xuICB9XG5cbiAgQHJldHVybiAoaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSk7XG59XG5cblxuLy8gR2V0IEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfc2hvdyAgICA6IHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCk7XG4gICRfcmV0dXJuICA6ICgpO1xuXG4gIEBpZiAkX3Nob3cgYW5kICRfc2hvdyAhPSAnaGlkZScge1xuICAgICRfY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgJF9zeW06IGlzLXN5bW1ldHJpY2FsKCRfY29sdW1ucyk7XG4gICAgICAkX3JldHVybjogaWYoJF9zeW0sIGdldC1iYWNrZ3JvdW5kLXN5bSgkZ3JpZCksIGdldC1iYWNrZ3JvdW5kLWFzeW0oJGdyaWQpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBjb250ZW50LWJveCkpO1xuICAgIH1cblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctY29sdW1ucydcbiAgICAgIGFuZCBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKGJhc2UtbGluZS1oZWlnaHQpXG4gICAgICBhbmQgdHlwZS1vZigkYmFzZS1saW5lLWhlaWdodCkgPT0gJ251bWJlcidcbiAgICAgIGFuZCBub3QgdW5pdGxlc3MoJGJhc2UtbGluZS1oZWlnaHQpIHtcbiAgICAgICRfY29sb3I6IHZhcmlhYmxlLWV4aXN0cygnZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yJyk7XG4gICAgICAkX2NvbG9yOiBpZigkX2NvbG9yLCAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yLCAjMDAwKTtcblxuICAgICAgJF9pbWFnZTogbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpO1xuICAgICAgJF9zaXplOiBtYXAtZ2V0KCRfcmV0dXJuLCBzaXplKTtcbiAgICAgICRfYmFzZWxpbmU6IChiYXNlbGluZTogKCRfY29sb3IgMXB4LCB0cmFuc3BhcmVudCAxcHgpKTtcbiAgICAgICRfYmFzZWxpbmUtc2l6ZTogMTAwJSAkYmFzZS1saW5lLWhlaWdodDtcblxuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKFxuICAgICAgICBpbWFnZTogaWYoJF9pbWFnZSwgbWFwLW1lcmdlKCRfaW1hZ2UsICRfYmFzZWxpbmUpLCAkX2Jhc2VsaW5lKSxcbiAgICAgICAgc2l6ZTogaWYoJF9zaXplLCAoJF9zaXplLCAkX2Jhc2VsaW5lLXNpemUpLCAkX2Jhc2VsaW5lLXNpemUpLFxuICAgICAgKSk7XG5cbiAgICAgIEBpZiAkX3Nob3cgPT0gJ3Nob3cnIHtcbiAgICAgICAgJF9jbGlwOiBtYXAtZ2V0KCRfcmV0dXJuLCBjbGlwKTtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGpvaW4oJF9jbGlwLCBib3JkZXItYm94LCBjb21tYSkpKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRfc2hvdyA9PSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgQHdhcm4gJ1BsZWFzZSBwcm92aWRlIGEgJGJhc2UtbGluZS1oZWlnaHQgd2l0aCB0aGUgZGVzaXJlZCBoZWlnaHQgYW5kIHVuaXRzJztcbiAgICB9XG4gIH1cblxuICBAaWYgbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIEdldCBEZWJ1Z1xuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgZGVidWcgc2V0dGluZ1xuLy8gLSAka2V5OiA8c2V0dGluZz5cbkBmdW5jdGlvbiBkZWJ1Zy1nZXQoXG4gICRrZXksXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRrZXk6IGpvaW4oZGVidWcsICRrZXksIHNwYWNlKTtcbiAgQHJldHVybiBzdXN5LWdldCgka2V5LCAkZ3JpZCk7XG59XG4iLCIvLyBDb250YWluZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgY29udGFpbmVyIGVsZW1lbnRcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgICAgOiAkbGF5b3V0O1xuICAkbGF5b3V0ICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG5cbiAgJF93aWR0aCAgICAgOiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xuICAkX2p1c3RpZnkgICA6IHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihzdXN5LWdldChjb250YWluZXItcG9zaXRpb24sICRsYXlvdXQpKTtcbiAgJF9wcm9wZXJ0eSAgOiBpZihzdXN5LWdldChtYXRoLCAkbGF5b3V0KSA9PSBzdGF0aWMsIHdpZHRoLCBtYXgtd2lkdGgpO1xuXG4gICRfYm94ICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJGxheW91dCk7XG5cbiAgQGlmICRfYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRfYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoY29udGFpbmVyLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGZsb2F0LWNvbnRhaW5lcigkX3dpZHRoLCAkX2p1c3RpZnksICRfcHJvcGVydHkpO1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGxheW91dCk7XG59XG5cbi8vIENvbnRhaW5lciBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICBAcmV0dXJuIGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG59XG5cbi8vIEdldCBDb250YWluZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSB0aGUgY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XTogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1jb250YWluZXItd2lkdGgoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dCAgICAgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF93aWR0aCAgICAgICAgIDogc3VzeS1nZXQoY29udGFpbmVyLCAkbGF5b3V0KTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkbGF5b3V0KTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGxheW91dCk7XG5cbiAgQGlmIG5vdCgkX3dpZHRoKSBvciAkX3dpZHRoID09IGF1dG8ge1xuICAgIEBpZiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSB7XG4gICAgICAkX2NvbHVtbnMgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRsYXlvdXQpO1xuICAgICAgJF9ndXR0ZXJzICAgOiBzdXN5LWdldChndXR0ZXJzLCAkbGF5b3V0KTtcbiAgICAgICRfc3ByZWFkICAgIDogaWYoaXMtc3BsaXQoJGxheW91dCksIHdpZGUsIG5hcnJvdyk7XG4gICAgICAkX3dpZHRoICAgICA6IHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkgKiAkX2NvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3dpZHRoO1xufVxuXG4vLyBQYXJzZSBDb250YWluZXIgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyc2UgdGhlICRjb250YWluZXItcG9zaXRpb24gaW50byBtYXJnaW4gdmFsdWVzLlxuLy8gLSBbJGp1c3RpZnldICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCA8bGVuZ3RoPiBbPGxlbmd0aD5dXG5AZnVuY3Rpb24gcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKFxuICAkanVzdGlmeTogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgY29udGFpbmVyLXBvc2l0aW9uKVxuKSB7XG4gICRfcmV0dXJuOiBpZigkanVzdGlmeSA9PSBsZWZ0LCAwLCBhdXRvKSBpZigkanVzdGlmeSA9PSByaWdodCwgMCwgYXV0byk7XG5cbiAgQGlmIG5vdChpbmRleChsZWZ0IHJpZ2h0IGNlbnRlciwgJGp1c3RpZnkpKSB7XG4gICAgJF9yZXR1cm46IG50aCgkanVzdGlmeSwgMSk7XG4gICAgJF9yZXR1cm46ICRfcmV0dXJuIGlmKGxlbmd0aCgkanVzdGlmeSkgPiAxLCBudGgoJGp1c3RpZnksIDIpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU3BhbiBTeW50YXhcbi8vID09PT09PT09PT09XG5cbi8vIFNwYW4gW21peGluXVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBzcGFubmluZyBlbGVtZW50IHVzaW5nIHNob3J0aGFuZCBzeW50YXguXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbjogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRvdXRwdXQ6IHNwYW4tbWF0aCgkc3Bhbik7XG4gICRuZXN0aW5nOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjbGVhcjogc3VzeS1nZXQoY2xlYXIsICRzcGFuKTtcblxuICAkYm94OiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRjb250ZW50LWJveDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuICAkYm94OiAkYm94IG9yIGlmKGlzLWluc2lkZSgkc3BhbikgYW5kICRjb250ZW50LWJveCwgYm9yZGVyLWJveCwgbnVsbCk7XG5cbiAgQGlmICRjbGVhciA9PSBicmVhayB7XG4gICAgQGluY2x1ZGUgYnJlYWs7XG4gIH0gQGVsc2UgaWYgJGNsZWFyID09IG5vYnJlYWsge1xuICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3BhbiwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTtcbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgQGlmIHZhbGlkLWNvbHVtbnMoJG5lc3RpbmcsIHNpbGVudCkge1xuICAgIEBpbmNsdWRlIG5lc3RlZCgkc3BhbikgeyBAY29udGVudDsgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTcGFuIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIHNwYW4uXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQGZ1bmN0aW9uIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgQHJldHVybiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG59XG5cbi8vIFNwYW4gTWF0aFxuLy8gLS0tLS0tLS0tXG4vLyBHZXQgYWxsIHRoZSBzcGFuIHJlc3VsdHMuXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIHNwYW4tbWF0aChcbiAgJHNwYW5cbikge1xuICAkbmVzdCAgICAgICAgICAgICA6IGlmKHN1c3ktZ2V0KHJvbGUsICRzcGFuKSA9PSBuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRzcGxpdC1uZXN0ICAgICAgIDogaWYoaXMtc3BsaXQoJHNwYW4pIGFuZCAkbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZWRnZSAgICAgICAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgICAgICAgOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbTtcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsO1xuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGw7XG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbDtcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aWR0aHNcbiAgJHNwcmVhZDogaW5kZXgobWFwLXZhbHVlcygkc3BhbiksIHNwcmVhZCk7XG4gICRzcGFuOiBpZigkc3BsaXQtbmVzdCBhbmQgbm90KCRzcHJlYWQpLCBtYXAtbWVyZ2UoJHNwYW4sIChzcHJlYWQ6IHdpZGUpKSwgJHNwYW4pO1xuICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbiAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAvLyBhcHBseSBndXR0ZXJzXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaWYgbm90KHN1c3ktZ2V0KHJvbGUsICRzcGFuKSkge1xuICAgICAgJHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBub3QoJHNwbGl0LW5lc3QpIHtcbiAgICAgICRtYXJnaW4tYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJG1hcmdpbi1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNwZWNpYWwgbWFyZ2luIGhhbmRsaW5nXG4gIEBpZiBzdXN5LWdldChvdXRwdXQsICRzcGFuKSA9PSBpc29sYXRlIGFuZCAkbG9jYXRpb24ge1xuICAgICRtYXJnaW4tYmVmb3JlOiBnZXQtaXNvbGF0aW9uKCRzcGFuKTtcbiAgICAkbWFyZ2luLWFmdGVyOiAtMTAwJTtcbiAgfSBAZWxzZSBpZiAkZWRnZSB7XG4gICAgJGlzLXNwbGl0OiBpcy1zcGxpdCgkc3Bhbik7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG5cbiAgICBAaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkZmxvYXQ6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJHNwYW4pO1xuICAgIH1cblxuICAgIEBpZiBub3QoJGlzLXNwbGl0KSB7XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gZmlyc3QgYW5kICRwb3MgPT0gYmVmb3JlKSB7XG4gICAgICAgICRtYXJnaW4tYmVmb3JlOiAwO1xuICAgICAgfVxuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGxhc3QgYW5kICRwb3MgPT0gYWZ0ZXIpIHtcbiAgICAgICAgJG1hcmdpbi1hZnRlcjogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gKFxuICAgIHdpZHRoICAgICAgICAgICA6ICR3aWR0aCxcbiAgICBmbG9hdCAgICAgICAgICAgOiAkZmxvYXQsXG4gICAgbWFyZ2luLWJlZm9yZSAgIDogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLWFmdGVyICAgIDogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLWJlZm9yZSAgOiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy1hZnRlciAgIDogJHBhZGRpbmctYWZ0ZXIsXG4gICAgZmxvdyAgICAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xufVxuXG4vLyBHZXQgU3BhbiBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBzcGFuIHdpZHRoLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBnZXQtc3Bhbi13aWR0aChcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcblxuICAkbiAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRsb2NhdGlvbiA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycywgJHNwYW4pO1xuICAkc3ByZWFkICAgOiBzdXN5LWdldChzcHJlYWQsICRzcGFuKTtcblxuICAkY29udGV4dCAgOiBudWxsO1xuICAkc3Bhbi1zdW0gOiBudWxsO1xuICAkd2lkdGggICAgOiBudWxsO1xuXG4gIEBpZiAkbiA9PSAnZnVsbCcge1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuICAgICRyb2xlOiBzdXN5LWdldChyb2xlLCAkc3Bhbik7XG4gICAgJG46IGlmKCRwb3MgPT0gc3BsaXQgYW5kICRyb2xlICE9IG5lc3QsIHN1c3ktY291bnQoJGNvbHVtbnMpLCAxMDAlKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRuKSAhPSBudW1iZXIge1xuICAgIEB3YXJuIFwiKCN7dHlwZS1vZigkbil9KSAjeyRufSBpcyBub3QgYSB2YWxpZCBzcGFuLlwiO1xuICB9IEBlbHNlIGlmIHVuaXRsZXNzKCRuKSB7XG4gICAgJGNvbnRleHQ6IHN1c3ktc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgaWYoaXMtc3BsaXQoJHNwYW4pLCB3aWRlLCBuYXJyb3cpKTtcbiAgICAkc3ByZWFkOiBpZihpcy1pbnNpZGUoJHNwYW4pLCAkc3ByZWFkIG9yIHdpZGUsICRzcHJlYWQpO1xuICAgICRzcGFuLXN1bTogc3VzeSgkbiwgJGxvY2F0aW9uLCAkY29sdW1ucywgJGd1dHRlcnMsICRzcHJlYWQpO1xuXG4gICAgJF9tYXRoOiBzdXN5LWdldChtYXRoLCAkc3Bhbik7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJHNwYW4pO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICR3aWR0aDogJHNwYW4tc3VtICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJHNwYW4tc3VtIC8gJGNvbnRleHQpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHdpZHRoOiAkbjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuIiwiLy8gR3V0dGVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIEd1dHRlcnNcbi8vIC0tLS0tLS1cbi8vIFNldCBndXR0ZXJzIG9uIGFuIGVsZW1lbnQuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVycyA6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX291dHB1dDogKFxuICAgIGJlZm9yZTogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSksXG4gICAgYWZ0ZXI6IG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlciksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChndXR0ZXJzLCAkaW5zcGVjdCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH1cbn1cblxuQG1peGluIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZ3V0dGVycygkc3Bhbik7XG59XG5cblxuLy8gR3V0dGVyXG4vLyAtLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBndXR0ZXIuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRzcGFuOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX2d1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSBvciBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuXG5AZnVuY3Rpb24gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQHJldHVybiBndXR0ZXIoJHNwYW4pO1xufVxuXG5cbi8vIEdldCBHdXR0ZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBndXR0ZXIgd2lkdGguXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXItd2lkdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVycyA6IHN1c3ktZ2V0KGd1dHRlcnMsICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgIDogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkY29udGV4dCk7XG5cbiAgQGlmICRfZ3V0dGVycyBhbmQgKCRfZ3V0dGVycyA+IDApIGFuZCBub3QoJF9ndXR0ZXIpIHtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkY29udGV4dCk7XG4gICAgJF9tYXRoOiBndXR0ZXItbWF0aCgkY29udGV4dCk7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJF9ndXR0ZXI6ICRfZ3V0dGVycyAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuICAgICAgJF9zcHJlYWQgIDogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCB3aWRlLCBzdXN5LWdldChzcHJlYWQsICRjb250ZXh0KSk7XG4gICAgICAkX2d1dHRlciAgOiBwZXJjZW50YWdlKCRfZ3V0dGVycyAvIHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkpO1xuICAgIH1cbiAgfVxuXG4gICRfZ3V0dGVyOiBpZigkX2d1dHRlciA9PSAnbm8tZ3V0dGVycycgb3IgJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcicsIG51bGwsICRfZ3V0dGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVyO1xufVxuXG5cbi8vIEdldCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGJlZm9yZSBhbmQgYWZ0ZXIgZ3V0dGVyIHZhbHVlcy5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlcnMoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICAgICAgICAgICAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlci1wb3NpdGlvbiAgIDogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICAgICAgICAgICAgOiBnZXQtZ3V0dGVyLXdpZHRoKCRjb250ZXh0KTtcblxuICAkX3JldHVybiAgICAgICAgICAgIDogKGJlZm9yZTogbnVsbCwgYWZ0ZXI6IG51bGwpO1xuXG4gIEBpZiBpcy1zcGxpdCgkY29udGV4dCkgYW5kICRfZ3V0dGVyIHtcbiAgICAkX2d1dHRlcjogJF9ndXR0ZXIgLyAyO1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChiZWZvcmU6ICRfZ3V0dGVyLCBhZnRlcjogJF9ndXR0ZXIpKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRfZ3V0dGVyLXBvc2l0aW9uOiAkX2d1dHRlcikpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBJcyBJbnNpZGVcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIGluc2lkZS5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1pbnNpZGUoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9pbnNpZGU6IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX2luc2lkZSwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gSXMgU3BsaXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgc3BsaXQuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtc3BsaXQoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9zcGxpdDogc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfc3BsaXQsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIEd1dHRlciBNYXRoXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBtYXRoIHRvIHVzZSBmb3IgZ3V0dGVyIGNhbGN1bGF0aW9uc1xuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGd1dHRlci1tYXRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkX3JldHVybiAgOiBzdXN5LWdldChtYXRoLCAkY29udGV4dCk7XG4gICRfcmV0dXJuICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpID09IGluc2lkZS1zdGF0aWMsIHN0YXRpYywgJF9yZXR1cm4pO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBJc29sYXRpb24gU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cblxuLy8gSXNvbGF0ZSBbTWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBpc29sYXRpb24gYXMgYW4gb3ZlcnJpZGUuXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AbWl4aW4gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaW5zcGVjdDogJGlzb2xhdGU7XG5cbiAgJG91dHB1dDogKFxuICAgIHB1c2g6IGlzb2xhdGUoJGlzb2xhdGUpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRpc29sYXRlKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoaXNvbGF0ZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBpc29sYXRlLW91dHB1dCgkb3V0cHV0Li4uKTtcbn1cblxuXG4vLyBJc29sYXRlIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGFuIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGguXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AZnVuY3Rpb24gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaXNvbGF0ZTogcGFyc2Utc3BhbigkaXNvbGF0ZSk7XG4gICRpc29sYXRpb246IHN1c3ktZ2V0KHNwYW4sICRpc29sYXRlKTtcblxuICBAaWYgJGlzb2xhdGlvbiBhbmQgbm90KGdldC1sb2NhdGlvbigkaXNvbGF0ZSkpIHtcbiAgICAkbmV3OiAoXG4gICAgICBzcGFuOiBudWxsLFxuICAgICAgbG9jYXRpb246ICRpc29sYXRpb24sXG4gICAgKTtcbiAgICAkaXNvbGF0ZTogbWFwLW1lcmdlKCRpc29sYXRlLCAkbmV3KTtcbiAgfVxuXG4gIEByZXR1cm4gZ2V0LWlzb2xhdGlvbigkaXNvbGF0ZSk7XG59XG5cblxuLy8gR2V0IElzb2xhdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBpc29sYXRpb24gb2Zmc2V0IHdpZHRoXG4vLyAtICRpbnB1dDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtaXNvbGF0aW9uKFxuICAkaW5wdXRcbikge1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkaW5wdXQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRpbnB1dCk7XG4gICR3aWR0aCAgICAgIDogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciBhbmQgbm90KHVuaXRsZXNzKCRsb2NhdGlvbikpIHtcbiAgICAkd2lkdGg6ICRsb2NhdGlvbjtcbiAgfSBAZWxzZSBpZiAkbG9jYXRpb24ge1xuICAgICRwdXNoOiAkbG9jYXRpb24gLSAxO1xuICAgIEBpZiAkcHVzaCA+IDAge1xuICAgICAgJHB1c2g6IG1hcC1tZXJnZSgkaW5wdXQsIChcbiAgICAgICAgc3BhbjogJHB1c2gsXG4gICAgICAgIGxvY2F0aW9uOiAxLFxuICAgICAgICBzcHJlYWQ6IHdpZGUsXG4gICAgICApKTtcbiAgICAgICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHB1c2gpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRpbnB1dCkgPT0gc3BsaXRcbiAgICAgIGFuZCBzdXN5LWdldChndXR0ZXJzLCAkaW5wdXQpID4gMCB7XG4gICAgJHdpZHRoOiBpZigkd2lkdGggPT0gbnVsbCwgZ3V0dGVycygkaW5wdXQpLCAkd2lkdGggKyBndXR0ZXJzKCRpbnB1dCkpO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGggb3IgMDtcbn1cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJvdyBTdGFydCAmIEVuZFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIEJyZWFrXG4vLyAtLS0tLVxuLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCBzaG91bGQgZm9yY2UgYSBsaW5lIGJyZWFrLlxuQG1peGluIGJyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogYm90aCkpO1xufVxuXG5cbi8vIE5vQnJlYWtcbi8vIC0tLS0tLS1cbi8vIENhbmNlbCB0aGUgYnJlYWsoKSBlZmZlY3QsIGUuZy4gd2hlbiB1c2luZyBtZWRpYSBxdWVyaWVzLlxuQG1peGluIG5vYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBub25lKSk7XG59XG5cblxuLy8gRnVsbFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8bGF5b3V0IHNob3J0aGFuZD5cbkBtaXhpbiBmdWxsKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCA6ICRjb250ZXh0O1xuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZnVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBzcGFuKGZ1bGwgb2YgcGFyc2UtZ3JpZCgkY29udGV4dCkgYnJlYWspO1xufVxuXG5cbi8vIEZpcnN0XG4vLyAtLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gZmlyc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmaXJzdCwgJGluc3BlY3QpO1xuICBAaWYgbm90KGlzLXNwbGl0KCRjb250ZXh0KSkge1xuICAgIEBpbmNsdWRlIGZsb2F0LWZpcnN0KCRmbG93KTtcbiAgfVxufVxuXG5AbWl4aW4gYWxwaGEoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGZpcnN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBMYXN0XG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBsYXN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxhc3QsICRpbnNwZWN0KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpLFxuICAgIGxhc3QtZmxvdzogc3VzeS1nZXQobGFzdC1mbG93LCAkY29udGV4dCksXG4gICAgbWFyZ2luOiBpZihpcy1zcGxpdCgkY29udGV4dCksIG51bGwsIDApLFxuICApO1xuXG4gIEBpbmNsdWRlIGZsb2F0LWxhc3QoJG91dHB1dC4uLik7XG59XG5cbkBtaXhpbiBvbWVnYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgbGFzdCgkY29udGV4dCk7XG59XG5cblxuLy8gR2V0IEVkZ2Vcbi8vIC0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgZWRnZSB2YWx1ZSBiYXNlZCBvbiBsb2NhdGlvbiwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtZWRnZShcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IHN1c3ktZ2V0KGVkZ2UsICRzcGFuKTtcblxuICBAaWYgbm90KCRlZGdlKSB7XG4gICAgJGNvdW50OiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSk7XG4gICAgJGxvY2F0aW9uOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAgICRuOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgICAkbnVtYmVyOiBpZih0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyLCB0cnVlLCBmYWxzZSk7XG4gICAgJGluZGV4OiBpZigkbnVtYmVyIGFuZCB1bml0bGVzcygkbG9jYXRpb24pLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJG4gPT0gJGNvdW50IHtcbiAgICAgICRlZGdlOiBmdWxsO1xuICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uIGFuZCAkbiBhbmQgJGluZGV4IHtcbiAgICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAgICRlZGdlOiBpZigkbiA9PSAkY291bnQsIGZ1bGwsIGZpcnN0KTtcbiAgICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uICsgJG4gLSAxID09ICRjb3VudCB7XG4gICAgICAgICRlZGdlOiBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkZWRnZSA9PSBhbHBoYSBvciAkZWRnZSA9PSBvbWVnYSB7XG4gICAgJGVkZ2U6IGlmKCRlZGdlID09IGFscGhhLCBmaXJzdCwgbGFzdCk7XG4gIH1cblxuICBAcmV0dXJuICRlZGdlO1xufVxuXG5cbi8vIEdldCBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgbG9jYXRpb24gdmFsdWUgYmFzZWQgb24gZWRnZSwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtbG9jYXRpb24oXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJG4gICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgQGlmICRlZGdlIGFuZCBub3QoJGxvY2F0aW9uKSBhbmQgdHlwZS1vZigkbikgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkbikge1xuICAgIEBpZiAkZWRnZSA9PSBmaXJzdCB7XG4gICAgICAkbG9jYXRpb246IDE7XG4gICAgfSBAZWxzZSBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRsb2NhdGlvbjogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpIC0gJG4gKyAxO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxvY2F0aW9uXG59XG4iLCIvLyBNYXJnaW4gU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cbi8vIFByZVxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW4gICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJGd1dHRlciA6IGd1dHRlcigkc3Bhbik7XG4gICRzcGFuICAgOiBzcGFuKCRzcGFuKTtcbiAgJHdpZHRoICA6IGlmKCRzcGxpdCBhbmQgJGd1dHRlciwgJHNwYW4gKyAkZ3V0dGVyLCAkc3Bhbik7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBQb3N0XG4vLyAtLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwb3N0KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwb3N0LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFB1c2hcbi8vIC0tLS1cbi8vIFNpbXBsZSBzeW5vbnltbiBmb3IgcHJlLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdXNoKFxuICAkc3BhblxuKSB7XG4gIEBpbmNsdWRlIHByZSgkc3Bhbik7XG59XG5cbi8vIFB1bGxcbi8vIC0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdWxsKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIDAgLSBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIDAgLSBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHB1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3F1aXNoXG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBzcXVpc2goXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICAgICAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcXVpc2gsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlKCRwcmUpO1xuICBAaW5jbHVkZSBwb3N0KCRwb3N0KTtcbn1cbiIsIi8vIFBhZGRpbmcgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZWZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTdWZmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3VmZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzdWZmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFBhZFxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gcGFkKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBhZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmVmaXgoJHByZSk7XG4gIEBpbmNsdWRlIHN1ZmZpeCgkcG9zdCk7XG5cbn1cbiIsIi8vIEJsZWVkIFN5bnRheFxuLy8gPT09PT09PT09PT09XG5cbi8vIEJsZWVkXG4vLyAtLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIG1hcmdpbnMsIGFuZCBlcXVhbCBwb3NpdGl2ZSBwYWRkaW5nIHRvIGNyZWF0ZSBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkKFxuICAkYmxlZWQ6IDAgZ3V0dGVyKClcbikge1xuICAkaW5zcGVjdCAgOiAkYmxlZWQ7XG4gICRvdXRwdXQgICA6IGdldC1ibGVlZCgkYmxlZWQpO1xuXG4gIEBpZiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gY29udGVudC1ib3gge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgoYm94LXNpemluZzogY29udGVudC1ib3gpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChibGVlZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cblxuLy8gQmxlZWQteFxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIGhvcml6b250YWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC14KFxuICAkYmxlZWQ6IGd1dHRlcigpXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMikgMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC14IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBCbGVlZC15XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgdmVydGljYWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC15KFxuICAkYmxlZWQ6IGlmKGZ1bmN0aW9uLWV4aXN0cyhyaHl0aG0pLCByaHl0aG0oMSksIDFlbSlcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDApKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCBudGgoJHRyYmwsIDIpIDApKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXkgb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEdldCBCbGVlZFxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmxlZWQgb3V0cHV0IHZhbHVlc1xuLy8gLSAkYmxlZWQ6IDxzcGFuPlxuQGZ1bmN0aW9uIGdldC1ibGVlZChcbiAgJGJsZWVkXG4pIHtcbiAgJGJsZWVkICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRibGVlZCkpO1xuICAkdHJibCAgICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuICAkc2hvcnQgICAgOiBudWxsO1xuICAkb3V0cHV0ICAgOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkdHJibCkge1xuICAgICR0aGlzOiBudGgoJHRyYmwsICRpKTtcbiAgICAkbmV3OiAoKTtcbiAgICAkbWFyZ2luOiBudWxsO1xuICAgICRwYWRkaW5nOiBudWxsO1xuICAgICRwYWRkaW5nLXg6IG51bGw7XG5cbiAgICBAaWYgJHRoaXMgPiAwIHtcbiAgICAgICR0aGlzOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogJHRoaXMpKTtcbiAgICAgICRtYXJnaW46IHNwYW4oJHRoaXMpO1xuICAgICAgJHBhZGRpbmc6ICRtYXJnaW47XG4gICAgICAkcGFkZGluZy14OiAkcGFkZGluZztcbiAgICB9XG5cbiAgICBAaWYgJG1hcmdpbiBhbmQgJG1hcmdpbiA+IDAge1xuICAgICAgJG1hcmdpbjogLSAkbWFyZ2luO1xuXG4gICAgICBAaWYgaXMtaW5zaWRlKCR0aGlzKSB7XG4gICAgICAgICRndXR0ZXI6IGd1dHRlcigkdGhpcyk7XG4gICAgICAgICRqb2luOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCRwYWRkaW5nLCAkZ3V0dGVyKSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAkcGFkZGluZy14OiBpZigkam9pbiBhbmQgJHBhZGRpbmcgPiAwLCAkcGFkZGluZyArICRndXR0ZXIsICRwYWRkaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMiB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAzIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDQge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgJG5ldyk7XG4gIH1cblxuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRvdXRwdXQge1xuICAgICRvdXRwdXQ6IGlmKCR2YWx1ZSA9PSAwLCBtYXAtbWVyZ2UoJG91dHB1dCwgKCRwcm9wOiBudWxsKSksICRvdXRwdXQpO1xuICB9XG5cbiAgQHJldHVybiBibGVlZC1zaG9ydGhhbmQoJG91dHB1dCk7XG59XG5cbi8vIEJsZWVkIFNob3J0aGFuZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDb252ZXJ0IGJsZWVkIG91dHB1dCBpbnRvIHNob3J0aGFuZCB3aGVuIHBvc3NpYmxlLlxuLy8gLSAkYmxlZWQ6IDxvdXRwdXQgbWFwPlxuQGZ1bmN0aW9uIGJsZWVkLXNob3J0aGFuZChcbiAgJGJsZWVkXG4pIHtcbiAgJG1hcmdpbjogKCk7XG4gICRwYWRkaW5nOiAoKTtcbiAgJHJldHVybjogKCk7XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRibGVlZCB7XG4gICAgQGlmIHN0ci1pbmRleCgka2V5LCBtYXJnaW4pIHtcbiAgICAgICRtYXJnaW46IG1hcC1tZXJnZSgkbWFyZ2luLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfSBAZWxzZSBpZiBzdHItaW5kZXgoJGtleSwgcGFkZGluZykgPiAwIHtcbiAgICAgICRwYWRkaW5nOiBtYXAtbWVyZ2UoJHBhZGRpbmcsICgka2V5OiAkdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAkcHJvcHM6IChcbiAgICBtYXJnaW46ICRtYXJnaW4sXG4gICAgcGFkZGluZzogJHBhZGRpbmcsXG4gICk7XG5cbiAgQGVhY2ggJG5hbWUsICRtYXAgaW4gJHByb3BzIHtcbiAgICAkZm91cjogaWYobGVuZ3RoKG1hcC1rZXlzKCRtYXApKSA9PSA0LCB0cnVlLCBmYWxzZSk7XG4gICAgJG51bGw6IGlmKGluZGV4KG1hcC12YWx1ZXMoJG1hcCksIG51bGwpLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJGZvdXIgYW5kIG5vdCgkbnVsbCkge1xuICAgICAgJHRvcDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tdG9wJyk7XG4gICAgICAkcmlnaHQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXJpZ2h0Jyk7XG4gICAgICAkYm90dG9tOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1ib3R0b20nKTtcbiAgICAgICRsZWZ0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1sZWZ0Jyk7XG5cbiAgICAgICR0YjogaWYoJHRvcCA9PSAkYm90dG9tLCAkdG9wLCBudWxsKTtcbiAgICAgICRybDogaWYoJHJpZ2h0ID09ICRsZWZ0LCAkcmlnaHQsIG51bGwpO1xuICAgICAgJGFsbDogaWYoJHRiID09ICRybCwgJHRiLCBudWxsKTtcblxuICAgICAgJG5ldzogaWYoJGFsbCwgJGFsbCwgbnVsbCk7XG5cbiAgICAgIEBpZiBub3QoJG5ldykge1xuICAgICAgICBAaWYgJHRiIGFuZCAkcmwge1xuICAgICAgICAgICRuZXc6ICR0YiAkcmw7XG4gICAgICAgIH0gQGVsc2UgaWYgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRybCAkYm90dG9tO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRyaWdodCAkYm90dG9tICRsZWZ0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJG5hbWU6ICRuZXcpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAkbWFwKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBCcmVha3BvaW50IEludGVncmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW1lZGlhOiAoKSAhZGVmYXVsdDtcbiRzdXN5LW1lZGlhLWZhbGxiYWNrOiBmYWxzZSAhZGVmYXVsdDtcblxuJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICgpO1xuXG5cbi8vIFN1c3kgQnJlYWtwb2ludFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGFuZ2UgZ3JpZHMgYXQgZGlmZmVyZW50IG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRzLlxuLy8gLSAkcXVlcnkgICAgIDogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPiB8IDxtYXA+XG4vLyAtICRsYXlvdXQgICAgOiA8c2V0dGluZ3M+XG4vLyAtICRuby1xdWVyeSAgOiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1icmVha3BvaW50KFxuICAkcXVlcnksXG4gICRsYXlvdXQ6IGZhbHNlLFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1yb3V0ZXIoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAaWYgJGxheW91dCB7XG4gICAgICBAaW5jbHVkZSB3aXRoLWxheW91dCgkbGF5b3V0KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gU3VzeSBNZWRpYVxuLy8gLS0tLS0tLS0tLVxuLy8gLSAkcXVlcnk6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT5cbi8vIC0gJG5vLXF1ZXJ5OiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1tZWRpYShcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgJG9sZC1jb250ZXh0OiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgJG5hbWU6IGlmKG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkcXVlcnkpLCAkcXVlcnksIG51bGwpO1xuICAkcXVlcnk6IHN1c3ktZ2V0LW1lZGlhKCRxdWVyeSk7XG4gICRxdWVyeTogc3VzeS1wYXJzZS1tZWRpYSgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkcXVlcnksICRuYW1lKTtcblxuICBAaWYgJG5vLXF1ZXJ5IGFuZCB0eXBlLW9mKCRuby1xdWVyeSkgIT0gc3RyaW5nIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSB7XG4gICAgQG1lZGlhICN7c3VzeS1yZW5kZXItbWVkaWEoJHF1ZXJ5KX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJG5vLXF1ZXJ5KSA9PSBzdHJpbmcge1xuICAgICAgI3skbm8tcXVlcnl9ICYge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJG9sZC1jb250ZXh0LCAkY2xlYW46IHRydWUpO1xufVxuXG5cbi8vIE1lZGlhIFJvdXRlclxuLy8gLS0tLS0tLS0tLS0tXG4vLyBSb3V0IG1lZGlhIGFyZ3VtZW50cyB0byB0aGUgY29ycmVjdCBtaXhpbi5cbkBtaXhpbiBzdXN5LW1lZGlhLXJvdXRlcihcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChicmVha3BvaW50LCAobWl4aW46IGJyZWFrcG9pbnQpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktbWVkaWEoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFVwZGF0ZSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBTZXQgdGhlIG5ldyBtZWRpYSBjb250ZXh0XG5AbWl4aW4gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcXVlcnksXG4gICRuYW1lOiBudWxsLFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJHF1ZXJ5OiBtYXAtbWVyZ2UoKG5hbWU6ICRuYW1lKSwgJHF1ZXJ5KTtcblxuICBAaWYgJGNsZWFuIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogJHF1ZXJ5ICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiBtYXAtbWVyZ2UoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRxdWVyeSkgIWdsb2JhbDtcbiAgfVxufVxuXG5cbi8vIE1lZGlhIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgZnVsbCBtZWRpYSBjb250ZXh0LCBvciBhIHNpbmdsZSBtZWRpYSBwcm9wZXJ0eSAoZS5nLiBtaW4td2lkdGgpXG5AZnVuY3Rpb24gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcHJvcGVydHk6IGZhbHNlXG4pIHtcbiAgQGlmICRwcm9wZXJ0eSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcHJvcGVydHkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICB9XG59XG5cblxuLy8gR2V0IE1lZGlhXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBhIG5hbWVkIG1lZGlhLXF1ZXJ5IGZyb20gJHN1c3ktbWVkaWEuXG4vLyAtICRuYW1lOiA8a2V5PlxuQGZ1bmN0aW9uIHN1c3ktZ2V0LW1lZGlhKFxuICAkbmFtZVxuKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJG5hbWUpIHtcbiAgICAkbWFwLXZhbHVlOiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCAkbmFtZSk7XG4gICAgQGlmICgkbmFtZSA9PSAkbWFwLXZhbHVlKSB7XG4gICAgICAkbmFtZTogJG1hcC12YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRuYW1lOiBzdXN5LWdldC1tZWRpYSgkbWFwLXZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuYW1lO1xufVxuXG5cbi8vIFJlbmRlciBNZWRpYVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBCdWlsZCBhIG1lZGlhLXF1ZXJ5IHN0cmluZyBmcm9tIHZhcmlvdXMgbWVkaWEgc2V0dGluZ3NcbkBmdW5jdGlvbiBzdXN5LXJlbmRlci1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG91dHB1dDogbnVsbDtcbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHF1ZXJ5IHtcbiAgICAkc3RyaW5nOiBudWxsO1xuXG4gICAgQGlmICRwcm9wZXJ0eSA9PSBtZWRpYSB7XG4gICAgICAkc3RyaW5nOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RyaW5nOiAnKCN7JHByb3BlcnR5fTogI3skdmFsdWV9KSc7XG4gICAgfVxuXG4gICAgJG91dHB1dDogaWYoJG91dHB1dCwgJyN7JG91dHB1dH0gYW5kICN7JHN0cmluZ30nLCAkc3RyaW5nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuXG4vLyBQYXJzZSBNZWRpYVxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBwYXJzZWQgbWVkaWEtcXVlcnkgc2V0dGluZ3MgYmFzZWQgb24gc2hvcnRoYW5kXG5AZnVuY3Rpb24gc3VzeS1wYXJzZS1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG1xOiBudWxsO1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09IG1hcCB7XG4gICAgJG1xOiAkcXVlcnk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IG51bWJlciB7XG4gICAgJG1xOiAobWluLXdpZHRoOiAkcXVlcnkpO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBsaXN0IGFuZCBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gbnVtYmVyIHtcbiAgICAgICRtcTogKFxuICAgICAgICBtaW4td2lkdGg6IG1pbigkcXVlcnkuLi4pLFxuICAgICAgICBtYXgtd2lkdGg6IG1heCgkcXVlcnkuLi4pLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtcTogKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkbXE6IChtZWRpYTogJyN7JHF1ZXJ5fScpO1xuICB9XG5cbiAgQHJldHVybiAkbXE7XG59XG4iLCIvKlxuKiBTY3V0LCBhIGNvbGxlY3Rpb24gb2YgU2FzcyB1dGlsaXRpZXNcbiogdG8gZWFzZSBhbmQgaW1wcm92ZSBvdXIgaW1wbGVtZW50YXRpb25zIG9mIGNvbW1vbiBzdHlsZS1jb2RlIHBhdHRlcm5zLlxuKiB2MS40LjBcbiogRG9jcyBhdCBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dFxuKi9cblxuQG1peGluIHNjdXQtY2xlYXJmaXgge1xuXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jbGVhcmZpeCB7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG59XG5AbWl4aW4gc2N1dC1saXN0LXVuc3R5bGVkKFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZmxvYXRlZCAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRkaXI6IGxlZnQsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcblxuICAmID4gbGkge1xuICAgIGZsb2F0OiAkZGlyO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLSN7JGRpcn06ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWZsb2F0ZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZDtcbn1cblxuQGZ1bmN0aW9uIHNjdXQtYXV0b09yVmFsdWUgKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gYSBvciAkdmFsID09IGF1dG8ge1xuICAgIEByZXR1cm4gYXV0bztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LWNvb3JkcyAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgJHRvcDogbnRoKCRjb29yZGluYXRlcywgMSk7XG4gICRyaWdodDogbnRoKCRjb29yZGluYXRlcywgMik7XG4gICRib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpO1xuICAkbGVmdDogbnRoKCRjb29yZGluYXRlcywgNCk7XG5cbiAgQGlmICR0b3AgIT0gbiB7XG4gICAgdG9wOiBzY3V0LWF1dG9PclZhbHVlKCR0b3ApO1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbiB7XG4gICAgcmlnaHQ6IHNjdXQtYXV0b09yVmFsdWUoJHJpZ2h0KTtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBuIHtcbiAgICBib3R0b206IHNjdXQtYXV0b09yVmFsdWUoJGJvdHRvbSk7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG4ge1xuICAgIGxlZnQ6IHNjdXQtYXV0b09yVmFsdWUoJGxlZnQpO1xuICB9XG5cbn1cbkBmdW5jdGlvbiBzY3V0LXN0cmlwLXVuaXQgKFxuICAkbnVtXG4pIHtcblxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LWVtIChcbiAgJHBpeGVscyxcbiAgJGJhc2U6ICRzY3V0LWVtLWJhc2Vcbikge1xuXG4gIC8vICRiYXNlIGNvdWxkIGJlIGluIGVtIG9yIHB4IChubyB1bml0ID0gcHgpLlxuICAvLyBBZGp1c3QgYWNjb3JkaW5nbHkgdG8gY3JlYXRlIGEgJGRpdmlzb3IgdGhhdFxuICAvLyBzZXJ2ZXMgYXMgY29udGV4dCBmb3IgJHBpeGVscy5cbiAgJG11bHRpcGxpZXI6IGlmKHVuaXQoJGJhc2UpID09IGVtLCAxNiwgMSk7XG4gICRkaXZpc29yOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UpICogJG11bHRpcGxpZXI7XG5cbiAgJGVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tZW1zOiAoc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJGRpdmlzb3IpICogMWVtO1xuICAgICRlbS12YWxzOiBhcHBlbmQoJGVtLXZhbHMsICR2YWwtaW4tZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJGVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJGVtLXZhbHM7XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtcmVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1yZW0gKFxuICAkcGl4ZWxzXG4pIHtcblxuICAkcmVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcmVtczogc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJHNjdXQtcmVtLWJhc2UgKiAxcmVtO1xuICAgICRyZW0tdmFsczogYXBwZW5kKCRyZW0tdmFscywgJHZhbC1pbi1yZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHJlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJHJlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcmVtLXZhbHM7XG4gIH1cblxufVxuQG1peGluIHNjdXQtYm9yZGVyIChcbiAgJHN0eWxlLFxuICAkc2lkZXM6IG4geVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2lkZXMpID09IDIge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkc2lkZXMpID09IDQge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAzKSAhPSBuIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDQpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJTY3V0LWJvcmRlciByZXF1aXJlcyBhICRzaWRlcyBhcmd1bWVudCBvZiAyIG9yIDQgdmFsdWVzLlwiXG4gIH1cblxufVxuQG1peGluIHNjdXQtY2lyY2xlIChcbiAgJHNpemUsXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgQGlmICRjb2xvciA9PSBpbmhlcml0IHtcbiAgICAvLyBJZiB1c2VyIHdhbnRzIHRvIGluaGVyaXQgdGhlIGNvbG9yLFxuICAgIC8vIHRha2UgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgYm9yZGVyXG4gICAgLy8gY29sb3IgZGVmYXVsdHMgdG8gdGhlIHRleHQgY29sb3Igb2YgdGhlIGVsZW1lbnQuXG4gICAgYm9yZGVyLXdpZHRoOiAkc2l6ZSAvIDI7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgd2lkdGg6IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwganVzdCB1c2UgYmFja2dyb3VuZC1jb2xvci5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICB3aWR0aDogJHNpemU7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY29sb3Itc3dhcCAoXG4gICRvZmYsXG4gICRvbixcbiAgJGR1cmF0aW9uOiAwLFxuICAkYmc6IGZhbHNlXG4pIHtcblxuICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBudWxsO1xuICAkb2ZmLWlzLWxpc3Q6IHR5cGUtb2YoJG9mZikgPT0gbGlzdDtcbiAgJG9uLWlzLWxpc3Q6IHR5cGUtb2YoJG9uKSA9PSBsaXN0O1xuXG4gIC8vIElmICRvZmYgSVMgYSBsaXN0LFxuICAvLyBhc3NpZ24gY29sb3IgYW5kIGJhY2tncm91bmQtY29sb3IuXG4gIEBpZiAkb2ZmLWlzLWxpc3Qge1xuICAgIGNvbG9yOiBudGgoJG9mZiwgMSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvZmYsIDIpO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3IsIGNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgVFJVRSxcbiAgLy8gYXNzaWduIGJhY2tncm91bmQtY29sb3IuXG4gIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvZmYtaXMtbGlzdCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIEZBTFNFLFxuICAvLyBhc3NpZ24gY29sb3IuXG4gIEBlbHNlIHtcbiAgICBjb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBjb2xvcjtcbiAgfVxuXG4gIC8vIE9ubHkgc2V0LXVwIHRyYW5zaXRpb24gaWYgJGR1cmF0aW9uICE9IDAuXG4gIEBpZiAkZHVyYXRpb24gIT0gMCB7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogJHRyYW5zaXRpb24tcHJvcGVydGllcztcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAkZHVyYXRpb247XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcblxuICAgIC8vICRvbiBpcyB0cmVhdGVkIHRoZSBzYW1lIGFzICRvZmYsIGFib3ZlLlxuICAgIEBpZiAkb24taXMtbGlzdCB7XG4gICAgICBjb2xvcjogbnRoKCRvbiwgMSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9uLCAyKTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb24taXMtbGlzdCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9uO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkb247XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWhkLWJwIChcbiAgJHJhdGlvOiAxLjNcbikge1xuXG4gIEBtZWRpYSAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogKCRyYXRpbyAvIDEpKSxcbiAgICAgICAgICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gICAgICAgICAobWluLXJlc29sdXRpb246IChyb3VuZCg5NiAqICRyYXRpbykgKiAxZHBpKSkge1xuICAgIEBjb250ZW50O1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGlkZS12aXN1YWxseSB7XG5cbiAgYm9yZGVyOiAwO1xuICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG5cbn1cblxuJXNjdXQtaGlkZS12aXN1YWxseSB7XG4gIEBpbmNsdWRlIHNjdXQtaGlkZS12aXN1YWxseTtcbn1cbkBtaXhpbiBzY3V0LWltYWdlLXJlcGxhY2Uge1xuXG4gIHRleHQtaW5kZW50OiAxMDIlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuXG59XG5cbiVzY3V0LWltYWdlLXJlcGxhY2Uge1xuICBAaW5jbHVkZSBzY3V0LWltYWdlLXJlcGxhY2U7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1yZW0gYW5kIHNjdXQtc3RyaXAtdW5pdFxuXG5AbWl4aW4gc2N1dC1yZW0tZmFsbGJhY2sgKFxuICAkcGl4ZWxzLFxuICAkcHJvcGVydHk6IGZvbnQtc2l6ZVxuKSB7XG5cbiAgJHB4LXZhbHM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1weDogc2N1dC1zdHJpcC11bml0KCR2YWwpICogMXB4O1xuICAgICRweC12YWxzOiBhcHBlbmQoJHB4LXZhbHMsICR2YWwtaW4tcHgpO1xuICB9XG4gICRyZW0tdmFsczogc2N1dC1yZW0oJHBpeGVscyk7XG5cbiAgI3skcHJvcGVydHl9OiAkcHgtdmFscztcbiAgI3skcHJvcGVydHl9OiAkcmVtLXZhbHM7XG5cbn1cbkBtaXhpbiBzY3V0LXJlc2V0LWJvcmRlci1ib3gge1xuICAvLyBNYWtlIGV2ZXJ5dGhpbmcgYSBib3JkZXItYm94LCBiZWNhdXNlIHdoeSBub3Q/XG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYW50aWFsaWFzIHtcbiAgLy8gQW50aWFsaWFzIVxuICBib2R5IHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1zZW1hbnRpY2l6ZSB7XG4gIC8vIE1ha2UgaGVhZGVycyBhbmQgPGI+IHNlbWFudGljLCBub3QgcHJlc2VudGF0aW9uYWwuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcG9pbnRlciB7XG4gIC8vIENsaWNrYWJsZSBmb3JtIGVsZW1lbnRzIHNob3VsZCBoYXZlIGEgcG9pbnRlci5cbiAgbGFiZWwsXG4gIHNlbGVjdCxcbiAgb3B0aW9uLFxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1mb3JtIHtcbiAgZmllbGRzZXQge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1idXR0b24ge1xuICAvLyBSZXNldCBkZWZhdWx0IGJ1dHRvbiBzdHlsZXMsIHdoaWNoIGFyZSBuZXZlciB1c2VkLlxuICBidXR0b24sXG4gIFt0eXBlPVwiYnV0dG9uXCJdLFxuICBbdHlwZT1cInN1Ym1pdFwiXSxcbiAgW3R5cGU9XCJyZXNldFwiXSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wYXJhZ3JhcGgge1xuICAvLyBTb21lIHBhcmFncmFwaCBtYXJnaW5zIGp1c3QgZ2V0IGluIHRoZSB3YXkuXG4gIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICBwOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1tZWRpYSB7XG4gIC8vIFlvdSB3YW50IHRoZXNlIGVsZW1lbnRzIGZsdWlkLCBwcm9iYWJseS5cbiAgaW1nLFxuICB2aWRlbyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1maWd1cmUge1xuICAvLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zLlxuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG4vLyBDYWxsIHRoZW0gYWxsLCBtaW51cyBleGNsdXNpb25zIVxuQG1peGluIHNjdXQtcmVzZXQgKCRleGNsdWRlOiBmYWxzZSkge1xuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBib3JkZXItYm94KSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYm9yZGVyLWJveDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBhbnRpYWxpYXMpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1hbnRpYWxpYXM7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgc2VtYW50aWNpemUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1zZW1hbnRpY2l6ZTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwb2ludGVyKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcG9pbnRlcjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmb3JtKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZm9ybTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBidXR0b24pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1idXR0b247XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcGFyYWdyYXBoKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcGFyYWdyYXBoO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIG1lZGlhKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtbWVkaWE7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZmlndXJlKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZmlndXJlO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXNlbGVjdGVkIChcbiAgJGFjdGl2ZTogZmFsc2Vcbikge1xuXG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXRyaWFuZ2xlIChcbiAgJGRpcmVjdGlvbjogcmlnaHQsXG4gICRzaXplOiAwLjc1ZW0sXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuICAvLyBGb3IgaW1wcm92ZWQgYXBwZWFyYW5jZSBpbiBzb21lIFdlYmtpdCBicm93c2Vyc1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG5cbiAgLy8gU2V0IHVwIHNvbWUgdmFyaWFibGVzXG4gICR3aWR0aDogbnVsbDtcbiAgJGhlaWdodDogbnVsbDtcbiAgJGJvcmRlci13aWR0aHM6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJHNpemUpID09IGxpc3Qge1xuICAgICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgICAkaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkd2lkdGg6ICRzaXplO1xuICAgICRoZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgLy8gRm9yIHVwIGFuZCBkb3duLCB3aWR0aCBnZXRzIHR3byBib3JkZXJzIGJ1dCBoZWlnaHQgb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIHNlY29uZCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAkaGVpZ2h0ICgkd2lkdGggLyAyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIC8vIEZvciByaWdodCBhbmQgbGVmdCwgaGVpZ2h0IGdldHMgdHdvIGJvcmRlcnMgYnV0IHdpZHRoIG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBmaXJzdCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICR3aWR0aDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gRm9yIHJpZ2h0IHRyaWFuZ2xlcyAodGhlIHJlc3QpLCBib3RoIHNpZGVzIGdldCB0d28gYm9yZGVycyxcbiAgICAvLyBzbyBkaXZpZGUgYm90aCBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgKCR3aWR0aCAvIDIpO1xuICB9XG5cbiAgYm9yZGVyLXdpZHRoOiAkYm9yZGVyLXdpZHRocztcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcblxuXG4gIC8vIFNUQU5EQVJEIFRSSUFOR0xFU1xuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gQ09STkVSIFRSSUFOR0xFU1xuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHRvcC1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gdG9wLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHRvcC1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXRyaWFuZ2xlIHtcbiAgQGluY2x1ZGUgc2N1dC10cmlhbmdsZTtcbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1hYnNvbHV0ZWx5IChcbiAgJGRpbWVuc2lvbnNcbikge1xuXG4gICR3aWR0aDogbnRoKCRkaW1lbnNpb25zLCAxKTtcbiAgJGhlaWdodDogbnRoKCRkaW1lbnNpb25zLCAyKTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICR3aWR0aCAhPSBuIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogKC0kd2lkdGggLyAyKTtcbiAgfVxuXG4gIEBpZiAkaGVpZ2h0ICE9IG4ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAoLSRoZWlnaHQgLyAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYmxvY2sgKFxuICAkbWF4LXdpZHRoOiBmYWxzZVxuKSB7XG5cbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgQGlmICRtYXgtd2lkdGgge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNlbnRlci1ibG9jayB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLWJsb2NrO1xufVxuXG5AbWl4aW4gc2N1dC1jZW50ZXItdHJhbnNmb3JtIChcbiAgJGF4aXM6IGZhbHNlIC8vIG9yIHggb3IgeVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkYXhpcyAhPSB4IHtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gIH1cblxuICBAaWYgJGF4aXMgIT0geSB7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxuXG4gICR0cmFuc2xhdGUtdmFsOiBudWxsO1xuXG4gIEBpZiBub3QoJGF4aXMpIHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHgge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHkge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG5cbiAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICAtbXMtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS14IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHgpO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbkBtaXhpbiBzY3V0LWZpbGwgKFxuICAkd2lkdGgtaGVpZ2h0OiBmYWxzZVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIEBpZiAkd2lkdGgtaGVpZ2h0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWZpbGwge1xuICBAaW5jbHVkZSBzY3V0LWZpbGw7XG59XG5AbWl4aW4gc2N1dC1saXN0LWN1c3RvbSAoXG4gICRjb250ZW50OiBcIlxcMjAyMlwiLFxuICAkbWFya2VyLXdpZHRoOiAwLjc1ZW0sXG4gICRwYWQ6IDAsXG4gICRuby1tYXJnaW46IGZhbHNlXG4pIHtcblxuICAkY29udGVudC12YWw6IG51bGw7XG4gICRjb3VudGVyOiBpbmRleCgkY29udGVudCwgY291bnQpO1xuICBAaWYgJGNvdW50ZXIge1xuICAgIEBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDMge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciwgbnRoKCRjb250ZW50LCAzKSludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIGlmIGxlbmd0aCgkY29udGVudCkgPT0gMiB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlcik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkY29udGVudC12YWw6ICRjb250ZW50O1xuICB9XG5cbiAgcGFkZGluZy1sZWZ0OiAkbWFya2VyLXdpZHRoICsgJHBhZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmID4gbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgJGNvdW50ZXIge1xuICAgICAgY291bnRlci1pbmNyZW1lbnQ6IHNjdXRsaXN0Y291bnRlcjtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJGNvbnRlbnQtdmFsO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAtJG1hcmtlci13aWR0aDtcbiAgICAgIHdpZHRoOiAkbWFya2VyLXdpZHRoO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtZmxvYXRlZGAsIHdoaWNoIGRlcGVuZHMgaW4gdHVybiBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZGl2aWRlZCAoXG4gICRkaXZpZGVyOiBcInxcIixcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGRpcjogbGVmdCxcbiAgJGhlaWdodDogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkKCRkaXI6ICRkaXIsICRuby1tYXJnaW46ICRuby1tYXJnaW4pO1xuXG4gICRwc2V1ZG86IGlmKCRkaXIgPT0gbGVmdCwgJ2JlZm9yZScsICdhZnRlcicpO1xuXG4gIC8vIElmIGFuIGV4cGxpY2l0IGhlaWdodCBpcyBwYXNzZWQsXG4gIC8vIHRoaW5ncyBhcmUgZGlmZmVyZW50OiBBbGwgPGxpPnNcbiAgLy8gbmVlZCB0aGUgcHNldWRvLWVsZW1lbnQgKHRvIGZvcmNlIGhlaWdodCksXG4gIC8vIGJ1dCB0aGUgZmlyc3QncyBtdXN0IGJlIGhpZGRlbi5cblxuICBAaWYgJGhlaWdodCB7XG4gICAgJiA+IGxpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gICAgJiA+IGxpOiN7JHBzZXVkb30ge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgICYgPiBsaTpmaXJzdC1jaGlsZDojeyRwc2V1ZG99IHtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAmID4gbGkgKyBsaTojeyRwc2V1ZG99IHtcbiAgICBAaWYgbm90KCRoZWlnaHQpIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2U7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWJhciB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkO1xufVxuXG4lc2N1dC1saXN0LWJyZWFkY3J1bWIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZChcIi9cIik7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1pbmxpbmUgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtaW5saW5lIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWlubGluZTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LXB1bmN0dWF0ZWQgKFxuICAkZGl2aWRlcjogXCIsIFwiLFxuICAkZGlzcGxheTogaW5saW5lLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiAkZGlzcGxheTtcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1jb21tYSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1wdW5jdHVhdGVkO1xufVxuQG1peGluIHNjdXQtbWFyZ2luIChcbiAgJG1hcmdpblxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAxIGFuZCAkbWFyZ2luICE9IG4ge1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW47XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDIge1xuICAgICRtYXJnaW4teTogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgIEBpZiAkbWFyZ2luLXkgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXk7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAzIHtcbiAgICAkbWFyZ2luLXktdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi15LWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgIEBpZiAkbWFyZ2luLXktdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15LXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teS1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gNCB7XG4gICAgJG1hcmdpbi10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXJpZ2h0OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICAkbWFyZ2luLWxlZnQ6IG50aCgkbWFyZ2luLCA0KTtcbiAgICBAaWYgJG1hcmdpbi10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tcmlnaHQgIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4tcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1sZWZ0ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4tbGVmdDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtcGFkZGluZyAoXG4gICRwYWRkaW5nXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAxIGFuZCAkcGFkZGluZyAhPSBuIHtcbiAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAyIHtcbiAgICAkcGFkZGluZy15OiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgQGlmICRwYWRkaW5nLXkgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMyB7XG4gICAgJHBhZGRpbmcteS10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy15LWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICBAaWYgJHBhZGRpbmcteS10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteS10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXktYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDQge1xuICAgICRwYWRkaW5nLXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy1yaWdodDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgJHBhZGRpbmctbGVmdDogbnRoKCRwYWRkaW5nLCA0KTtcbiAgICBAaWYgJHBhZGRpbmctdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXJpZ2h0ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmctcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmctYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctbGVmdCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmctbGVmdDtcbiAgICB9XG4gIH1cbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtYWJzb2x1dGUgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1hYnNvbHV0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtYWJzb2x1dGU7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWZpeGVkIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogZml4ZWQ7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtZml4ZWQge1xuICBAaW5jbHVkZSBzY3V0LWZpeGVkO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1yZWxhdGl2ZSAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5AbWl4aW4gc2N1dC1yYXRpby1ib3ggKFxuICAkcmF0aW86IDEvMVxuKSB7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFRoZSBjb250YWluZXIncyBoZWlnaHQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVcbiAgLy8gY29udGFpbmVyJ3Mgd2lkdGgsIGlzIHNldCBieSBhc3NpZ25pbmdcbiAgLy8gcGFkZGluZy10b3AgdG8gYSBwc2V1ZG8tZWxlbWVudC5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHBhZGRpbmctdG9wOiAoMSAvICRyYXRpbykgKiAxMDAlO1xuICB9XG5cbn1cblxuJXNjdXQtcmF0aW8tYm94IHtcbiAgQGluY2x1ZGUgc2N1dC1yYXRpby1ib3g7XG59XG5AbWl4aW4gc2N1dC1zaXplKFxuICAkc2l6ZVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2l6ZSkgPT0gMSB7XG4gICAgd2lkdGg6ICAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkc2l6ZSkgPT0gMiB7XG4gICAgd2lkdGg6ICBudGgoJHNpemUsIDEpO1xuICAgIGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogLSRoZWlnaHQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgI3skd3JhcHBlcn06YWZ0ZXIsXG4gICN7JGZvb3Rlcn0ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxuXG59XG5cbi8vIGRlcHJlY2F0ZWRcbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXIgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pe1xuICBAaW5jbHVkZSBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQoJGhlaWdodCwgJHdyYXBwZXIsICRmb290ZXIpO1xufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1mbHVpZCAoXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAjeyRmb290ZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgaGVpZ2h0OiAxcHg7XG4gIH1cblxufVxuQG1peGluIHNjdXQtdmNlbnRlci1pYiAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgLy8gVGhlIGlubmVyIGVsZW1lbnQgaXMgdmVydGljYWxseSBjZW50ZXJlZFxuICAvLyBieSBtaWRkbGUtYWxpZ25pbmcgaXQgd2l0aCBhbiBpbmxpbmUgcHNldWRvLWVsZW1lbnRcbiAgLy8gd2hvc2UgaGVpZ2h0IGlzIDEwMCUuXG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIC8vIEEgc21hbGwgbmVnYXRpdmUgcmlnaHQgbWFyZ2luIGlzIHNldFxuICAgIC8vIHRvIGFjY291bnQgZm9yIHRoZSBkZWZhdWx0XG4gICAgLy8gd29yZC1zcGFjaW5nIG9mIGlubGluZS1ibG9jay5cbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1ZW07XG4gIH1cblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdmNlbnRlci1pYiB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci1pYjtcbn1cblxuQG1peGluIHNjdXQtdmNlbnRlci1saCAoXG4gICRoZWlnaHRcbikge1xuXG4gIGhlaWdodDogJGhlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWlnaHQ7XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItdGQgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIGRpc3BsYXk6IHRhYmxlO1xuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuXG4lc2N1dC12Y2VudGVyLXRkIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXRkO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtY2VudGVyLXRyYW5zZm9ybVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLXR0ICgpIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG4lc2N1dC12Y2VudGVyLXR0IHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXR0O1xufVxuLy8gc3BhY2VcbiRzY3V0LXNwYWNlOiBcIlxcMDAyMFwiO1xuLy8gbm9uLWJyZWFraW5nIHNwYWNlXG4kc2N1dC1uYnNwOiBcIlxcMDBhMFwiO1xuXG4vLyBxdW90YXRpb24gbWFya1xuJHNjdXQtcXVvdDogXCJcXDAwMjJcIjtcbi8vIGxlZnQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1sc3F1bzogXCJcXDIwMThcIjtcbi8vIHJpZ2h0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtcnNxdW86IFwiXFwyMDE5XCI7XG4vLyBsZWZ0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtbGRxdW86IFwiXFwyMDFDXCI7XG4vLyByaWdodCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LXJkcXVvOiBcIlxcMjAxRFwiO1xuLy8gbGVmdCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxzYXF1bzogXCJcXDIwMzlcIjtcbi8vIHJpZ2h0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcnNhcXVvOiBcIlxcMjAzQVwiO1xuLy8gbGVmdCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxhcXVvOiBcIlxcMDBhYlwiO1xuLy8gcmlnaHQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yYXF1bzogXCJcXDAwYmJcIjtcblxuLy8gZW0gZGFzaCAobXV0dG9uKVxuJHNjdXQtbWRhc2g6IFwiXFwyMDE0XCI7XG4vLyBlbiBkYXNoIChudXQpXG4kc2N1dC1uZGFzaDogXCJcXDIwMTNcIjtcbi8vIGh5cGhlblxuJHNjdXQtaHlwaGVuOiBcIlxcMjAxMFwiO1xuXG4vLyBhbXBlcnNhbmRcbiRzY3V0LWFtcDogXCJcXDAwMjZcIjtcbi8vIGdyZWF0ZXIgdGhhblxuJHNjdXQtZ3Q6IFwiXFwwMDNlXCI7XG4vLyBsZXNzIHRoYW5cbiRzY3V0LWx0OiBcIlxcMDAzY1wiO1xuLy8gdGltZXNcbiRzY3V0LXRpbWVzOiBcIlxcMDBEN1wiO1xuLy8gYmlnIHRpbWVzXG4kc2N1dC1iaWd0aW1lczogXCJcXDI3MTVcIjtcbi8vIGNoZWNrbWFya1xuJHNjdXQtY2hlY2ttYXJrOiBcIlxcMjcxM1wiO1xuXG4vLyBzZWN0aW9uIHNpZ24gKGRvdWJsZSBTLCBodXJyaWNhbmUsIHNlY3Rpb25hbCBzeW1ib2wsIHRoZSBsZWdhbCBkb3VnaG51dCwgc2lnbnVtIHNlY3Rpb25pcylcbiRzY3V0LXNlY3Q6IFwiXFwwMGE3XCI7XG4vLyBwYXJhZ3JhcGggc3ltYm9sIChwaWxjcm93KVxuJHNjdXQtcGFyYTogXCJcXDAwYjZcIjtcblxuLy8gbWlkZG90IChpbnRlcnB1bmN0LCBpbnRlcnBvaW50KVxuJHNjdXQtbWlkZG90OiBcIlxcMDBiN1wiO1xuLy8gby1zbGFzaCAoc2xhc2hlZCBvKVxuJHNjdXQtb3NsYXNoOiBcIlxcMDBmOFwiO1xuLy8gYnVsbGV0XG4kc2N1dC1idWxsOiBcIlxcMjAyMlwiO1xuLy8gd2hpdGUgYnVsbGV0XG4kc2N1dC13aGlidWxsOiBcIlxcMjVFNlwiO1xuLy8gaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtaGVsbGlwOiBcIlxcMjAyNlwiO1xuLy8gdmVydGljYWwgZWxsaXBzaXNcbiRzY3V0LXZlbGxpcDogXCJcXDIyRUVcIjtcbi8vIG1pZGxpbmUgaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtbWlkaGVsbGlwOiBcIlxcMjJFRlwiO1xuXG4vLyB1cC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtdXRyaTogXCJcXDI1YjJcIjtcbi8vIGRvd24tcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWR0cmk6IFwiXFwyNWJjXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1sdHJpOiBcIlxcMjVjMFwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXJ0cmk6IFwiXFwyNWI2XCI7XG4vLyB1cC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtdXN0cmk6IFwiXFwyNWI0XCI7XG4vLyBkb3duLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1kc3RyaTogXCJcXDI1YmVcIjtcbi8vIGxlZnQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWxzdHJpOiBcIlxcMjVjMlwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXJzdHJpOiBcIlxcMjViOFwiO1xuLy8gZGlhbW9uZFxuJHNjdXQtZGlhbW9uZDogXCJcXDI1YzZcIjtcbi8vIGZpc2hleWVcbiRzY3V0LWZpc2hleWU6IFwiXFwyNWM5XCI7XG4vLyBidWxsc2V5ZVxuJHNjdXQtYnVsbHNleWU6IFwiXFwyNWNlXCI7XG4vLyBjaXJjbGVcbiRzY3V0LWNpcmNsZTogXCJcXDI1Y2ZcIjtcbi8vIHdoaXRlIGNpcmNsZVxuJHNjdXQtd2hpdGVjaXJjbGU6IFwiXFwyNWNiXCI7XG4vLyBzcXVhcmVcbiRzY3V0LXNxdWFyZTogXCJcXDI1YTBcIjtcbi8vIHdoaXRlIHNxdWFyZVxuJHNjdXQtd2hpdGVzcXVhcmU6IFwiXFwyNWExXCI7XG4vLyBzbWFsbCBzcXVhcmVcbiRzY3V0LXNzcXVhcmU6IFwiXFwyNWFhXCI7XG4vLyBzbWFsbCB3aGl0ZSBzcXVhcmVcbiRzY3V0LXN3aGl0ZXNxdWFyZTogXCJcXDI1YWJcIjtcblxuLy8gZ2VuZXJhbCBjdXJyZW5jeVxuJHNjdXQtY3VycmVuY3k6IFwiXFwwMGE0XCI7XG4vLyBjZW50XG4kc2N1dC1jZW50OiBcIlxcMDBhMlwiO1xuLy8gZG9sbGFyXG4kc2N1dC1kb2xsYXI6IFwiXFwwMDI0XCI7XG4vLyBwb3VuZFxuJHNjdXQtcG91bmQ6IFwiXFwwMGEzXCI7XG4vLyBldXJvXG4kc2N1dC1ldXJvOiBcIlxcMjBhY1wiO1xuLy8geWVuXG4kc2N1dC15ZW46IFwiXFwwMGE1XCI7XG4vLyBydXBlZVxuJHNjdXQtcnVwZWU6IFwiXFwyMEI5XCI7XG5AZnVuY3Rpb24gbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSkge1xuICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgYHNyY2AgdmFsdWVzLCBpbiBvcmRlciwgdGhhdFxuICAvLyBhIGdvb2QgYEBmb250LWZhY2VgIHdpbGwgbmVlZCwgaW5jbHVkaW5nIG9ubHlcbiAgLy8gdGhvc2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gdGhlIGxpc3QgYCRmb3JtYXRzYC5cbiAgJHJlc3VsdDogKCk7XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgJGVvdC12YWw6IHVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkZW90LXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZjIpIHtcbiAgICAkd29mZjItdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmMi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYpIHtcbiAgICAkd29mZi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgdHRmKSB7XG4gICAgJHR0Zi12YWw6IHVybCgnI3skZmlsZS1wYXRofS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR0dGYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBzdmcpIHtcbiAgICAkc3ZnLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkc3ZnLXZhbCwgY29tbWEpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQG1peGluIHNjdXQtZm9udC1mYWNlIChcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Z1xuKSB7XG5cbiAgQGlmIGluZGV4KCdpdGFsaWMnICdvYmxpcXVlJywgJHdlaWdodCkge1xuICAgICRzdHlsZTogJHdlaWdodDtcbiAgICAkd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcblxuICAgIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgICBzcmM6IHVybCgnI3skZmlsZS1wYXRofS5lb3QnKTtcbiAgICB9XG4gICAgc3JjOiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KTtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhhbmdpbmctaW5kZW50IChcbiAgJGluZGVudDogMWVtXG4pIHtcblxuICAvLyBwYWRkaW5nLWxlZnQgY3JlYXRlcyB0aGUgaW5kZW50LFxuICAvLyB3aGlsZSB0ZXh0LWluZGVudCBwdWxscyB0aGUgZmlyc3QgbGluZVxuICAvLyBiYWNrIHRvIHRoZSBlZGdlLlxuXG4gIHBhZGRpbmctbGVmdDogJGluZGVudDtcbiAgdGV4dC1pbmRlbnQ6IC0kaW5kZW50O1xuXG59XG5cbiVzY3V0LWhhbmdpbmctaW5kZW50IHtcbiAgQGluY2x1ZGUgc2N1dC1oYW5naW5nLWluZGVudDtcbn1cbkBtaXhpbiBzY3V0LWluZGVudGVkLXBzIChcbiAgJGluZGVudDogMS41ZW0sXG4gICRuby1maXJzdC1pbmRlbnQ6IHRydWVcbikge1xuXG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LWluZGVudDogJGluZGVudDtcbiAgfVxuXG4gIEBpZiAkbm8tZmlyc3QtaW5kZW50IHtcbiAgICBwOmZpcnN0LW9mLXR5cGUge1xuICAgICAgdGV4dC1pbmRlbnQ6IDA7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtaW5kZW50ZWQtcHMge1xuICBAaW5jbHVkZSBzY3V0LWluZGVudGVkLXBzO1xufVxuQG1peGluIHNjdXQta2V5LXZhbCAoXG4gICRkaXZpZGVyOiBcIjpcIixcbiAgJHBhZDogMC4yNWVtLFxuICAkaW5kZW50OiAxZW0sXG4gICRzcGFjaW5nOiAwLFxuICAkcGFkLWxlZnQ6IDBcbikge1xuXG4gICYgPiBkdCB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogJHBhZDtcbiAgICAgIEBpZiAkcGFkLWxlZnQgIT0gMCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkcGFkLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJiA+IGRkIHtcbiAgICBtYXJnaW4tbGVmdDogJGluZGVudDtcbiAgICBAaWYgJHNwYWNpbmcgIT0gMCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1rZXktdmFsIHtcbiAgQGluY2x1ZGUgc2N1dC1rZXktdmFsO1xufVxuQG1peGluIHNjdXQtbGluay1iYiAoXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHdpZHRoOiAxcHhcbikge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBib3JkZXItYm90dG9tLXdpZHRoOiAkd2lkdGg7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gIH1cblxufVxuXG4lc2N1dC1saW5rLWJiIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLWJiO1xufVxuLy8gU0NVVCBMSU5LIFVOU1RZTEVEXG4vLyBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dC8jbGluay11bnN0eWxlZFxuXG5AbWl4aW4gc2N1dC1saW5rLXVuc3R5bGVkKCkge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGluaGVyaXQ7XG5cbn1cblxuJXNjdXQtbGluay11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay11bnN0eWxlZCgpO1xufVxuXG5AbWl4aW4gc2N1dC1yZXZlcnNlLWl0YWxpY3MgKFxuICAkZWxlbWVudHM6IG51bGxcbikge1xuXG4gICRlbGVtZW50LWxpc3Q6IGVtLCBjaXRlLCBpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICN7am9pbigkZWxlbWVudC1saXN0LCAkZWxlbWVudHMpfSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICB9XG5cbn1cblxuJXNjdXQtcmV2ZXJzZS1pdGFsaWNzIHtcbiAgQGluY2x1ZGUgc2N1dC1yZXZlcnNlLWl0YWxpY3M7XG59XG5cbkBtaXhpbiBzY3V0LXNpZGUtbGluZWQgKFxuICAkaGVpZ2h0OiAxcHgsXG4gICRzcGFjZTogMC41ZW0sXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHYtYWRqdXN0OiBmYWxzZSxcbiAgJGRvdWJsZTogZmFsc2Vcbikge1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA1MCU7XG5cbiAgICBib3JkZXItdG9wLXN0eWxlOiAkc3R5bGU7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogJGhlaWdodDtcblxuICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICR2LWFkanVzdCAhPSBmYWxzZSB7XG4gICAgICBib3R0b206ICR2LWFkanVzdDtcbiAgICB9XG5cbiAgICBAaWYgJGRvdWJsZSAhPSBmYWxzZSB7XG4gICAgICBoZWlnaHQ6ICRkb3VibGU7XG4gICAgICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAkaGVpZ2h0O1xuICAgICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICY6YmVmb3JlIHtcbiAgICByaWdodDogJHNwYWNlO1xuICAgIG1hcmdpbi1sZWZ0OiAtNTAlO1xuICB9XG4gICY6YWZ0ZXIge1xuICAgIGxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6IC01MCU7XG4gIH1cblxufVxuXG4lc2N1dC1zaWRlLWxpbmVkIHtcbiAgQGluY2x1ZGUgc2N1dC1zaWRlLWxpbmVkO1xufVxuQG1peGluIHNjdXQtdHJ1bmNhdGUge1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG59XG5cbiVzY3V0LXRydW5jYXRlIHtcbiAgQGluY2x1ZGUgc2N1dC10cnVuY2F0ZTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BsYWNlaG9sZGVyc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NvbG9yc1wiO1xuQGltcG9ydCBcInRvb2xraXQvZm9udHNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ludHJpbnNpYy1yYXRpb1wiO1xuQGltcG9ydCBcInRvb2xraXQvbmVzdGVkLWNvbnRleHRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BhcmFsbGF4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9ydGxcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RhcmdldFwiO1xuQGltcG9ydCBcInRvb2xraXQvdHJpYW5nbGVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NlbnRlclwiO1xuQGltcG9ydCBcInRvb2xraXQvdmlld3BvcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3VuZGVybGluZVwiO1xuQGltcG9ydCBcInRvb2xraXQvYXJ0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9zZXQtbXVsdGlwbGVcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kVG9vbGtpdC1TZXR0aW5nczogKFxuICAnY2xlYXJmaXggZXh0ZW5kJzogZmFsc2UsXG4gICdjb2xvciBzdGFjayBhbW91bnRzJzogMjUlIDUwJSA3NSUgODUlIDkwJSxcbiAgJ3RpbnQgc2hhZGUgYW1vdW50cyc6IDc1JSA1MCUgMjUlLFxuICAndGludCBjb2xvcic6ICNmZmYsXG4gICdzaGFkZSBjb2xvcic6ICMwMDAsXG4gICdjb2xvciBzY2FsZSBzdGVwcyc6IDYsXG4gICdsaWdhdHVyZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2ZvbnQgZmFjZSB3ZWlnaHQnOiBub3JtYWwsXG4gICdmb250IGZhY2Ugc3R5bGUnOiBub3JtYWwsXG4gICdmb250IGZhY2UgaW5saW5lIHdvZmYnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBleHRlbmQnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBzcGVhayc6IGZhbHNlLFxuICAnZmFkZSBpbiBkdXJhdGlvbic6IDFzLFxuICAnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJzogJy53Zi1sb2FkaW5nJyxcbiAgJ2ZhZGUgaW4gZXh0ZW5kJzogZmFsc2UsXG4gICdpbnRyaW5zaWMgcmF0aW8nOiAxNi85LFxuICAnaW50cmluc2ljIHJhdGlvIHdpZHRoJzogMTAwJSxcbiAgJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cyc6ICc+IConLFxuICAnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJzogdG9wLFxuICAnaW50cmluc2ljIHJhdGlvIGV4dGVuZCc6IGZhbHNlLFxuICAnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnOiAxMDAlLFxuICAnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nOiBsZWZ0LFxuICAndHJpYW5nbGUgY29sb3InOiAjMDAwLFxuICAndHJpYW5nbGUgaGVpZ2h0JzogMWVtLFxuICAndHJpYW5nbGUgd2lkdGgnOiAxZW0sXG4gICd0cmlhbmdsZSBhbmdsZSc6IDAsXG4gICdwYXJhbGxheCBwZXJzcGVjdGl2ZSc6IDEsXG4gICdwYXJhbGxheCBlbGVtZW50JzogJ2JvZHknLFxuICAncGFyYWxsYXggaW9zJzogdHJ1ZSxcbiAgJ3BhcmFsbGF4IGRpc3RhbmNlJzogMCxcbiAgJ3ZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAndmVydGljYWwgZXh0ZW5kJzogZmFsc2UsXG4gICdob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JzogNTAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCc6IGZhbHNlLFxuICAndW5kZXJsaW5lIGJhY2tncm91bmQnOiAjZmZmLFxuICAndW5kZXJsaW5lIGNvbG9yJzogIzAwZSxcbiAgJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJzogdHJ1ZSxcbiAgJ3VuZGVybGluZSBkaXN0YW5jZSc6IDEsXG4gICd1bmRlcmxpbmUgd2lkdGgnOiAyLFxuICAndW5kZXJsaW5lIGV4dGVuZCc6IGZhbHNlLFxuICAnYXJ0IHBpeGVsIHNpemUnOiAxcHgsXG4gICdhcnQgY29sb3InOiBibGFjayxcbiAgJ2FydCBib3JkZXIgcmFkaXVzJzogMCVcbik7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTmV3IFNldHRpbmdzIG1vZHVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHbG9iYWxcbiRHbG9iYWxTZXR0aW5nczogJFRvb2xraXQtU2V0dGluZ3MgIWRlZmF1bHQ7XG4vLyBVc2VyXG4kVXNlclNldHRpbmdzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBVc2VyIFNldHRpbmcgRXhpc3RzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkVXNlclNldHRpbmdzLCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cy1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICRSZXR1cm47XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtaGFzKCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBHZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRHbG9iYWxTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWdldC1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHZhbHVlczogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJHZhbHVlczogbWFwLW1lcmdlKCR2YWx1ZXMsICgkc2V0dGluZzogc2V0dGluZy1nZXQoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWdldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctZ2V0KCRzZXR0aW5nKTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmdzIFNldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICRzZXR0aW5ncykgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQHJldHVybiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRSZXR1cm46ICgpO1xuXG4gIEBlYWNoICRLZXksICRWYWx1ZSBpbiAkVXNlclNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBpZigkc2V0dGluZyA9PSAkS2V5LCAkUmV0dXJuLCBtYXAtbWVyZ2UoJFJldHVybiwgKCRLZXk6ICRWYWx1ZSkpKTtcbiAgfVxuXG4gICRVc2VyU2V0dGluZ3M6ICRSZXR1cm4gIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkY2xlYXItdGhlLXNldHRpbmdzOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkVXNlclNldHRpbmdzOiAoKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1yZXNldCgpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1yZXNldCgpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgUGlja1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrKCRzZXR0aW5nLCAkaW5wdXQpIHtcbiAgQHJldHVybiBpZigkaW5wdXQgIT0gbnVsbCwgJGlucHV0LCBzZXR0aW5nLWdldCgkc2V0dGluZykpO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcsICRpbnB1dCBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHNldHRpbmctcGljaygkaW5wdXQsICRzZXR0aW5nKSkpO1xuICB9XG5cbiAgQHJldHVybiAkUmV0dXJuO1xufSIsIiRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQbGFjZWhvbGRlciBHZXQvU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpIHtcbiAgJHVuaXF1ZS1pZDogdW5pcXVlLWlkKCk7XG4gICRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiBtYXAtbWVyZ2UoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICgkaWQ6ICR1bmlxdWUtaWQpKSAhZ2xvYmFsO1xuICBAcmV0dXJuICR1bmlxdWUtaWQ7XG59XG5cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAkaWQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYXRlIFBsYWNlaG9sZGVyIENsYXNzIGFuZCBFeHRlbmRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCk7XG5cbiAgQGlmICRwbGFjZWhvbGRlci1pZCA9PSBudWxsIHtcbiAgICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCk7XG4gICAgQGF0LXJvb3QgJSN7JHBsYWNlaG9sZGVyLWlkfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGV4dGVuZCAlI3skcGxhY2Vob2xkZXItaWR9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFN0YXRpYyBNaXhpbiBIZWxwZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIG1peGluLWRyeWVyKCRpZCwgJGV4dGVuZDogdHJ1ZSkge1xuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTW9kZXJuIENsZWFyZml4IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjbGVhcmZpeCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2NsZWFyZml4IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY2xlYXJmaXgnKSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29tcGFzcyBFeHRlbnNpb24gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVGludCBhbmQgU2hhZGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTHVtYVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gbHVtYSgkY29sb3IpIHtcbiAgQHJldHVybiAocmVkKCRjb2xvcikgKiAuMjk5KSArIChncmVlbigkY29sb3IpICogLjU4NykgKyAoYmx1ZSgkY29sb3IpICogLjExNCk7XG59XG5cbkBmdW5jdGlvbiBsdW1hLWd0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpID49IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1sdGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA8PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtZGlmZigkY29sb3IxLCAkY29sb3IyKSB7XG4gIEByZXR1cm4gbHVtYSgkY29sb3IxKSAtIGx1bWEoJGNvbG9yMik7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU3RhY2tzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zdGFjaygkbWFpbiwgJHNlY29uZGFyeSwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCdjb2xvciBzdGFjayBhbW91bnRzJyk7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAxIHtcbiAgICAkYW1vdW50czogbnRoKCRhbW91bnRzLCAxKTtcbiAgfVxuXG4gICRzdGFjazogJG1haW47XG5cbiAgQGVhY2ggJGFtb3VudCBpbiAkYW1vdW50cyB7XG4gICAgJHN0YWNrOiBqb2luKCRzdGFjaywgbWl4KCRzZWNvbmRhcnksIG50aCgkc3RhY2ssIDEpLCAkYW1vdW50KSk7XG4gIH1cblxuICBAcmV0dXJuICRzdGFjaztcbn1cblxuLy8gVGludCBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBTaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBUaW50L1NoYWRlIFN0YWNrXG5AZnVuY3Rpb24gdGludC1zaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gICRjb2xvcnM6ICgpO1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ3RpbnQgc2hhZGUgYW1vdW50cycpO1xuICB9XG4gICRsZW5ndGg6IGxlbmd0aCgkYW1vdW50cyk7XG5cbiAgLy8gU2hhZGVzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHNoYWRlKCRjb2xvciwgbnRoKCRhbW91bnRzLCAkaSkpKTtcbiAgfVxuXG4gIC8vIEJhc2VcbiAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsICRjb2xvcik7XG5cbiAgLy8gVGludHNcbiAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkbGVuZ3RoIC0gMSB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHRpbnQoJGNvbG9yLCBudGgoJGFtb3VudHMsICRsZW5ndGggLSAkaSkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJGNvbG9ycztcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTY2FsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXNjYWxlKCRtYWluLCAkc2Vjb25kYXJ5LCAkc3RlcHM6IG51bGwpIHtcbiAgJHN0ZXBzOiBpZigkc3RlcHMgIT0gbnVsbCwgJHN0ZXBzLCB0b29sa2l0LWdldCgnY29sb3Igc2NhbGUgc3RlcHMnKSk7XG5cbiAgJGxpc3Q6ICRtYWluO1xuXG4gICRyZWQxOiByZWQoJG1haW4pO1xuICAkcmVkMjogcmVkKCRzZWNvbmRhcnkpO1xuICAkcmVkLWRpZmY6ICgoJHJlZDEgLSAkcmVkMikgLyAoKCRzdGVwcyAtIDEpKSk7XG5cbiAgJGh1ZTE6IGh1ZSgkbWFpbik7XG4gICRodWUyOiBodWUoJHNlY29uZGFyeSk7XG4gIEBpZiAoJGh1ZTIgKyAzNTkgLSAkaHVlMSkgPCBhYnMoJGh1ZTEgLSAkaHVlMikge1xuICAgICRodWUyOiAkaHVlMiArIDM1OTtcbiAgfVxuICAkaHVlLWRpZmY6ICgkaHVlMiAtICRodWUxKSAvICgkc3RlcHMgLSAxKTtcblxuICAkc2F0MTogc2F0dXJhdGlvbigkbWFpbik7XG4gICRzYXQyOiBzYXR1cmF0aW9uKCRzZWNvbmRhcnkpO1xuICAkc2F0LWRpZmY6IDA7XG4gIEBpZiAkc2F0MSA+ICRzYXQyIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MiAtICRzYXQxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDEgLSAkc2F0MikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkbHRlMTogbGlnaHRuZXNzKCRtYWluKTtcbiAgJGx0ZTI6IGxpZ2h0bmVzcygkc2Vjb25kYXJ5KTtcbiAgJGx0ZS1kaWZmOiAwO1xuICBAaWYgJGx0ZTEgPiAkbHRlMiB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTIgLSAkbHRlMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRsdGUtZGlmZjogKCRsdGUxIC0gJGx0ZTIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGFscDE6IGFscGhhKCRtYWluKTtcbiAgJGFscDI6IGFscGhhKCRzZWNvbmRhcnkpO1xuICAkYWxwLWRpZmY6IDA7XG4gIEBpZiAkYWxwMSA+ICRhbHAyIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMiAtICRhbHAxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGFscC1kaWZmOiAoJGFscDEgLSAkYWxwMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkaHVlLWhvbGQ6ICRodWUxO1xuICAkc2F0LWhvbGQ6ICRzYXQxO1xuICAkbHRlLWhvbGQ6ICRsdGUxO1xuICAkYWxwLWhvbGQ6ICRhbHAxO1xuICAkY29sb3ItaG9sZDogMDtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRzdGVwcyB7XG4gICAgJGh1ZS1ob2xkOiAkaHVlLWhvbGQgKyAkaHVlLWRpZmY7XG4gICAgJHNhdC1ob2xkOiAkc2F0LWhvbGQgKyAkc2F0LWRpZmY7XG4gICAgJGx0ZS1ob2xkOiAkbHRlLWhvbGQgKyAkbHRlLWRpZmY7XG4gICAgJGFscC1ob2xkOiAkYWxwLWhvbGQgKyAkYWxwLWRpZmY7XG5cbiAgICAkY29sb3ItaG9sZDogaHNsYSgkaHVlLWhvbGQsICRzYXQtaG9sZCwgJGx0ZS1ob2xkLCAkYWxwLWhvbGQpO1xuICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRjb2xvci1ob2xkKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRW5hYmxlIGxpZ2F0dXJlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2xpZ2F0dXJlIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2VuYWJsZSBsaWdhdHVyZXMnKSB7XG4gICAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhPTEsIGRsaWc9MVwiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tcy1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW8tZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJsaWdhXCIsXCJkbGlnXCI7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhY2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGZvbnQtZmFjZSgkbmFtZSwgJGZpbGVzLCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwsICRpbmxpbmUtd29mZjogbnVsbCkge1xuICAkd2VpZ2h0OiBpZigkd2VpZ2h0ICE9IG51bGwsICR3ZWlnaHQsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugd2VpZ2h0JykpO1xuICAkc3R5bGU6IGlmKCRzdHlsZSAhPSBudWxsLCAkc3R5bGUsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugc3R5bGUnKSk7XG4gICRpbmxpbmUtd29mZjogaWYoJGlubGluZS13b2ZmICE9IG51bGwsICRpbmxpbmUtd29mZiwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZicpKTtcblxuICAkZm9udC1zdGFjazogKCk7XG4gICRmb250LXNyYzogJyc7XG4gICRlb3Q6IGZhbHNlO1xuICAkZm9udC1leHRlbnNpb25zOiAoJ2VvdCc6ICdlbWJlZGRlZC1vcGVudHlwZScsICd3b2ZmMic6ICd3b2ZmMicsICd3b2ZmJzogJ3dvZmYnLCAndHRmJzogJ3RydWV0eXBlJywgJ3N2Zyc6ICdzdmcnKTtcblxuICBAZWFjaCAkZXh0LCAkZm9ybWF0IGluICRmb250LWV4dGVuc2lvbnMge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkZmlsZXMsICRleHQpIHtcbiAgICAgIEBpZiBmdW5jdGlvbi1leGlzdHMoaW5saW5lLWZvbnQtZmlsZXMpIGFuZCAkaW5saW5lLXdvZmYgPT0gdHJ1ZSBhbmQgKCRleHQgPT0gJ3dvZmYnIG9yICRleHQgPT0gJ3dvZmYyJykge1xuICAgICAgICAkZm9udC1zcmM6IGlubGluZS1mb250LWZpbGVzKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSk7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiBmdW5jdGlvbi1leGlzdHMoZm9udC11cmwpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGZvbnQtc3RhY2s6IGFwcGVuZCgkZm9udC1zdGFjaywgJGZvbnQtc3JjLCAnY29tbWEnKTtcbiAgICB9XG5cbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkbmFtZTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgQGlmICRlb3Qge1xuICAgICAgc3JjOiAkZW90O1xuICAgIH1cbiAgICBAaWYgbGVuZ3RoKCRmb250LXN0YWNrKSA+IDAge1xuICAgICAgc3JjOiAkZm9udC1zdGFjaztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJY29uIEZvbnRcbi8vIEZyb20gaHR0cDovL2ljb21vb24uaW9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGljb24tZm9udCgkZm9udC1zdGFjaywgJHNwZWFrOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRzcGVhazogaWYoJHNwZWFrICE9IG51bGwsICRzcGVhaywgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBzcGVhaycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBmb250LWZhbWlseTogJGZvbnQtc3RhY2s7XG4gIEBpZiAkc3BlYWsgPT0gZmFsc2Uge1xuICAgIHNwZWFrOiBub25lO1xuICB9XG4gIEBpbmNsdWRlIGljb24tZm9udC0tY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIGljb24tZm9udC0tY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaWNvbiBmb250IGNvcmUnKSB7XG4gICAgICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQpO1xuXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFkZSBJblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY29udGVudC1mYWRlLWluKCRkdXJhdGlvbjogbnVsbCwgJGxvYWRpbmc6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGR1cmF0aW9uOiBpZigkZHVyYXRpb24gIT0gbnVsbCwgJGR1cmF0aW9uLCB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpKTtcbiAgJGxvYWRpbmc6IGlmKCRsb2FkaW5nICE9IG51bGwsICRsb2FkaW5nLCB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIGFuZCAkZHVyYXRpb24gPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSBhbmQgJGxvYWRpbmcgPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY29udGVudCBmYWRlIGluJykge1xuICAgICAgQGluY2x1ZGUgY29udGVudC1mYWRlLWluKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGlmIG5vdCBtaXhpbi1leGlzdHMoJ3NpbmdsZS10cmFuc2l0aW9uJykge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBzaW5nbGUtdHJhbnNpdGlvbihvcGFjaXR5ICRkdXJhdGlvbik7XG4gICAgfVxuXG4gICAgI3skbG9hZGluZ30gJiB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGbHVpZCBFbWJlZHMgYW5kIHdoYXRldmVyIFdJVEggTk8gSkFWQVNDSVBUIVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gcGFyZW50Jykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIGNoaWxkJykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgdG9wOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuXG4gIHBhZGRpbmctI3skcG9zaXRpb259OiAoMSAvICRyYXRpbykgKiAkd2lkdGg7XG4gIHdpZHRoOiAkd2lkdGg7XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkZWxlbWVudHM6IGlmKCRlbGVtZW50cyAhPSBudWxsLCAkZWxlbWVudHMsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcblxuICBAZWFjaCAkZWxlbWVudCBpbiAkZWxlbWVudHMge1xuICAgICN7JGVsZW1lbnR9IHtcbiAgICBcdEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGlyKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRlbGVtZW50cywgJGV4dGVuZCwgJHBvc2l0aW9uKTtcbn1cblxuQG1peGluIGlyLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xufSIsIi8vIHNpbXBsZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb250ZXh0IG9mIGEgbmVzdGVkIHBlcmNlbnRhZ2UuXG5AZnVuY3Rpb24gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuXG4gIC8vIEZpcnN0IGxldmVsIGRlZXAgaXMgYWx3YXlzIDEwMCVcbiAgJHBlcmNlbnRhZ2U6IDEwMCU7XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggbGV2ZWxcbiAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAvLyBJbnZlcnQgdGhlIHBlcmNlbnRhZ2UgdG8gZmluZCBjb250ZXh0XG4gICAgJHBlcmNlbnRhZ2U6IHBlcmNlbnRhZ2UoJHBlcmNlbnRhZ2UgLyAkY29udGV4dCk7XG4gIH1cbiAgLy8gUmV0dXJuIGZpbmFsIHBlcmNlbnRhZ2VcbiAgQHJldHVybiAkcGVyY2VudGFnZTtcbn1cblxuLy8gbWl4aW4gdG8gbWFrZSB0aGluZ3MgZWFzaWVyXG5AbWl4aW4gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJykpO1xuXG4gIHdpZHRoOiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpO1xuICBAaWYgJHBvc2l0aW9uID09IFwiY2VudGVyXCIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtLjU7XG4gIH1cbiAgQGlmICRwb3NpdGlvbiA9PSBcInJpZ2h0XCIge1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLTEgKyAxMDAlO1xuICB9XG59IiwiLy8gTWFnaWMgcGFyYWxsYXggbWl4aW5zXG5AbWl4aW4gcGFyYWxsYXgtaW5pdCgkcGVyc3BlY3RpdmU6IG51bGwsICRlbGVtZW50OiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG5cbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRlbGVtZW50OiBpZigkZWxlbWVudCAhPSBudWxsLCAkZWxlbWVudCwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGVsZW1lbnQnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBAaWYgJGVsZW1lbnQgPT0gJ2JvZHknIHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBodG1sLCBib2R5IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuICAgICAgYm9keSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRlbGVtZW50ID09IHRoaXMge1xuICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBhdC1yb290ICN7JGVsZW1lbnR9IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlOiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgb3ZlcmZsb3c6IGF1dG87XG4gIEBpZiBtaXhpbi1leGlzdHMocGVyc3BlY3RpdmUpIHtcbiAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUgKiAxcHgpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gICAgcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgfVxuICAvLyBBbGxvd3MgZm9yIHNtb290aCBzY3JvbGxpbmcgYnV0IGRpc2FibGVzIHBhcmFsbGF4IGVmZmVjdHMuXG4gIEBpZiAkcGFyYWxsYXgtaW9zID09IGZhbHNlIHtcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cbiAgLy8gTWFrZSBzdXJlIDNEIHBlcnNwZWN0aXZlIGlzIHByZXNlcnZlZFxuICAmLCAmICoge1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtLXN0eWxlKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUocHJlc2VydmUtM2QpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgoJGRpc3RhbmNlOiBudWxsLCAkcGVyc3BlY3RpdmU6IG51bGwpIHtcblxuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBkaXN0YW5jZScpKTtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG5cbiAgJHRyYW5zZm9ybTogdHJhbnNsYXRlWigkZGlzdGFuY2UgKiAkcGVyc3BlY3RpdmUgKiAxcHgpIHNjYWxlKGFicygkZGlzdGFuY2UgLSAxKSk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zZm9ybSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICAgIHRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgfVxuXG4gIHotaW5kZXg6ICRkaXN0YW5jZSAqIDEwMDtcbn1cbiIsIkBtaXhpbiBydGwoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgJF9wcm9wZXJ0eTogJHByb3BlcnR5O1xuICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcblxuICBAaWYgbGVuZ3RoKCR2YWx1ZSkgPT0gNCB7XG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICN7JHByb3BlcnR5fTogbnRoKCR2YWx1ZSwgMSkgbnRoKCR2YWx1ZSwgNCkgbnRoKCR2YWx1ZSwgMykgbnRoKCR2YWx1ZSwgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSAtIDEpICsgJ3JpZ2h0JztcbiAgICB9XG4gICAgQGVsc2UgaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpIC0gMSkgKyAnbGVmdCc7XG4gICAgfVxuXG4gICAgQGlmICRwcm9wZXJ0eSAhPSAkX3Byb3BlcnR5IHtcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIkBtaXhpbiB0YXJnZXQoJHRhcmdldCkge1xuICBAYXQtcm9vdCB7XG4gICAgLyohIEB7dGFyZ2V0OiAjeyR0YXJnZXR9fSAqL1xuICAgICYge1xuICAgICAgQGNvbnRlbnQ7ICBcbiAgICB9XG4gICAgLyohIHt0YXJnZXQ6ICN7JHRhcmdldH19QCAqLyAgXG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERyYXcgdHJpYW5nbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIHRyaWFuZ2xlKCRjb2xvcjogbnVsbCwgJGhlaWdodDogbnVsbCwgJHdpZHRoOiBudWxsLCAkYW5nbGU6IG51bGwpIHtcblxuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBjb2xvcicpKTtcbiAgJGhlaWdodDogaWYoJGhlaWdodCAhPSBudWxsLCAkaGVpZ2h0LCB0b29sa2l0LWdldCgndHJpYW5nbGUgaGVpZ2h0JykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSB3aWR0aCcpKTtcbiAgJGFuZ2xlOiBpZigkYW5nbGUgIT0gbnVsbCwgJGFuZ2xlLCB0b29sa2l0LWdldCgndHJpYW5nbGUgYW5nbGUnKSk7XG5cbiAgQGlmIG50aCgkYW5nbGUsIDEpID09IFwidG9wXCIgb3IgbnRoKCRhbmdsZSwgMSkgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiBcIiN7JGFuZ2xlfVwiO1xuICB9XG5cbiAgQGlmICRhbmdsZSA9PSBcInRvcFwiIHtcbiAgICAkYW5nbGU6IDA7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwicmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDI7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMTtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogNDUgKiA0O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwibGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDU7XG4gIH1cblxuICBAaWYgdW5pdCgkaGVpZ2h0KSA9PSBcIlwiIG9yIHVuaXQoJGhlaWdodCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JGhlaWdodH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciBoZWlnaHQuXCJcbiAgfVxuXG4gIEBpZiB1bml0KCR3aWR0aCkgPT0gXCJcIiBvciB1bml0KCR3aWR0aCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JHdpZHRofSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIHdpZHRoLlwiXG4gIH1cblxuICAvLyBvZmZzZXQgNDVkZWcgdG8gbWFrZSBlYWNoIHNpZGUgc3RhcnQgYXQgMFxuICAkZGVnOiAkYW5nbGUgKyA0NTtcbiAgLy8gaWYgdW5pdHMsIHJlbW92ZSB1bml0c1xuICBAaWYgdW5pdCgkZGVnKSA9PSBkZWcge1xuICAgICRkZWc6ICRkZWcgLyAxZGVnO1xuICB9XG4gIC8vIHNoaWZ0IHRvIGJlIG9uIGEgc2NhbGUgZnJvbSAwIHRvIDkwLlxuICBAd2hpbGUgJGRlZyA+IDkwIHtcbiAgICAkZGVnOiAkZGVnIC0gOTA7XG4gIH1cbiAgQHdoaWxlICRkZWcgPCAwIHtcbiAgICAkZGVnOiAkZGVnICsgOTA7XG4gIH1cbiAgLy8gR2V0IGEgcmF0aW8gb2YgOTAgdG8gbXVsdGlwbHkgYnkuXG4gICRkZWc6ICRkZWcgLyA5MDtcblxuICAvLyBtYWtlIHN1cmUgbWV0cmljcyBhcmUgcmVzZXRcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAvLyBydW4gdGhyb3VnaCBzaWRlc1xuICBAaWYgJGFuZ2xlIDw9IDQ1IG9yICRhbmdsZSA+IDMxNSB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSkgJGhlaWdodCAoJHdpZHRoICogJGRlZyk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDQ1IGFuZCAkYW5nbGUgPD0gMTM1IHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiAkZGVnKSAwICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAxMzUgYW5kICRhbmdsZSA8PSAyMjUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpIDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAyMjUgYW5kICRhbmdsZSA8PSAzMTUge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGggKCRoZWlnaHQgKiAkZGVnKSAwO1xuICB9XG59IiwiLy8gVmVydGljYWxseSBjZW50ZXIgYW55dGhpbmcsIGxpdGVyYWxseSBhbnl0aGluZy5cbi8vIGh0dHA6Ly96ZXJvc2l4dGhyZWUuc2UvdmVydGljYWwtYWxpZ24tYW55dGhpbmctd2l0aC1qdXN0LTMtbGluZXMtb2YtY3NzL1xuQG1peGluIHZlcnRpY2FsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgndmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcblxuICB0b3A6ICRtaWRwb2ludDtcbiAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd2ZXJ0aWNhbCBjZW50ZXInKSB7XG4gICAgICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIb3Jpem9udGFsIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIEBpZiAkbWlkcG9pbnQgIT0gMCUge1xuICAgIGxlZnQ6ICRtaWRwb2ludDtcbiAgfVxuXG4gIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWJzb2x1dGUgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIoJHZlcnRpY2FsOiBudWxsLCAkaG9yaXpvbnRhbDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICR2ZXJ0aWNhbDogaWYoJHZlcnRpY2FsICE9IG51bGwsICR2ZXJ0aWNhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIHRvcDogJHZlcnRpY2FsO1xuICBAaWYgJGhvcml6b250YWwgIT0gMCUge1xuICAgIGxlZnQ6ICRob3Jpem9udGFsO1xuICB9XG5cbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIH1cbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxuXG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDU1MgbGV2ZWwgNCBWaWV3cG9ydFxuLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLWRldmljZS1hZGFwdC8jdGhlLWF0dmlld3BvcnQtcnVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gdmlld3BvcnQge1xuICBALXdlYmtpdC12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tb3otdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbXMtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEB2aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuIiwiQG1peGluIHVuZGVybGluZSgkYmFja2dyb3VuZDogbnVsbCwgJGNvbG9yOiBudWxsLCAkY2xlYXItZGVzY2VuZGVyczogbnVsbCwgJGRpc3RhbmNlOiBudWxsLCAkd2lkdGg6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGJhY2tncm91bmQ6IGlmKCRiYWNrZ3JvdW5kICE9IG51bGwsICRiYWNrZ3JvdW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGJhY2tncm91bmQnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjb2xvcicpKTtcbiAgJGNsZWFyLWRlc2NlbmRlcnM6IGlmKCRjbGVhci1kZXNjZW5kZXJzICE9IG51bGwsICRjbGVhci1kZXNjZW5kZXJzLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnKSk7XG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBkaXN0YW5jZScpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIHdpZHRoJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gICRQWDogLjA2MjVlbTtcblxuICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKGJhY2tncm91bmQtaW1hZ2UpIGFuZCBmdW5jdGlvbi1leGlzdHMobGluZWFyLWdyYWRpZW50KSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgIGxpbmVhci1ncmFkaWVudChib3R0b20sICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSlcbiAgICApO1xuICB9XG4gIEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpO1xuICB9XG4gIGJhY2tncm91bmQtc2l6ZTogKDIgKiAkUFgpICgoMSArICR3aWR0aCkgKiAkUFgpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwICgoJHdpZHRoKSAqICRQWCkgKyAkZGlzdGFuY2U7XG5cbiAgQGlmICRjbGVhci1kZXNjZW5kZXJzIHtcbiAgICB0ZXh0LXNoYWRvdzogKDEgKiAkUFgpICgxICogJFBYKSAwICRiYWNrZ3JvdW5kLCAoLTEgKiAkUFgpIDAgMCAkYmFja2dyb3VuZDtcbiAgfVxufVxuXG5AbWl4aW4gdW5kZXJsaW5lLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndW5kZXJsaW5lJykge1xuICAgICAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQVJUIVxuLy8gSW5zcGlyZWQgYnkgaHR0cDovL2VscnVtb3JkZWxhbHV6LmdpdGh1Yi5pby9QaXhlbGF0b3IvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhcnQoJGFydCwgJHB4LXNpemU6IG51bGwsICRjb2xvcjogbnVsbCwgJHJhZGl1czogbnVsbCkge1xuICAkcHgtc2l6ZTogaWYoJHB4LXNpemUgIT0gbnVsbCwgJHB4LXNpemUsIHRvb2xraXQtZ2V0KCdhcnQgcGl4ZWwgc2l6ZScpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgnYXJ0IGNvbG9yJykpO1xuICAkcmFkaXVzOiBpZigkcmFkaXVzICE9IG51bGwsICRyYWRpdXMsIHRvb2xraXQtZ2V0KCdhcnQgYm9yZGVyIHJhZGl1cycpKTtcblxuICAkYnVpbGQ6ICgpO1xuICAkeTogJHB4LXNpemU7XG4gICR4OiAwO1xuXG4gIGhlaWdodDogJHB4LXNpemU7XG4gIHdpZHRoOiAkcHgtc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0cl9sZW5ndGgoJGFydCkge1xuICAgICRjaGFyOiBzdHJfc2xpY2UoJGFydCwgJGksICRpKTtcbiAgICAkeDogJHggKyAkcHgtc2l6ZTtcblxuICAgIEBpZiAkY2hhciA9PSAnbicge1xuICAgICAgJHk6ICR5ICsgJHB4LXNpemU7XG4gICAgICAkeDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGNoYXIgIT0gJyAnIHtcbiAgICAgICRib3JkZXI6ICR4ICR5IDAgJGNvbG9yO1xuICAgICAgJGJ1aWxkOiBhcHBlbmQoJGJ1aWxkLCAkYm9yZGVyLCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgYm94LXNoYWRvdzogJGJ1aWxkO1xufSIsIkBtaXhpbiBzZXQtbXVsdGlwbGUoJHZhbHVlLCAkcHJvcGVydGllcy4uLikge1xuICAkcHJvcGVydHktbGVuZ3RoOiBsZW5ndGgoJHByb3BlcnRpZXMpO1xuICAkZXJyb3ItbXNnOiBcIlRoZSBgc2V0LW11bHRpcGxlYCBtaXhpbiByZXF1aXJlcyB5b3UgdG8gcGFzcyBpbiBhIGxpc3Qgb2YgcHJvcGVydGllcyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50XCI7XG5cbiAgQGlmICRwcm9wZXJ0eS1sZW5ndGggPCAxIHtcbiAgICBAaWYgZmVhdHVyZS1leGlzdHMoYXQtZXJyb3IpIHtcbiAgICAgIEBlcnJvciAkZXJyb3ItbXNnO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAkZXJyb3ItbXNnO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgaW4gaXMgYSB3aGl0ZS1zcGFjZWQgc2VwYXJhdGVkIGxpc3QuXG4gICRwcm9wZXJ0aWVzOiBpZigkcHJvcGVydHktbGVuZ3RoID09IDEsIG50aCgkcHJvcGVydGllcywgMSksICRwcm9wZXJ0aWVzKTtcblxuICBAZWFjaCAkcHJvcGVydHkgaW4gJHByb3BlcnRpZXMge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlXG4gIH1cbn1cbiIsIi8vICBNb2R1bGUgU2NhbGUgYW5kIGJhc2UgZm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiRiYXNlLWZvbnQtc2l6ZTogICAxNHB4O1xuJGlkZWFsLWZvbnQtc2l6ZTogIDIycHg7XG4vLyAkYmFzZS1saW5lLWhlaWdodDogbXMoMSwgJGJhc2UtZm9udC1zaXplKTtcblxuJHJoeXRobS11bml0OiBcInJlbVwiO1xuJHJoeXRobS1nYXA6IDhweDtcbiRyZW0td2l0aC1weC1mYWxsYmFjazogZmFsc2U7XG5cbiRzY3V0LXJlbS1iYXNlOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UtZm9udC1zaXplKTtcblxuXG4vLyB7eyBDb21wb25lbnQgc2l6ZSB9fVxuJGdsb2JhbC1yYWRpdXM6IDNweDtcbiIsIi8vICBHcmlkIHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuXG4kbGF5b3V0LWJhc2U6IChcbiAgZ3V0dGVyczogMS81LFxuICBjb2x1bW4td2lkdGg6IDgwcHgsXG4gIC8vIGd1dHRlci1wb3NpdGlvbjogaW5zaWRlLXN0YXRpYyxcbiAgZGVidWc6IChcbiAgICAvLyBpbWFnZTogc2hvdyxcbiAgKSxcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiB0cnVlLFxuICAgIHJlbTogZmFsc2UsXG4gICksXG4pO1xuJHN1c3k6IGxheW91dCg1ICRsYXlvdXQtYmFzZSk7XG5cbi8vIHt7IEVsZW1lbnQgdHdpY2sgcG9pbnRzIH19XG5cbi8vIHt7IERldmljZSBsYXlvdXRzIH19XG4kc3VzeS1tZWRpYTogKFxuICAnbW9iaWxlJzogJyhtYXgtd2lkdGg6IDQxNHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiAnKG1heC13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogJyhtYXgtd2lkdGg6IDEwMjRweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICd0YWJsZXQnOiAnKG1pbi13aWR0aDogNzY4cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdC1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlLW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdkZXNrdG9wJzogJyhtaW4td2lkdGg6IDEyMDBweCknLFxuICAnY2F0ZWdvcnktbWVudSc6ICcobWluLXdpZHRoOiAxMDI0cHgpJ1xuKTtcbiR0YWJsZXQ6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIHRhYmxldCksXG4gIGxheW91dDogOSAuNVxuKTtcbiR0YWJsZXQtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkdGFibGV0LCBsYXlvdXQpKTtcbiRkZXNrdG9wOiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCBkZXNrdG9wKSxcbiAgbGF5b3V0OiAxMiAxLjUgc3BsaXRcbik7XG4kZGVza3RvcC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCRkZXNrdG9wLCBsYXlvdXQpKTtcbiRkZXNrdG9wLWdyaWQtcGFkZGluZzogc2N1dC1yZW0oMTUpO1xuXG4vLyAge3sgTGF5ZXJzIC0tLS0tLSB9fVxuJGxheWVyczogKFxuICBiYXNlLFxuICBoZWFkZXItbWVudSxcbiAgZHJhd2VyLFxuICBkcmF3ZXItc2hhZG93LFxuICBkcmF3ZXItbmF2LFxuKTsiLCIvLyAgU2V0dGluZ3Ncbi8vICA9PT09PT09PVxuXG4kY29sb3ItbGlnaHQtc2F0dXJhdGlvbjogOTMlO1xuXG4vLyAgQ29sb3JzXG4vLyAgPT09PT09XG5cbiRncmF5LWJhc2U6ICAgICAjMDAwICFkZWZhdWx0O1xuJGdyYXktZGFya2VyOiAgIHRpbnQoJGdyYXktYmFzZSwgMTMuNSUpICFkZWZhdWx0O1xuJGdyYXktZGFyazogICAgIHRpbnQoJGdyYXktYmFzZSwgMjAlKSAgICFkZWZhdWx0O1xuJGdyYXk6ICAgICAgICAgIHRpbnQoJGdyYXktYmFzZSwgMzMuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHQ6ICAgIHRpbnQoJGdyYXktYmFzZSwgNDYuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHRlcjogIHRpbnQoJGdyYXktYmFzZSwgOTMuNSUpICFkZWZhdWx0O1xuXG4vLyAgVGV4dHNcbi8vICAtLS0tLVxuXG4kdGV4dC1jb2xvcjogJGdyYXktZGFyaztcblxuLy8gIFBhbGxldGVcbi8vICAtLS0tLS0tLS0tLVxuXG4kYmx1ZTogIzJkNmVjNjtcbiRibHVlLWRhcms6IHJnYigwLCA2OSwgMTY0KTtcbiRibHVlLWxpZ2h0OiAjZDhlOWZmO1xuJHllbGxvdzogI2ZjOTYwMDtcbiR5ZWxsb3ctZGFyazogI2I4NmUwMDtcbiR5ZWxsb3ctbGluazogI2ZmZDgwMDtcbiRvcmFuZ2U6ICNmYzQ3MDA7XG4kb3JhbmdlLWRhcms6ICNiODZlMDA7XG4kcmVkOiByZ2IoMjA2LCA2OCwgNjIpO1xuJGdyZWVuOiByZ2IoMjgsIDE0OSwgMjIpO1xuJHBpbms6IHJnYigxOTcsIDMxLCAxMjQpO1xuXG4kcHJpbWFyeTogc2hhZGUoIzQyOGJjYSwgNi41JSk7XG4kc3VjY2VzczogIzVjYjg1YztcbiRpbmZvOiAgICAjNWJjMGRjO1xuJHdhcm5pbmc6ICNmMGFkNGU7XG4kZGFuZ2VyOiAgI2Q5NTM0ZjtcblxuJGlucHV0LWJvcmRlcjogI2U0ZTRlNDtcbiRib3JkZXItZ3JheTogIzkxOTE5MTtcbiRiYWNrZ3JvdW5kLWdyYXk6ICNlOWU5ZTk7XG5cbi8vICBMaW5rc1xuLy8gIC0tLS0tXG5cbiRsaW5rLWNvbG9yOiAgICAgICAgICAgIzAwMCAhZGVmYXVsdDtcbiRsaW5rLWhvdmVyLWNvbG9yOiAgICAgc2hhZGUoJGxpbmstY29sb3IsIDE1JSkgIWRlZmF1bHQ7XG4kbGluay1mb2N1cy1jb2xvcjogICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay1hY3RpdmUtY29sb3I6ICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay12aXNpdGVkLWNvbG9yOiAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG5cbi8vICBOUHJvZ3Jlc3Ncbi8vICAtLS0tLS0tLS1cbiRucHJvZ3Jlc3MtY29sb3I6ICAgICRwcmltYXJ5O1xuIiwiLy8gIEZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogICByaWdodDtcblxuLy8g5YOF6Yed5bCN6Iux5paHXG4vLyBAZm9udC1mYWNlIHtcbi8vICAgZm9udC1mYW1pbHk6IEVuZ2xpc2g7XG4vLyAgIHVuaWNvZGUtcmFuZ2U6IFUrMDAtMDI0Rjtcbi8vICAgc3JjOiBsb2NhbChIZWx2ZXRpY2EpO1xuLy8gfVxuXG4kc2FuczogICAgSGVsdmV0aWNhTmV1ZS1MaWdodFxuICAgICAgICwgJ0hlbHZldGljYSBOZXVlIExpZ2h0J1xuICAgICAgICwgJ0hlbHZldGljYSBOZXVlJ1xuICAgICAgICwgIEhlbHZldGljYVxuICAgICAgICwgJ0hlaXRpIFRDJ1xuICAgICAgICwgJ0xpSGVpIFBybydcbiAgICAgICAsICdNaWNyb3NvZnQgSmhlbmdIZWknXG4gICAgICAgLCAn5b6u6Luf5q2j6buR6auUJ1xuICAgICAgICwgIEFyaWFsXG4gICAgICAgLCAgc2Fucy1zZXJpZjtcblxuJHNlcmlmOiAgJ1BUIFNlcmlmJ1xuICAgICAgICwgR2VvcmdpYVxuICAgICAgICwgVGltZXNcbiAgICAgICAsICdUaW1lcyBOZXcgUm9tYW4nXG4gICAgICAgLCAnU29uZ3RpIFRDJ1xuICAgICAgICwgJ0hpcmFnaW5vIE1pbmNobyBQcm9OJ1xuICAgICAgICwgc2VyaWY7XG5cbiRiYXNlLWZvbnQtZmFtaWx5OiAkc2FuczsiXSwibWFwcGluZ3MiOiJBOENBQTs7Ozs7RUFLRTtBOUNNc0IsQUFBQSwyQkFBMkI7QUFDbkQsQUFBQSxvQkFBb0I7QUFDcEIsQUFBQSx1QkFBdUI7QUFDdkIsQUFBQSxzQkFBc0IsQ0FBQztFQUFFLE9BQU8sRUFBRSxJQUFLLEdBQUk7O0FBRTNDLEFBQUEsYUFBYSxDQUFDO0VBQ1osT0FBTyxFQUFFLElBQUssR0FDZjs7QUFDRCxBQUFBLHdCQUF3QixDQUFDO0VBQ3ZCLFNBQVMsRUFBRSxHQUFJLEdBS2hCO0U2Q3lCRyxNQUFNLEVBQUwsU0FBUyxFQUFFLEtBQUs7STdDL0JyQixBQUFBLHdCQUF3QixDQUFDO01BRUUsU0FBUyxFQUFFLElBQUssR0FJMUM7RTZDeUJHLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtJN0MzQmxCLEFBSkosVUFJYyxDQUpkLHdCQUF3QixDQUlQO01BQUUsU0FBUyxFQUFFLEtBQU0sR0FBSTs7QUFHeEMsQUFBQSxzQkFBc0IsQ0FBQztFQUNyQixPQUFPLEVBQUUsSUFBSztFQUNkLFNBQVMsRUFBRSxRQUFTO0VBQ3BCLGVBQWUsRUFBRSxhQUFjO0VBQy9CLElBQUksRUFBRSxHQUFJO0VBQ1YsWUFBWSxFQzVCbUIsSUFBVyxHRGdDM0M7RTZDZUcsTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO0k3Q3hCckIsQUFBQSxzQkFBc0IsQ0FBQztNQU9uQixhQUFhLEVBQUUsVUFBVyxHQUU3Qjs7QUFDRCxBQUFBLG9CQUFvQixDQUFDO0VBQ25CLE1BQU0sRUFBRSxJQUFJLENDcENVLENBQU87RURxQzdCLFNBQVMsRUFBRSxJQUFLLEdBS2pCO0U2Q09HLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztJN0NkckIsQUFBQSxvQkFBb0IsQ0FBQztNQUlqQixNQUFNLEVBQUUsQ0FBQyxDQ3ZDVyxDQUFPO01Ed0MzQixLQUFLLEVBQUUsSUFBSyxHQUVmOztBQUNELEFBQUEsbUJBQW1CLENBQUM7RUFBRSxJQUFJLEVBQUUsU0FBUyxDa0VyQjlCLE9BQU8sR2xFcUJpQzs7QTZDTTNDLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztFN0NIbkIsQUFBQSx1QkFBdUI7RUFDdkIsQUFBQSxzQkFBc0IsQ0FBQztJQUNyQixPQUFPLEVBQUUsS0FBTTtJQUNmLE1BQU0sRUFBRSxDQUFFLEdBQ1giLCJuYW1lcyI6W119 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.faq-list__term {
  font-weight: 700;
  font-size: 16px; }

.faq-list__term::before {
  content: 'Q.'; }

.faq-list__desc {
  margin-left: 0;
  padding-left: 22px;
  text-indent: -22px; }

.faq-list__desc::before {
  content: "A.";
  font-weight: 700;
  font-size: 16px;
  margin-right: 3px; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2ZhcS1saXN0LnNjc3MiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19mYXEtbGlzdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19taXhpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fY2xhc3Nlcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvX3N1LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3V0aWxpdGllcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX2Zsb2F0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zaGFyZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19wcmVmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3JlbS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2luc3BlY3Quc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19vdXRwdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19kaXJlY3Rpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fZW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3JpZHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3V0dGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19nYWxsZXJ5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcm93cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmxlZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19icmVha3BvaW50LXBsdWdpbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3NjdXQvZGlzdC9fc2N1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy9fdG9vbGtpdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wbGFjZWhvbGRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ZvbnRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ludHJpbnNpYy1yYXRpby5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19uZXN0ZWQtY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wYXJhbGxheC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19ydGwuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdGFyZ2V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RyaWFuZ2xlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NlbnRlci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L192aWV3cG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L191bmRlcmxpbmUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fYXJ0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldC1tdWx0aXBsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19zY2FsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19mb250LnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLSB2ZW5kb3IgbWl4aW4gbGlicmFyaWVzIC0tLS1cbkBpbXBvcnQgXCJtaXhpbnNcIixcbiAgICAgICAgXCJjbGFzc2VzXCIsXG4gICAgICAgIFwifnN1c3lcIixcbiAgICAgICAgXCJ+c2N1dFwiLFxuICAgICAgICBcIn5zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdFwiO1xuXG4vLyAtLS0tIHZhcmlhYmxlcyBhbmQgY29uZmlnIC0tLS1cbkBpbXBvcnQgXCJzZXR0aW5ncy9zY2FsZVwiLFxuICAgICAgICBcInNldHRpbmdzL2dyaWRcIixcbiAgICAgICAgXCJzZXR0aW5ncy9jb2xvcnNcIixcbiAgICAgICAgXCJzZXR0aW5ncy9mb250XCI7LmZhcS1saXN0X190ZXJtIHtcbiAgdGV4dDogYm9sZCAxNnB4O1xuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICdRLic7XG4gIH1cbn1cbi5mYXEtbGlzdF9fZGVzYyB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBwYWRkaW5nLWxlZnQ6IHIoMykgLSAycHg7XG4gIHRleHQtaW5kZW50OiByKC0zKSArIDJweDtcbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIkEuXCI7XG4gICAgdGV4dDogYm9sZCAxNnB4O1xuICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICB9XG59IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiQThDQUE7Ozs7O0VBS0U7QTlDTXNCLEFBQUEsZUFBZSxDQUFDO0VBQ3RDLElBQUksRUFBRSxTQUFVLEdBSWpCO0VBTHVCLEFBQUEsZUFBZSxBQUVwQyxRQUFRLENBQUM7SUFDUixPQUFPLEVBQUUsSUFBSyxHQUNmOztBQUVILEFBQUEsZUFBZSxDQUFDO0VBQ2QsV0FBVyxFQUFFLENBQUU7RUFDZixZQUFZLEVBQUUsSUFBQztFQUNmLFdBQVcsRUFBRSxLQUFDLEdBTWY7RUFURCxBQUFBLGVBQWUsQUFJWixRQUFRLENBQUM7SUFDUixPQUFPLEVBQUUsSUFBSztJQUNkLElBQUksRUFBRSxTQUFVO0lBQ2hCLFlBQVksRUFBRSxHQUFJLEdBQ25CIiwibmFtZXMiOltdfQ== */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.info-section__heading {
  margin-top: 8px;
  margin-bottom: 8px;
  padding: 4px 8px;
  font-size: 18px;
  color: #fff; }

.info-section__heading--gray {
  color: #000;
  background-color: #e9e9e9; }

.info-section__heading--blue {
  background-color: #2d6ec6; }

.info-section__content {
  padding: 0 8px; }

.info-section__info {
  margin-top: 8px;
  margin-bottom: 8px; }

@media (min-width: 1200px) {
  .order-info {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between; } }
@media (min-width: 1200px) {
  .order-info__cell {
    -webkit-box-flex: 1;
    -ms-flex: 1 0 auto;
    flex: 1 0 auto; } }
.order-info__cell + .order-info__cell {
  margin-top: 8px; }

@media (min-width: 1200px) {
  .order-info__cell + .order-info__cell {
    margin-top: 0;
    padding-left: 16px;
    -webkit-box-flex: 0;
    -ms-flex: 0 0 520px;
    flex: 0 0 520px;
    border-left: 1px solid #e4e4e4; } }
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2luZm8uc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2luZm8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy5pbmZvLXNlY3Rpb25fX2hlYWRpbmcge1xuICBtYXJnaW46IHIoMSkgbigpO1xuICBwYWRkaW5nOiByKC41KSByKDEpO1xuICB0ZXh0OiAxOHB4ICNmZmY7XG5cbiAgJi0tZ3JheSB7XG4gICAgY29sb3I6ICMwMDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtZ3JheTtcbiAgfVxuICAmLS1ibHVlIHsgYmFja2dyb3VuZC1jb2xvcjogJGJsdWU7IH1cbn1cbi5pbmZvLXNlY3Rpb25fX2NvbnRlbnQgeyBwYWRkaW5nOiAwIHIoMSk7IH1cbi5pbmZvLXNlY3Rpb25fX2luZm8geyBtYXJnaW46IHIoMSkgbigpOyB9XG5cbi5vcmRlci1pbmZvIHtcbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG59XG4ub3JkZXItaW5mb19fY2VsbCB7XG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICBmbGV4OiAxIDAgYXV0bztcbiAgfVxuICAmICsgJiB7XG4gICAgbWFyZ2luLXRvcDogcigxKTtcbiAgICBAaW5jbHVkZSBzdXN5KCRkZXNrdG9wKSB7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgcGFkZGluZy1sZWZ0OiByKDIpO1xuICAgICAgZmxleDogMCAwIDUyMHB4O1xuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyO1xuICAgIH1cbiAgfVxufSIsIi8vIHt7U2FzcyBtaXhpbnMgLS0tLS0tLS19fVxuQGZ1bmN0aW9uIG4oKSB7IEByZXR1cm4gdW5xdW90ZShcIipcIik7IH1cblxuQGZ1bmN0aW9uIHIoJHRpbWVzOiAxKSB7IEByZXR1cm4gJHJoeXRobS1nYXAgKiAkdGltZXM7IH1cblxuQG1peGluIHN1c3koJG1hcCkge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkbWFwLCBxdWVyeSksIG1hcC1nZXQoJG1hcCwgbGF5b3V0KSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiByZXZlcnNlLWhpZGUtdmlzdWFsbHkoKSB7XG4gIGJvcmRlcjogMDtcbiAgY2xpcDogYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogYXV0bztcbn1cblxuQG1peGluIHNoYXJlLWJyZWFrcG9pbnRzKCRtYXAsICRjc3Nwcm9wOiBjb250ZW50KSB7XG4gICRkZXNjcmlwdGlvbjogJyc7XG5cbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgQGlmICRkZXNjcmlwdGlvbiAhPSAgJycge1xuICAgICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAnIHwgJztcbiAgICB9XG4gICAgXG4gICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAkcHJvcGVydHkgKyc6ICcrIGluc3BlY3QoJHZhbHVlKTtcbiAgfVxuXG4gIGRpc3BsYXk6IG5vbmU7XG4gICN7JGNzc3Byb3B9OiAgJGRlc2NyaXB0aW9uO1xufVxuXG5AbWl4aW4gdG9nZ2xlLWZhZGUoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIH1cbn1cblxuQG1peGluIHRvZ2dsZS1zaG93KCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IDA7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9ICBcbn1cblxuQG1peGluIHNob3coKSB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICBoZWlnaHQ6IGF1dG87ICBcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyKCkge1xuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCBcbiAgJjo6LW1vei1wbGFjZWhvbGRlcixcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxufVxuXG5AbWl4aW4gZGVidWcoJGNvbG9yOiAjZmZmIHJnYmEodG9tYXRvLCAuMykpIHtcbiAgY29sb3I6ICRjb2xvclxufVxuXG5AbWl4aW4gbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSk7XG4gID4gbGkgKyBsaTpiZWZvcmUgeyBtYXJnaW4tbGVmdDogJHNwYWNlICsgNHB4OyB9XG59XG4iLCJAbWl4aW4gSGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBTZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBwYWRkaW5nOiAwIHIoMikgMCByKDEpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAvLyBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIC8vIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gIC8vIGJhY2tncm91bmQ6IHVybChcImltYWdlcy9hcnJvdy1kb3duLnN2Z1wiKVxuICAvLyAgICAgICAgICAgOTIlIDUwJSAvIDhweCAxMHB4XG4gIC8vICAgICAgICAgICBuby1yZXBlYXRcbiAgLy8gICAgICAgICAgIHRyYW5zcGFyZW50O1xuICAubm8tY3NzLWFwcGVhcmFuY2UgJiB7XG4gICAgQGluY2x1ZGUgc2N1dC1wYWRkaW5nKG4gMCk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gTm9ybWFsaXplKCkge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmUgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDA7XG59IiwiLy8gU3VzeVxuLy8gPT09PVxuXG5AaW1wb3J0ICdzdXN5L2xhbmd1YWdlL3N1c3knO1xuIiwiLy8gU3VzeSBOZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4kc3VzeS12ZXJzaW9uOiAyLjE7XG5cbkBpbXBvcnQgXCIuLi9zdVwiO1xuQGltcG9ydCBcIi4uL291dHB1dC9mbG9hdFwiO1xuXG5AaW1wb3J0IFwic3VzeS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1c3kvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1c3kvZ3JpZHNcIjtcbkBpbXBvcnQgXCJzdXN5L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRleHRcIjtcbkBpbXBvcnQgXCJzdXN5L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInN1c3kvc3BhblwiO1xuQGltcG9ydCBcInN1c3kvZ3V0dGVyc1wiO1xuQGltcG9ydCBcInN1c3kvaXNvbGF0ZVwiO1xuQGltcG9ydCBcInN1c3kvZ2FsbGVyeVwiO1xuQGltcG9ydCBcInN1c3kvcm93c1wiO1xuQGltcG9ydCBcInN1c3kvbWFyZ2luc1wiO1xuQGltcG9ydCBcInN1c3kvcGFkZGluZ1wiO1xuQGltcG9ydCBcInN1c3kvYmxlZWRcIjtcbkBpbXBvcnQgXCJzdXN5L2JyZWFrcG9pbnQtcGx1Z2luXCI7XG4iLCIvLyBTdVxuLy8gPT1cblxuQGltcG9ydCBcInN1L3V0aWxpdGllc1wiO1xuQGltcG9ydCBcInN1L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3UvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1L2dyaWRcIjtcbiIsIi8vIE1hcCBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBUcnVuY2F0ZSBMaXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiBhIGxpc3QsIHRydW5jYXRlZCB0byBhIGdpdmVuIGxlbmd0aFxuQGZ1bmN0aW9uIF9zdXN5LXRydW5jYXRlLWxpc3QoXG4gICRsaXN0LFxuICAkbGVuZ3RoXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgJF9yZXR1cm46IGlmKCRpIDw9ICRsZW5ndGgsIGFwcGVuZCgkX3JldHVybiwgbnRoKCRsaXN0LCAkaSkpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgR2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1nZXQoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46ICRtYXA7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIHR5cGUtb2YoJF9yZXR1cm4pID09IG1hcCB7XG4gICAgICAkX3JldHVybjogbWFwLWdldCgkX3JldHVybiwgJGtleSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIFNldFxuLy8gLS0tLS0tLS1cbi8vIC0gU2V0IGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtc2V0KFxuICAkbWFwLFxuICAka2V5cy12YWx1ZS4uLlxuKSB7XG4gICRfdmFsdWU6IG50aCgka2V5cy12YWx1ZSwgLTEpO1xuICAkX2tleXM6IF9zdXN5LXRydW5jYXRlLWxpc3QoJGtleXMtdmFsdWUsIGxlbmd0aCgka2V5cy12YWx1ZSkgLSAxKTtcbiAgJF9sZW5ndGg6IGxlbmd0aCgkX2tleXMpO1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkX2xlbmd0aCB7XG4gICAgJF9uOiAwIC0gJGk7XG4gICAgJF9sZXZlbDogX3N1c3ktdHJ1bmNhdGUtbGlzdCgkX2tleXMsICRfbGVuZ3RoICsgJF9uKTtcbiAgICAkX2xldmVsOiBfc3VzeS1kZWVwLWdldCgkbWFwLCAkX2xldmVsLi4uKTtcbiAgICAkX21lcmdlOiBudGgoJF9rZXlzLCAkX24pO1xuICAgICRfbWVyZ2U6ICgkX21lcmdlOiAkX3ZhbHVlKTtcbiAgICAkX3JldHVybjogaWYoJF9sZXZlbCwgbWFwLW1lcmdlKCRfbGV2ZWwsICRfbWVyZ2UpLCAkX21lcmdlKTtcbiAgICAkX3ZhbHVlOiAkX3JldHVybjtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBNZXJnZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIDIgb2JqZWN0cyBvZiBhbnkgZGVwdGgsIG1lcmdlZFxuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtbWVyZ2UoXG4gICRtYXAxLFxuICAkbWFwMlxuKSB7XG5cbiAgQGlmIHR5cGUtb2YoJG1hcDEpICE9IG1hcCBvciB0eXBlLW9mKCRtYXAyKSAhPSBtYXAge1xuICAgICRtYXAxOiAkbWFwMjtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAyIHtcbiAgICAgICRfbmV3OiAoJGtleTogX3N1c3lfZGVlcC1tZXJnZShtYXAtZ2V0KCRtYXAxLCAka2V5KSwgJHZhbHVlKSk7XG4gICAgICAkbWFwMTogbWFwLW1lcmdlKCRtYXAxLCAkX25ldyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbWFwMTtcbn1cblxuXG4vLyBEZWVwIEhhcy1LZXlcbi8vIC0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gdHJ1ZSBpZiBhIGRlZXAga2V5IGV4aXN0c1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtaGFzLWtleShcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogbnVsbDtcbiAgJF9zdG9wOiBmYWxzZTtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgbm90KCRfc3RvcCkge1xuICAgICAgJF9yZXR1cm46IG1hcC1oYXMta2V5KCRtYXAsICRrZXkpO1xuICAgIH1cblxuICAgIEBpZiAkX3JldHVybiB7XG4gICAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9zdG9wOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTZXR0aW5nc1xuLy8gPT09PT09PT1cblxuLy8gVmVyc2lvblxuLy8gLS0tLS0tLVxuJHN1LXZlcnNpb246IDEuMTtcblxuXG4vLyBEZWZhdWx0IFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBUaGUgYmFzaWMgc2V0dGluZ3NcbiRzdXN5LWRlZmF1bHRzOiAoXG4gIGNvbHVtbnM6IDQsXG4gIGd1dHRlcnM6IC4yNSxcbik7XG5cblxuLy8gVXNlciBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBEZWZpbmUgdGhlICRzdXN5IHZhcmlhYmxlIHdpdGggYSBtYXAgb2YgeW91ciBvd24gc2V0dGluZ3MuXG4vLyAtIFNldCBFSVRIRVIgJGNvbHVtbi13aWR0aCBPUiAkY29udGFpbmVyXG4vLyAtIFVzZSAkY29sdW1uLXdpZHRoIGZvciBzdGF0aWMgbGF5b3V0c1xuJHN1c3k6ICgpICFkZWZhdWx0O1xuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IEFkZCBkZWZhdWx0cyB0byBTdXN5XG5AbWl4aW4gc3VzeS1kZWZhdWx0cyhcbiAgJGRlZmF1bHRzXG4pIHtcbiAgJHN1c3ktZGVmYXVsdHM6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJGRlZmF1bHRzKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgU2V0XG4vLyAtLS0tLS0tLVxuLy8gQ2hhbmdlIG9uZSBzZXR0aW5nXG4vLyAtICRrZXkgICA6IHNldHRpbmcgbmFtZVxuLy8gLSAkdmFsdWUgOiBzZXR0aW5nIHZhbHVlXG5AbWl4aW4gc3VzeS1zZXQoXG4gICRrZXktdmFsdWUuLi5cbikge1xuICAkc3VzeTogX3N1c3ktZGVlcC1zZXQoJHN1c3ksICRrZXktdmFsdWUuLi4pICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm4gb25lIHNldHRpbmcgZnJvbSBhIGdyaWRcbi8vIC0gJGtleSAgICAgOiA8a2V5d29yZD5cbi8vIC0gJGxheW91dCAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gc3VzeS1nZXQoXG4gICRrZXksXG4gICRsYXlvdXQ6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJHN1c3kpXG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF9vcHRpb25zOiAkbGF5b3V0ICRzdXN5ICRzdXN5LWRlZmF1bHRzO1xuICAkX2JyZWFrOiBmYWxzZTtcbiAgJF9yZXR1cm46IG51bGw7XG5cbiAgQGVhY2ggJG9wdCBpbiAkX29wdGlvbnMge1xuICAgIEBpZiB0eXBlLW9mKCRvcHQpID09IG1hcCBhbmQgbm90KCRfYnJlYWspIHtcbiAgICAgICRfa2V5c2V0OiBfc3VzeS1kZWVwLWhhcy1rZXkoJG9wdCwgJGtleS4uLik7XG4gICAgICBAaWYgJF9rZXlzZXQge1xuICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1nZXQoJG9wdCwgJGtleS4uLik7XG4gICAgICAgICRfYnJlYWs6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIE1hdGggVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09XG5cblxuLy8gVmFsaWQgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGNvbHVtbiBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRjb2x1bW5zKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkY29sdW1ucykge1xuICAgICRyZXR1cm46ICRjb2x1bW5zO1xuICB9IEBlbHNlIGlmICR0eXBlID09IGxpc3Qge1xuICAgICRmYWlsOiBudWxsO1xuICAgIEBlYWNoICRjb2wgaW4gJGNvbHVtbnMge1xuICAgICAgQGlmIHR5cGUtb2YoJGNvbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgJGZhaWw6ICRmYWlsIG9yIGlmKHVuaXRsZXNzKCRjb2wpLCBudWxsLCB0cnVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHJldHVybjogaWYoJGZhaWwsICRyZXR1cm4sICRjb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiAkcmV0dXJuICE9ICRjb2x1bW5zIGFuZCBub3QoJHNpbGVudCkge1xuICAgICRyZXR1cm46IG51bGw7XG4gICAgJHdhcm46ICckY29sdW1ucyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyIG9yIGxpc3Qgb2YgdW5pdGxlc3MgbnVtYmVycy4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGNvbHVtbnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG4vLyBWYWxpZCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgZ3V0dGVyIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtZ3V0dGVycyhcbiAgJGd1dHRlcnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXJzKSB7XG4gICAgJHJldHVybjogJGd1dHRlcnM7XG4gIH0gQGVsc2UgaWYgbm90KCRzaWxlbnQpIHtcbiAgICAkd2FybjogJyRndXR0ZXJzIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRndXR0ZXJzfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBDb2x1bW4gbWF0aFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBJcyBTeW1tZXRyaWNhbFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIGdyaWQgaXMgc3ltbWV0cmljYWwuXG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gaXMtc3ltbWV0cmljYWwoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpZih0eXBlLW9mKCRjb2x1bW5zKSA9PSBudW1iZXIsICRjb2x1bW5zLCBudWxsKTtcbn1cblxuXG4vLyBTdXN5IENvdW50XG4vLyAtLS0tLS0tLS0tXG4vLyBGaW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiBhIGdpdmVuIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktY291bnQoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykgb3IgbGVuZ3RoKCRjb2x1bW5zKTtcbn1cblxuXG4vLyBTdXN5IFN1bVxuLy8gLS0tLS0tLS1cbi8vIEZpbmQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5LXN1bShcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuXG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQgPT0gd2lkZSwgMCwgaWYoJHNwcmVhZCA9PSB3aWRlciwgMSwgLTEpKTtcbiAgJGd1dHRlci1zdW06IChzdXN5LWNvdW50KCRjb2x1bW5zKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICRjb2x1bW4tc3VtOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgQGlmIG5vdCgkY29sdW1uLXN1bSkge1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGNvbHVtbnMge1xuICAgICAgJGNvbHVtbi1zdW06ICgkY29sdW1uLXN1bSBvciAwKSArICRjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtO1xufVxuXG5cbi8vIFN1c3kgU2xpY2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBvZiBjb2x1bW5zIGF0IGEgZ2l2ZW4gbG9jYXRpb24uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkc3ViLWNvbHVtbnM6ICRzcGFuO1xuXG4gIEBpZiBub3QoaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpKSB7XG4gICAgJGxvY2F0aW9uOiAkbG9jYXRpb24gb3IgMTtcbiAgICAkc3ViLWNvbHVtbnM6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRzcGFuKSB7XG4gICAgICAkc3ViLWNvbHVtbnM6IGFwcGVuZCgkc3ViLWNvbHVtbnMsIG50aCgkY29sdW1ucywgJGkpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG4vLyBTdXN5XG4vLyAtLS0tXG4vLyBGaW5kIHRoZSBzdW0gb2YgYSBjb2x1bW4tc3Bhbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5KFxuICAkc3BhbixcbiAgJGxvY2F0aW9uICAgICA6IGZhbHNlLFxuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICAgICAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgICAgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG4gICRzcGFuOiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcblxuICBAcmV0dXJuIHN1c3ktc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCk7XG59XG4iLCIvLyBGbG9hdCBBUElcbi8vID09PT09PT09PVxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbkBpbXBvcnQgXCJmbG9hdC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJmbG9hdC9zcGFuXCI7XG5AaW1wb3J0IFwiZmxvYXQvZW5kXCI7XG5AaW1wb3J0IFwiZmxvYXQvaXNvbGF0ZVwiO1xuIiwiLy8gU2hhcmVkIEFQSVxuLy8gPT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydFwiO1xuXG5AaW1wb3J0IFwic2hhcmVkL2luc3BlY3RcIjtcbkBpbXBvcnQgXCJzaGFyZWQvb3V0cHV0XCI7XG5AaW1wb3J0IFwic2hhcmVkL2RpcmVjdGlvblwiO1xuQGltcG9ydCBcInNoYXJlZC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic2hhcmVkL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNoYXJlZC9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic2hhcmVkL3BhZGRpbmdcIjtcblxuXG5cbiIsIi8vIFN1c3kgQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydC9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9wcmVmaXhcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3JlbVwiO1xuQGltcG9ydCBcInN1cHBvcnQvY2xlYXJmaXhcIjtcbiIsIi8vIEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgU3VwcG9ydCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgYnJlYWtwb2ludDogdHJ1ZSxcbiAgICBib3gtc2l6aW5nOiB0cnVlLFxuICAgIHJlbTogdHJ1ZSxcbiAgKSxcbikpO1xuXG5cbi8vIFN1c3kgU3VwcG9ydCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VuZCBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0byB0aGUgcHJvcGVyIHN1cHBvcnQgbW9kdWxlcy5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXN1cHBvcnQoXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgLy8gQmFja2dyb3VuZCBTdXBwb3J0XG4gIEBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtaW1hZ2UoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1zaXplIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtc2l6ZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLW9yaWdpbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbigkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWNsaXAge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1jbGlwKCR2YWwpO1xuICB9XG5cbiAgLy8gQm94LVNpemluZyBTdXBwb3J0XG4gIEBlbHNlIGlmICRwcm9wID09IGJveC1zaXppbmcge1xuICAgIEBpbmNsdWRlIHN1c3ktYm94LXNpemluZygkdmFsKTtcbiAgfVxuXG4gIC8vIFJlbSBTdXBwb3J0XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cblxuXG4vLyBTdXN5IFN1cHBvcnQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBzdXBwb3J0IG9mIGEgZmVhdHVyZS5cbi8vIC0gJGZlYXR1cmUgICAgICAgOiA8c3RyaW5nPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nIFwicmVtXCIgb3IgXCJib3gtc2l6aW5nXCJcbi8vIC0gJHJlcXVpcmVtZW50cyAgOiA8bWFwPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nICh2YXJpYWJsZTogcmVtLXdpdGgtcHgtZmFsbGJhY2ssIG1peGluOiByZW0pXG4vLyAtICR3YXJuICAgICAgICAgIDogPGJvb2w+XG5AZnVuY3Rpb24gc3VzeS1zdXBwb3J0KFxuICAkZmVhdHVyZSxcbiAgJHJlcXVpcmVtZW50czogKCksXG4gICR3YXJuOiB0cnVlXG4pIHtcbiAgJF9zdXBwb3J0OiBzdXN5LWdldCh1c2UtY3VzdG9tICRmZWF0dXJlKTtcblxuICBAaWYgJF9zdXBwb3J0IHtcbiAgICAkX2ZhaWw6IGZhbHNlO1xuXG4gICAgQGVhY2ggJF90eXBlLCAkX3JlcSBpbiAkcmVxdWlyZW1lbnRzIHtcbiAgICAgIEBlYWNoICRfaSBpbiAkX3JlcSB7XG4gICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcblxuICAgICAgICBAaWYgbm90KCRfcGFzcykge1xuICAgICAgICAgICRfZmFpbDogdHJ1ZTtcbiAgICAgICAgICBAaWYgJHdhcm4ge1xuICAgICAgICAgICAgQHdhcm4gXCJZb3UgcmVxdWVzdGVkIGN1c3RvbSBzdXBwb3J0IG9mICN7JGZlYXR1cmV9LCBidXQgdGhlICN7JF9pfSAjeyRfdHlwZX0gaXMgbm90IGF2YWlsYWJsZS5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3N1cHBvcnQ6IGlmKCRfZmFpbCwgZmFsc2UsICRfc3VwcG9ydCk7XG4gIH1cblxuICBAcmV0dXJuICRfc3VwcG9ydDtcbn1cbiIsIi8vIFN1c3kgUHJlZml4XG4vLyA9PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IHNpbXBsZSBwcmVmaXhlZCBwcm9wZXJ0aWVzLlxuLy8gLSAkcHJvcCAgICAgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgICAgICA6IDxjc3MgdmFsdWU+XG4vLyAtIFskcHJlZml4XSAgOiA8YnJvd3NlciBwcmVmaXggbGlzdD5cbkBtaXhpbiBzdXN5LXByZWZpeChcbiAgJHByb3AsXG4gICR2YWwsXG4gICRwcmVmaXg6IG9mZmljaWFsXG4pIHtcbiAgQGVhY2ggJGZpeCBpbiAkcHJlZml4IHtcbiAgICAkZml4OiBpZigkZml4ID09IG9mZmljaWFsIG9yIG5vdCgkZml4KSwgJHByb3AsICctI3skZml4fS0jeyRwcm9wfScpO1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRmaXgsICR2YWwpO1xuICB9XG59XG4iLCIvLyBCYWNrZ3JvdW5kIFByb3BlcnRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEJhY2tncm91bmQgSW1hZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtaW1hZ2U+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2Vcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtaW1hZ2UsIChtaXhpbjogYmFja2dyb3VuZC1pbWFnZSksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLi4uKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBTaXplXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLXNpemU+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1zaXplKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgkc2l6ZSk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemU7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIE9yaWdpblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtb3JpZ2luPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oXG4gICRvcmlnaW5cbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLW9yaWdpbikpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRvcmlnaW47XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIENsaXBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1jbGlwPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1jbGlwKFxuICAkY2xpcFxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtY2xpcCkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNsaXAoJGNsaXApO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwO1xuICB9XG59XG4iLCIvLyBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09XG5cbi8vIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkbW9kZWw6IDxib3gtc2l6aW5nPlxuQG1peGluIHN1c3ktYm94LXNpemluZyhcbiAgJG1vZGVsOiBjb250ZW50LWJveFxuKSB7XG4gIEBpZiAkbW9kZWwge1xuICAgIEBpZiBzdXN5LXN1cHBvcnQoYm94LXNpemluZywgKG1peGluOiBib3gtc2l6aW5nKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKCRtb2RlbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJlZml4OiAobW96LCB3ZWJraXQsIG9mZmljaWFsKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktcHJlZml4KGJveC1zaXppbmcsICRtb2RlbCwgJHByZWZpeCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBEZWJ1Z2dpbmdcbi8vID09PT09PT09PVxuXG4vLyBTdXN5IEluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8gT3V0cHV0IGFyZ3VtZW50cyBwYXNzZWQgdG8gYSBpbnNwZWN0LlxuLy8gLSAkbWl4aW4gIDogPHN1c3kgbWl4aW4+XG4vLyAtICRpbnNwZWMgICA6IDxtaXhpbiBhcmd1bWVudHM+XG5cbkBtaXhpbiBzdXN5LWluc3BlY3QoXG4gICRtaXhpbixcbiAgJGluc3BlY3Rcbikge1xuICAkc2hvdzogZmFsc2U7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGluc3BlY3Qge1xuICAgIEBpZiBpbmRleCgkaXRlbSwgaW5zcGVjdCkge1xuICAgICAgJHNob3c6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzaG93IG9yIHN1c3ktZ2V0KGRlYnVnIGluc3BlY3QpIHtcbiAgICAtc3VzeS0jeyRtaXhpbn06IGluc3BlY3QoJGluc3BlY3QpO1xuICB9XG59XG4iLCIvLyBPdXRwdXRcbi8vID09PT09PVxuXG4vLyBPdXRwdXRcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IENTUyB3aXRoIHByb3BlciBicm93c2VyIHN1cHBvcnQuXG4vLyAtICRzdHlsZXMgIDogPG1hcCBvZiBjc3MgcHJvcGVydHktdmFsdWUgcGFpcnM+XG5AbWl4aW4gb3V0cHV0KFxuICAkc3R5bGVzXG4pIHtcbiAgQGVhY2ggJHByb3AsICR2YWwgaW4gJHN0eWxlcyB7XG4gICAgQGluY2x1ZGUgc3VzeS1zdXBwb3J0KCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gR3JpZCBCYWNrZ3JvdW5kIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuLy8gLSBTdWItcGl4ZWwgcm91bmRpbmcgY2FuIGxlYWQgdG8gc2V2ZXJhbCBwaXhlbHMgdmFyaWF0aW9uIGJldHdlZW4gYnJvd3NlcnMuXG5cbi8vIEdyaWQgQmFja2dyb3VuZCBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGltYWdlOiBiYWNrZ3JvdW5kLWltYWdlXG4vLyAtICRzaXplOiBiYWNrZ3JvdW5kLXNpemVcbi8vIC0gJGNsaXA6IGJhY2tncm91bmQtY2xpcFxuLy8gLSBbJGZsb3ddOiBsdHIgfCBydGxcbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0IChcbiAgJGltYWdlLFxuICAkc2l6ZTogbnVsbCxcbiAgJGNsaXA6IG51bGwsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2UsXG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZSxcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBmcm9tKCRmbG93KSB0b3AsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBNYXJnaW5zIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gTWFyZ2luIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBtYXJnaW4tb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUGFkZGluZyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIFBhZGRpbmcgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBwYWRkaW5nLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBDb250YWluZXJcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGZsb2F0LWNvbnRhaW5lcihcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gIEBpbmNsdWRlIHN1c3ktY2xlYXJmaXg7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1vdXRwdXQoJHdpZHRoLCAkanVzdGlmeSwgJHByb3BlcnR5KTtcbn1cbiIsIi8vIEZsb2F0IFNwYW4gQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBTcGFuIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHdpZHRoICAgICAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG9hdF0gICAgICAgICAgIDogZnJvbSB8IHRvXG4vLyAtIFskbWFyZ2luLWJlZm9yZV0gICA6IDxsZW5ndGg+XG4vLyAtIFskbWFyZ2luLWFmdGVyXSAgICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1iZWZvcmVdICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1hZnRlcl0gICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gICAgICAgICAgICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LXNwYW4tb3V0cHV0KFxuICAkd2lkdGgsXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbSxcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsLFxuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGwsXG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbCxcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsLFxuICAkZmxvdyAgICAgICAgICAgICA6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvICAgICA6IHRvKCRmbG93KTtcbiAgJGZyb20gICA6IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aDogJHdpZHRoLFxuICAgIGZsb2F0OiBpZigkZmxvYXQgPT0gdG8sICR0bywgbnVsbCkgb3IgaWYoJGZsb2F0ID09IGZyb20sICRmcm9tLCBudWxsKSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkcGFkZGluZy1hZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IElzb2xhdGlvbiBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gSXNvbGF0ZSBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRwdXNoICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBpc29sYXRlLW91dHB1dChcbiAgJHB1c2gsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiAkZnJvbSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRwdXNoLFxuICAgIG1hcmdpbi0jeyR0b306IC0xMDAlLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFN1c3kgU2V0dGluZ3Ncbi8vID09PT09PT09PT09PT1cblxuLy8gU3VzeSBMYW5ndWFnZSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBjZW50ZXIsXG4gIGd1dHRlci1wb3NpdGlvbjogYWZ0ZXIsXG4gIGdsb2JhbC1ib3gtc2l6aW5nOiBjb250ZW50LWJveCxcbiAgZGVidWc6IChcbiAgICBpbWFnZTogaGlkZSxcbiAgICBjb2xvcjogcmdiYSgjNjZmLCAuMjUpLFxuICAgIG91dHB1dDogYmFja2dyb3VuZCxcbiAgICB0b2dnbGU6IHRvcCByaWdodCxcbiAgKSxcbikpO1xuXG5cbi8vIFZhbGlkIEtleXdvcmQgVmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFOiBET05UJ1QgVE9VQ0hcbiRzdXN5LWtleXdvcmRzOiAoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogc3RhdGljIGZsdWlkLFxuICBvdXRwdXQ6IGlzb2xhdGUgZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogbGVmdCBjZW50ZXIgcmlnaHQsXG4gIGZsb3c6IGx0ciBydGwsXG4gIGd1dHRlci1wb3NpdGlvbjogYmVmb3JlIGFmdGVyIHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljLFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94IGNvbnRlbnQtYm94LFxuICBzcGFuOiBmdWxsLFxuICBlZGdlOiBmaXJzdCBhbHBoYSBsYXN0IG9tZWdhIGZ1bGwsXG4gIHNwcmVhZDogbmFycm93IHdpZGUgd2lkZXIsXG4gIGd1dHRlci1vdmVycmlkZTogbm8tZ3V0dGVycyBuby1ndXR0ZXIsXG4gIHJvbGU6IG5lc3QsXG4gIGNsZWFyOiBicmVhayBub2JyZWFrLFxuICBkZWJ1ZyBpbWFnZTogc2hvdyBoaWRlIHNob3ctY29sdW1ucyBzaG93LWJhc2VsaW5lLFxuICBkZWJ1ZyBvdXRwdXQ6IGJhY2tncm91bmQgb3ZlcmxheSxcbik7XG5cblxuLy8gUGFyc2UgU3VzeSBLZXl3b3JkcyBhbmQgTWFwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNldHRpbmdzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gc3RyaW5nc1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IHN0cmluZyB7XG4gICAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkc3VzeS1rZXl3b3JkcyB7XG4gICAgICAgICAgQGlmIGluZGV4KCR2YWx1ZSwgJGl0ZW0pIHtcbiAgICAgICAgICAgICRfa2V5LXZhbHVlOiBhcHBlbmQoJGtleSwgJGl0ZW0pO1xuICAgICAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtc2V0KCRfcmV0dXJuLCAkX2tleS12YWx1ZS4uLik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAvLyBtYXBzXG4gICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IG1hcCB7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIENvbHVtbnMgJiBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWxheW91dChcbiAgJHNob3J0XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuICAkX2NvbHVtbnM6ICgpO1xuICAkX2d1dHRlcnM6IG51bGw7XG5cbiAgQGlmIG5vdCh1bml0bGVzcyhudGgobnRoKCRzaG9ydCwgMSksIDEpKSkge1xuICAgICRfZ3V0dGVyczogbnRoKCRzaG9ydCwgMSk7XG4gIH0gQGVsc2Uge1xuICAgICRfY29sdW1uczogKGNvbHVtbnM6IG50aCgkc2hvcnQsIDEpKTtcbiAgICAkX2d1dHRlcnM6IGlmKGxlbmd0aCgkc2hvcnQpID4gMSwgbnRoKCRzaG9ydCwgMiksICRfZ3V0dGVycyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkX2d1dHRlcnMpID09IGxpc3QgYW5kIGxlbmd0aCgkX2d1dHRlcnMpID4gMCB7XG4gICAgJF9ndXR0ZXJzOiAoXG4gICAgICBndXR0ZXJzOiBudGgoJF9ndXR0ZXJzLCAyKSAvIG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICAgY29sdW1uLXdpZHRoOiBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlcnM6IGlmKCRfZ3V0dGVycywgKGd1dHRlcnM6ICRfZ3V0dGVycyksICgpKTtcbiAgfVxuXG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfY29sdW1ucyk7XG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfZ3V0dGVycyk7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHcmlkL0NvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWdyaWQoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogcGFyc2Utc2V0dGluZ3MoJHNob3J0KTtcbiAgJF9sYXlvdXQ6ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gbnVtYmVyIG9yIGxpc3RcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IG9yIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICAgJF9sYXlvdXQ6IGFwcGVuZCgkX2xheW91dCwgJGl0ZW0pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY29udGFpbmVyOiAkaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9sYXlvdXQ6IGlmKGxlbmd0aCgkX2xheW91dCkgPiAwLCBwYXJzZS1sYXlvdXQoJF9sYXlvdXQpLCAkX2xheW91dCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkX3JldHVybiwgJF9sYXlvdXQpO1xufVxuXG5cbi8vIFBhcnNlIFNwYW5cbi8vIC0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zcGFuKFxuICAkc2hvcnQsXG4gICRrZXk6IHNwYW5cbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgICRfYXQ6IGluZGV4KCRzaG9ydCwgYXQpO1xuXG4gICAgQGlmICRfYXQge1xuICAgICAgJF9sb2NpOiAkX2F0ICsgMTtcbiAgICAgICRfbG9jYXRpb246IG50aCgkc2hvcnQsICRfbG9jaSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAobG9jYXRpb246ICRfbG9jYXRpb24pKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfYXQsIG51bGwpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9sb2NpLCBudWxsKTtcbiAgICB9XG5cbiAgICAkX2k6IDE7XG4gICAgJF9zcGFuOiAoKTtcblxuICAgIEB3aGlsZSAkX2kgPD0gbGVuZ3RoKCRzaG9ydCkge1xuICAgICAgJF90aGlzOiBudGgoJHNob3J0LCAkX2kpO1xuXG4gICAgICBAaWYgdHlwZS1vZigkX3RoaXMpID09IG51bWJlciB7XG4gICAgICAgICRfc3BhbjogYXBwZW5kKCRfc3BhbiwgJF90aGlzKTtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgIH0gQGVsc2UgaWYgJF90aGlzID09IG9mIHtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgICAgJF9pOiBsZW5ndGgoJHNob3J0KSArIDE7XG4gICAgICB9XG5cbiAgICAgICRfaTogJF9pICsgMTtcbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCRfc3BhbikgPiAwIHtcbiAgICAgICRfc3BhbjogaWYobGVuZ3RoKCRfc3BhbikgPT0gMSwgbnRoKCRfc3BhbiwgMSksICRfc3Bhbik7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJGtleTogJF9zcGFuKSk7XG4gICAgfVxuXG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgcGFyc2UtZ3JpZCgkc2hvcnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWd1dHRlcnMoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX2d1dHRlcnM6IHBhcnNlLXNwYW4oJHNob3J0LCBndXR0ZXItb3ZlcnJpZGUpO1xuICAkX3NwYW46IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJF9ndXR0ZXJzKTtcblxuICBAaWYgJF9zcGFuIGFuZCBub3QobWFwLWdldCgkX2d1dHRlcnMsIGNvbHVtbnMpKSB7XG4gICAgJF9jb250ZXh0OiAoKTtcbiAgICAkX25ldzogKCk7XG5cbiAgICBAZWFjaCAkaXRlbSBpbiAkX3NwYW4ge1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgJF9jb250ZXh0OiBhcHBlbmQoJF9jb250ZXh0LCAkaXRlbSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJF9uZXc6IGFwcGVuZCgkX25ldywgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICRfY29udGV4dDogcGFyc2UtZ3JpZCgkX2NvbnRleHQpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDAsIG51bGwsICRfbmV3KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAxLCBudGgoJF9uZXcsIDEpLCAkX25ldyk7XG4gICAgJF9uZXc6IChndXR0ZXItb3ZlcnJpZGU6IGlmKCRfbmV3ICE9ICRfc3BhbiwgJF9uZXcsICRfc3BhbikpO1xuXG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX25ldyk7XG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX2NvbnRleHQpO1xuICB9XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG4iLCIvLyBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09XG5cblxuLy8gVmFsaWRhdGUgQ29sdW1uIE1hdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1uLW1hdGgoXG4gICRtYXRoLFxuICAkY29sdW1uLXdpZHRoXG4pIHtcbiAgQGlmICRtYXRoID09IHN0YXRpYyBhbmQgbm90KCRjb2x1bW4td2lkdGgpIHtcbiAgICBAZXJyb3IgJ1N0YXRpYyBtYXRoIHJlcXVpcmVzIGEgdmFsaWQgY29sdW1uLXdpZHRoIHNldHRpbmcuJztcbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi13aWR0aDtcbn1cbiIsIi8vIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBTZXQgYSBuZXcgbGF5b3V0IHVzaW5nIGEgc2hvcnRoYW5kXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXlvdXQsICRpbnNwZWN0KTtcbn1cblxuXG4vLyBVc2UgR3JpZFxuLy8gLS0tLS0tLS1cbi8vIFVzZSBhbiBhcmJpdHJhcnkgbGF5b3V0IGZvciBhIHNlY3Rpb24gb2YgY29kZVxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIHdpdGgtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJG9sZCAgICAgIDogJHN1c3k7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qod2l0aC1sYXlvdXQsICRpbnNwZWN0KTtcblxuICBAY29udGVudDtcblxuICAkc3VzeTogJG9sZCAhZ2xvYmFsO1xufVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gYSBwYXJzZWQgbGF5b3V0IG1hcCBiYXNlZCBvbiBzaG9ydGhhbmQgc3ludGF4XG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBsYXlvdXQoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgQHJldHVybiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xufVxuXG5cbi8vIEdldCBMYXlvdXRcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIG5ldyBsYXlvdXQgYmFzZWQgb24gY3VycmVudCBhbmQgZ2l2ZW4gc2V0dGluZ3Ncbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBmdW5jdGlvbiBfZ2V0LWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRsYXlvdXQ6IGxheW91dCgkbGF5b3V0KTtcbiAgQHJldHVybiBpZigkY2xlYW4sICRsYXlvdXQsIF9zdXN5LWRlZXAtbWVyZ2UoJHN1c3ksICRsYXlvdXQpKTtcbn1cbiIsIi8vIFN1c3kgQm94IFNpemluZ1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBib3ggbW9kZWwgZ2xvYmFsbHkgb24gYWxsIGVsZW1lbnRzLlxuLy8gLSBbJGJveF06IGJvcmRlci1ib3ggfCBjb250ZW50LWJveFxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBnbG9iYWwtYm94LXNpemluZyhcbiAgJGJveDogc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpLFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdDogJGJveDtcblxuICBAaWYgJGluaGVyaXQge1xuICAgIEBhdC1yb290IHtcbiAgICAgICBodG1sIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgICAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cbiAgICAgfVxuICB9IEBlbHNlIHtcbiAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2xvYmFsLWJveC1zaXppbmcsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgdXBkYXRlLWJveC1tb2RlbCgkYm94KTtcbn1cblxuLy8gQm9yZGVyIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBIGxlZ2FjeSBzaG9ydGN1dC4uLlxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBib3JkZXItYm94LXNpemluZyhcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCwgJGluaGVyaXQpO1xufVxuXG4vLyBVcGRhdGUgQm94IE1vZGVsXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBVcGRhdGVzIGdsb2JhbCBib3ggbW9kZWwgc2V0dGluZ1xuQG1peGluIHVwZGF0ZS1ib3gtbW9kZWwoXG4gICRib3hcbikge1xuICBAaWYgJGJveCAhPSBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykge1xuICBAaW5jbHVkZSBzdXN5LXNldChnbG9iYWwtYm94LXNpemluZywgJGJveCk7XG4gIH1cbn1cbiIsIi8vIENvbnRleHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBOZXN0ZWQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBncmlkIGZvciBuZXN0ZWQgY29udGV4dC5cbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuQGZ1bmN0aW9uIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkY29udGV4dCAgICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkc3BhbiAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRjb250ZXh0KTtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGNvbnRleHQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcblxuICBAcmV0dXJuIHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xufVxuXG4vLyBOZXN0ZWQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFVzZSBhIHN1YnNldCBncmlkIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbi8vIC0gQGNvbnRlbnQgICA6IDxjb250ZW50PlxuQG1peGluIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRvbGQgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpO1xuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiBuZXN0ZWQoJGNvbnRleHQpKSkgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobmVzdGVkLCAkaW5zcGVjdCk7XG4gIEBjb250ZW50O1xuXG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6ICRvbGQpKSAhZ2xvYmFsO1xufVxuIiwiLy8gQmFja2dyb3VuZCBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IGZhbHNlO1xuXG5cbi8vIFNob3cgR3JpZC9zXG4vLyAtLS0tLS0tLS0tLVxuLy8gU2hvdyBncmlkIG9uIGFueSBlbGVtZW50IHVzaW5nIGVpdGhlciBiYWNrZ3JvdW5kIG9yIG92ZXJsYXkuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIHNob3ctZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3Q6ICRncmlkO1xuICAkX291dHB1dDogZGVidWctZ2V0KG91dHB1dCwgJGdyaWQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzaG93LWdyaWQsICRpbnNwZWN0KTtcbiAgQGlmICRfb3V0cHV0ID09IG92ZXJsYXkgYW5kIHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCkgIT0gaGlkZSB7XG4gICAgQGluY2x1ZGUgb3ZlcmxheS1ncmlkKCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvdy1ncmlkcyhcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRncmlkKTtcbn1cblxuLy8gQmFja2dyb3VuZCBHcmlkXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNob3cgYSBncmlkIGJhY2tncm91bmQgb24gYW55IGVsZW1lbnQuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIGJhY2tncm91bmQtZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGdyaWQ7XG4gICRfb3V0cHV0ICA6IGdldC1iYWNrZ3JvdW5kKCRncmlkKTtcblxuICBAaWYgbGVuZ3RoKCRfb3V0cHV0KSA+IDAge1xuICAgICRfZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpO1xuXG4gICAgJF9pbWFnZTogKCk7XG4gICAgQGVhY2ggJG5hbWUsICRsYXllciBpbiBtYXAtZ2V0KCRfb3V0cHV0LCBpbWFnZSkge1xuICAgICAgJF9kaXJlY3Rpb246IGlmKCRuYW1lID09IGJhc2VsaW5lLCB0byBib3R0b20sIHRvIHRvKCRfZmxvdykpO1xuICAgICAgJF9pbWFnZTogYXBwZW5kKCRfaW1hZ2UsIGxpbmVhci1ncmFkaWVudCgkX2RpcmVjdGlvbiwgJGxheWVyKSwgY29tbWEpO1xuICAgIH1cbiAgICAkX291dHB1dDogbWFwLW1lcmdlKCRfb3V0cHV0LCAoaW1hZ2U6ICRfaW1hZ2UpKTtcblxuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICAgIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChiYWNrZ3JvdW5kLWdyaWQsICRpbnNwZWN0KTtcbiAgfVxufVxuXG5cbi8vIE92ZXJsYXkgR3JpZFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBHZW5lcmF0ZSBhbiBpY29uIHRvIHRyaWdnZXIgZ3JpZC1vdmVybGF5cyBvbiBhbnkgZ2l2ZW4gZWxlbWVudHMuXG4vLyAkZ3JpZHMuLi4gIDogPHNlbGVjdG9yPiBbPHNldHRpbmdzPl0gWywgPHNlbGVjdG9yPl0qXG5AbWl4aW4gb3ZlcmxheS1ncmlkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGlmIG5vdCgkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHMpIHtcbiAgICBAYXQtcm9vdCBoZWFkIHsgQGluY2x1ZGUgb3ZlcmxheS1oZWFkKCRncmlkKTsgfVxuICAgIEBhdC1yb290IGhlYWQ6YmVmb3JlIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpob3ZlciB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlci1ob3ZlcjsgfVxuICAgICRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgaGVhZDpob3ZlciB+ICYsXG4gIGhlYWQ6aG92ZXIgfiBib2R5ICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLW92ZXJsYXktYmFzZTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlciB7XG4gIGNvbnRlbnQ6IFwifHx8XCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udDoge1xuICAgIGZhbWlseTogc2Fucy1zZXJpZjtcbiAgICBzaXplOiAxNnB4O1xuICAgIHdlaWdodDogYm9sZDtcbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXIgSG92ZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXItaG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuNSk7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgSGVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGhlYWQ+IHN0eWxlcyB0byBjcmVhdGUgZ3JpZCBvdmVybGF5IHRvZ2dsZVxuQG1peGluIG92ZXJsYXktaGVhZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRfdG9nZ2xlOiBkZWJ1Zy1nZXQodG9nZ2xlLCAkZ3JpZCk7XG4gICRfaG9yejogbnVsbDtcbiAgJF92ZXJ0OiBudWxsO1xuXG4gIEBlYWNoICRzaWRlIGluICRfdG9nZ2xlIHtcbiAgICAkX2hvcno6IGlmKCRzaWRlID09IGxlZnQgb3IgJHNpZGUgPT0gcmlnaHQsICRzaWRlLCAkX2hvcnopO1xuICAgICRfdmVydDogaWYoJHNpZGUgPT0gdG9wIG9yICRzaWRlID09IGJvdHRvbSwgJHNpZGUsICRfdmVydCk7XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICAjeyRfaG9yen06IDEwcHg7XG4gICN7JF92ZXJ0fTogMTBweDtcbiAgei1pbmRleDogOTk5O1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjI1KTtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gR3JpZCBPdmVybGF5IEJhc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmFzZSBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIG92ZXJsYXlcbkBtaXhpbiBncmlkLW92ZXJsYXktYmFzZSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICB6LWluZGV4OiA5OTg7XG59XG5cblxuLy8gR2V0IFN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLXN5bShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgICAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9ndXR0ZXJzICAgICAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGdyaWQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRncmlkKTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGdyaWQpO1xuXG4gICRfY29sb3IgICAgICAgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfdHJhbnMgICAgICAgICA6IHRyYW5zcGFyZW50O1xuICAkX2xpZ2h0ICAgICAgICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG5cbiAgJF9lbmQgICAgICAgICAgIDogMSArICRfZ3V0dGVycztcbiAgJF9hZnRlciAgICAgICAgIDogcGVyY2VudGFnZSgxLyRfZW5kKTtcbiAgJF9zdG9wcyAgICAgICAgIDogKCk7XG4gICRfc2l6ZSAgICAgICAgICA6IHNwYW4oMSAkZ3JpZCB3aWRlKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodDtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3BsaXQ6ICRfZ3V0dGVycy8yO1xuICAgICRfYmVmb3JlOiBwZXJjZW50YWdlKCRfc3BsaXQvJF9lbmQpO1xuICAgICRfYWZ0ZXI6IHBlcmNlbnRhZ2UoKDEgKyAkX3NwbGl0KS8kX2VuZCk7XG4gICAgJF9zdG9wczogJF90cmFucyAkX2JlZm9yZSwgJF9jb2xvciAkX2JlZm9yZSwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9XG5cbiAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICRfc2l6ZTogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkgKiAkX2VuZDtcbiAgfVxuXG4gICRfb3V0cHV0OiAoXG4gICAgaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSxcbiAgICBzaXplOiAkX3NpemUsXG4gICk7XG5cbiAgQHJldHVybiAkX291dHB1dDtcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEluc2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1pbnNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgU3BsaXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1zcGxpdChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRzdGFydCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuXG4gICAgJF9lbmQ6ICRzdGFydCArIHNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRfZW5kLCBjb21tYSk7XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIE91dHNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLW91dHNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfdHJhbnMgICA6IHRyYW5zcGFyZW50O1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGd1dHRlcjogZ2V0LXNwYW4td2lkdGgoZmlyc3QgJGxvY2F0aW9uICRncmlkKTtcblxuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuXG4gICAgICAkZ3V0dGVyOiAkX2xpZ2h0ICRndXR0ZXIsICRfdHJhbnMgJGd1dHRlciwgJF90cmFucyAkX2VuZDtcbiAgICAgICR0aGlzLXN0b3A6IGpvaW4oJHRoaXMtc3RvcCwgJGd1dHRlciwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtYXN5bShcbiAgJGdyaWRcbikge1xuICAkX3N0b3BzOiAoKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0taW5zaWRlKCRncmlkKTtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLXNwbGl0KCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tb3V0c2lkZSgkZ3JpZCk7XG4gIH1cblxuICBAcmV0dXJuIChpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpKTtcbn1cblxuXG4vLyBHZXQgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9zaG93ICAgIDogc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKTtcbiAgJF9yZXR1cm4gIDogKCk7XG5cbiAgQGlmICRfc2hvdyBhbmQgJF9zaG93ICE9ICdoaWRlJyB7XG4gICAgJF9jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICAkX3N5bTogaXMtc3ltbWV0cmljYWwoJF9jb2x1bW5zKTtcbiAgICAgICRfcmV0dXJuOiBpZigkX3N5bSwgZ2V0LWJhY2tncm91bmQtc3ltKCRncmlkKSwgZ2V0LWJhY2tncm91bmQtYXN5bSgkZ3JpZCkpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGNvbnRlbnQtYm94KSk7XG4gICAgfVxuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1jb2x1bW5zJ1xuICAgICAgYW5kIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoYmFzZS1saW5lLWhlaWdodClcbiAgICAgIGFuZCB0eXBlLW9mKCRiYXNlLWxpbmUtaGVpZ2h0KSA9PSAnbnVtYmVyJ1xuICAgICAgYW5kIG5vdCB1bml0bGVzcygkYmFzZS1saW5lLWhlaWdodCkge1xuICAgICAgJF9jb2xvcjogdmFyaWFibGUtZXhpc3RzKCdncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3InKTtcbiAgICAgICRfY29sb3I6IGlmKCRfY29sb3IsICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICMwMDApO1xuXG4gICAgICAkX2ltYWdlOiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSk7XG4gICAgICAkX3NpemU6IG1hcC1nZXQoJF9yZXR1cm4sIHNpemUpO1xuICAgICAgJF9iYXNlbGluZTogKGJhc2VsaW5lOiAoJF9jb2xvciAxcHgsIHRyYW5zcGFyZW50IDFweCkpO1xuICAgICAgJF9iYXNlbGluZS1zaXplOiAxMDAlICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoXG4gICAgICAgIGltYWdlOiBpZigkX2ltYWdlLCBtYXAtbWVyZ2UoJF9pbWFnZSwgJF9iYXNlbGluZSksICRfYmFzZWxpbmUpLFxuICAgICAgICBzaXplOiBpZigkX3NpemUsICgkX3NpemUsICRfYmFzZWxpbmUtc2l6ZSksICRfYmFzZWxpbmUtc2l6ZSksXG4gICAgICApKTtcblxuICAgICAgQGlmICRfc2hvdyA9PSAnc2hvdycge1xuICAgICAgICAkX2NsaXA6IG1hcC1nZXQoJF9yZXR1cm4sIGNsaXApO1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogam9pbigkX2NsaXAsIGJvcmRlci1ib3gsIGNvbW1hKSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJF9zaG93ID09ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICBAd2FybiAnUGxlYXNlIHByb3ZpZGUgYSAkYmFzZS1saW5lLWhlaWdodCB3aXRoIHRoZSBkZXNpcmVkIGhlaWdodCBhbmQgdW5pdHMnO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSkge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChmbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gR2V0IERlYnVnXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgdmFsdWUgb2YgYSBkZWJ1ZyBzZXR0aW5nXG4vLyAtICRrZXk6IDxzZXR0aW5nPlxuQGZ1bmN0aW9uIGRlYnVnLWdldChcbiAgJGtleSxcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGtleTogam9pbihkZWJ1ZywgJGtleSwgc3BhY2UpO1xuICBAcmV0dXJuIHN1c3ktZ2V0KCRrZXksICRncmlkKTtcbn1cbiIsIi8vIENvbnRhaW5lciBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBjb250YWluZXIgZWxlbWVudFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQG1peGluIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgICA6ICRsYXlvdXQ7XG4gICRsYXlvdXQgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcblxuICAkX3dpZHRoICAgICA6IGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG4gICRfanVzdGlmeSAgIDogcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKHN1c3ktZ2V0KGNvbnRhaW5lci1wb3NpdGlvbiwgJGxheW91dCkpO1xuICAkX3Byb3BlcnR5ICA6IGlmKHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpID09IHN0YXRpYywgd2lkdGgsIG1heC13aWR0aCk7XG5cbiAgJF9ib3ggICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkbGF5b3V0KTtcblxuICBAaWYgJF9ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJF9ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChjb250YWluZXIsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgZmxvYXQtY29udGFpbmVyKCRfd2lkdGgsICRfanVzdGlmeSwgJF9wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0KTtcbn1cblxuLy8gQ29udGFpbmVyIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gIEByZXR1cm4gZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbn1cblxuLy8gR2V0IENvbnRhaW5lciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIHRoZSBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWNvbnRhaW5lci13aWR0aChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0ICAgICAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX3dpZHRoICAgICAgICAgOiBzdXN5LWdldChjb250YWluZXIsICRsYXlvdXQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRsYXlvdXQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkbGF5b3V0KTtcblxuICBAaWYgbm90KCRfd2lkdGgpIG9yICRfd2lkdGggPT0gYXV0byB7XG4gICAgQGlmIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpIHtcbiAgICAgICRfY29sdW1ucyAgIDogc3VzeS1nZXQoY29sdW1ucywgJGxheW91dCk7XG4gICAgICAkX2d1dHRlcnMgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRsYXlvdXQpO1xuICAgICAgJF9zcHJlYWQgICAgOiBpZihpcy1zcGxpdCgkbGF5b3V0KSwgd2lkZSwgbmFycm93KTtcbiAgICAgICRfd2lkdGggICAgIDogc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSAqICRfY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF93aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfd2lkdGg7XG59XG5cbi8vIFBhcnNlIENvbnRhaW5lciBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZSB0aGUgJGNvbnRhaW5lci1wb3NpdGlvbiBpbnRvIG1hcmdpbiB2YWx1ZXMuXG4vLyAtIFskanVzdGlmeV0gICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IDxsZW5ndGg+IFs8bGVuZ3RoPl1cbkBmdW5jdGlvbiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oXG4gICRqdXN0aWZ5OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBjb250YWluZXItcG9zaXRpb24pXG4pIHtcbiAgJF9yZXR1cm46IGlmKCRqdXN0aWZ5ID09IGxlZnQsIDAsIGF1dG8pIGlmKCRqdXN0aWZ5ID09IHJpZ2h0LCAwLCBhdXRvKTtcblxuICBAaWYgbm90KGluZGV4KGxlZnQgcmlnaHQgY2VudGVyLCAkanVzdGlmeSkpIHtcbiAgICAkX3JldHVybjogbnRoKCRqdXN0aWZ5LCAxKTtcbiAgICAkX3JldHVybjogJF9yZXR1cm4gaWYobGVuZ3RoKCRqdXN0aWZ5KSA+IDEsIG50aCgkanVzdGlmeSwgMiksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIElzb2xhdGlvbiBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuXG4vLyBJc29sYXRlIFtNaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGlzb2xhdGlvbiBhcyBhbiBvdmVycmlkZS5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBtaXhpbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpbnNwZWN0OiAkaXNvbGF0ZTtcblxuICAkb3V0cHV0OiAoXG4gICAgcHVzaDogaXNvbGF0ZSgkaXNvbGF0ZSksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGlzb2xhdGUpLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChpc29sYXRlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGlzb2xhdGUtb3V0cHV0KCRvdXRwdXQuLi4pO1xufVxuXG5cbi8vIElzb2xhdGUgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYW4gaXNvbGF0aW9uIG9mZnNldCB3aWR0aC5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBmdW5jdGlvbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpc29sYXRlOiBwYXJzZS1zcGFuKCRpc29sYXRlKTtcbiAgJGlzb2xhdGlvbjogc3VzeS1nZXQoc3BhbiwgJGlzb2xhdGUpO1xuXG4gIEBpZiAkaXNvbGF0aW9uIGFuZCBub3QoZ2V0LWxvY2F0aW9uKCRpc29sYXRlKSkge1xuICAgICRuZXc6IChcbiAgICAgIHNwYW46IG51bGwsXG4gICAgICBsb2NhdGlvbjogJGlzb2xhdGlvbixcbiAgICApO1xuICAgICRpc29sYXRlOiBtYXAtbWVyZ2UoJGlzb2xhdGUsICRuZXcpO1xuICB9XG5cbiAgQHJldHVybiBnZXQtaXNvbGF0aW9uKCRpc29sYXRlKTtcbn1cblxuXG4vLyBHZXQgSXNvbGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGhcbi8vIC0gJGlucHV0OiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1pc29sYXRpb24oXG4gICRpbnB1dFxuKSB7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRpbnB1dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGlucHV0KTtcbiAgJHdpZHRoICAgICAgOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyIGFuZCBub3QodW5pdGxlc3MoJGxvY2F0aW9uKSkge1xuICAgICR3aWR0aDogJGxvY2F0aW9uO1xuICB9IEBlbHNlIGlmICRsb2NhdGlvbiB7XG4gICAgJHB1c2g6ICRsb2NhdGlvbiAtIDE7XG4gICAgQGlmICRwdXNoID4gMCB7XG4gICAgICAkcHVzaDogbWFwLW1lcmdlKCRpbnB1dCwgKFxuICAgICAgICBzcGFuOiAkcHVzaCxcbiAgICAgICAgbG9jYXRpb246IDEsXG4gICAgICAgIHNwcmVhZDogd2lkZSxcbiAgICAgICkpO1xuICAgICAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkcHVzaCk7XG4gICAgfVxuICB9XG5cbiAgQGlmIHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGlucHV0KSA9PSBzcGxpdFxuICAgICAgYW5kIHN1c3ktZ2V0KGd1dHRlcnMsICRpbnB1dCkgPiAwIHtcbiAgICAkd2lkdGg6IGlmKCR3aWR0aCA9PSBudWxsLCBndXR0ZXJzKCRpbnB1dCksICR3aWR0aCArIGd1dHRlcnMoJGlucHV0KSk7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aCBvciAwO1xufVxuIiwiLy8gR2FsbGVyeSBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIEdhbGxlcnlcbi8vIC0tLS0tLS1cbi8vIENyZWF0ZSBhbiBpc29sYXRlZCBnYWxsZXJ5XG4vLyAtICRzcGFuICAgICAgICA6IDxzcGFuPlxuLy8gLSBbJHNlbGVjdG9yXSAgOiBjaGlsZCB8IG9mLXR5cGVcbkBtaXhpbiBnYWxsZXJ5KFxuICAkc3BhbixcbiAgJHNlbGVjdG9yOiBjaGlsZFxuKSB7XG4gICRpbnNwZWN0ICAgIDogJHNwYW47XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRzcGFuICAgICAgIDogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246IDEpKTtcblxuICAkbiAgICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkY29udGV4dCAgICAgIDogc3VzeS1jb3VudCgkY29sdW1ucyk7XG4gICRmbG93ICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG5cbiAgJGluc2lkZSAgICAgICA6IGlzLWluc2lkZSgkc3Bhbik7XG4gICRmcm9tICAgICAgICAgOiBmcm9tKCRmbG93KTtcbiAgJGxpbmUgICAgICAgICA6IGZsb29yKCRjb250ZXh0IC8gJG4pO1xuICAkc3ltbWV0cmljYWwgIDogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aCAgICAgICAgICAgICA6IG51bGwsXG4gICAgZmxvYXQgICAgICAgICAgICAgOiBmcm9tLFxuICAgIG1hcmdpbi1iZWZvcmUgICAgIDogbnVsbCxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IG51bGwsXG4gICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICApO1xuXG4gIEBpZiAkaW5zaWRlIHtcbiAgICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAoXG4gICAgICBwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKSxcbiAgICAgIHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKSxcbiAgICApKTtcbiAgfVxuXG4gIEBpZiAkc3ltbWV0cmljYWwge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAod2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKSkpO1xuICB9XG5cbiAgJGJveCAgICAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGdsb2JhbC1ib3ggICA6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSA9PSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2FsbGVyeSwgJGluc3BlY3QpO1xuXG4gIC8vIENvbGxlY3RpdmUgT3V0cHV0XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggb3IgKCRpbnNpZGUgYW5kIG5vdCgkYm94KSBhbmQgbm90KCRnbG9iYWwtYm94KSkge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogYm9yZGVyLWJveCkpO1xuICB9IEBlbHNlIGlmICRib3ggPT0gY29udGVudC1ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogY29udGVudC1ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIC8vIEluZGl2aWR1YWwgTG9vcFxuICBAZm9yICRpdGVtIGZyb20gMSB0aHJvdWdoICRsaW5lIHtcbiAgICAkbnRoOiAnI3skbGluZX1uICsgI3skaXRlbX0nO1xuICAgICY6bnRoLSN7JHNlbGVjdG9yfSgjeyRudGh9KSB7XG4gICAgICAvLyBJbmRpdmlkdWFsIFByZXBcbiAgICAgICRvdXRwdXQ6IChcbiAgICAgICAgd2lkdGggICAgICAgICAgICAgOiBpZigkc3ltbWV0cmljYWwsIG51bGwsIGdldC1zcGFuLXdpZHRoKCRzcGFuKSksXG4gICAgICAgIGZsb2F0ICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgbWFyZ2luLWJlZm9yZSAgICAgOiBnZXQtaXNvbGF0aW9uKCRzcGFuKSxcbiAgICAgICAgbWFyZ2luLWFmdGVyICAgICAgOiAtMTAwJSxcbiAgICAgICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgICAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICAgICApO1xuXG4gICAgICAvLyBJbmRpdmlkdWFsIE91dHB1dFxuICAgICAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgICAgIEBpZiBnZXQtZWRnZSgkc3BhbikgPT0gZmlyc3Qge1xuICAgICAgICBAaW5jbHVkZSBicmVhaztcbiAgICAgICAgQGluY2x1ZGUgZmlyc3QoJHNwYW4pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgTG9jYXRpb24gSW5jcmVtZW50XG4gICAgICAkbG9jYXRpb246IGdldC1sb2NhdGlvbigkc3BhbikgKyAkbjtcbiAgICAgICRsb2NhdGlvbjogaWYoJGxvY2F0aW9uID4gJGNvbnRleHQsIDEsICRsb2NhdGlvbik7XG4gICAgICAkc3BhbjogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246ICRsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZ3V0dGVyIDogZ3V0dGVyKCRzcGFuKTtcbiAgJHNwYW4gICA6IHNwYW4oJHNwYW4pO1xuICAkd2lkdGggIDogaWYoJHNwbGl0IGFuZCAkZ3V0dGVyLCAkc3BhbiArICRndXR0ZXIsICRzcGFuKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNxdWlzaCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmUoJHByZSk7XG4gIEBpbmNsdWRlIHBvc3QoJHBvc3QpO1xufVxuIiwiLy8gUGFkZGluZyBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmVmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFN1ZmZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzdWZmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHN1ZmZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUGFkXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBwYWQoXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocGFkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZWZpeCgkcHJlKTtcbiAgQGluY2x1ZGUgc3VmZml4KCRwb3N0KTtcblxufVxuIiwiLy8gQmxlZWQgU3ludGF4XG4vLyA9PT09PT09PT09PT1cblxuLy8gQmxlZWRcbi8vIC0tLS0tXG4vLyBBZGQgbmVnYXRpdmUgbWFyZ2lucywgYW5kIGVxdWFsIHBvc2l0aXZlIHBhZGRpbmcgdG8gY3JlYXRlIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQoXG4gICRibGVlZDogMCBndXR0ZXIoKVxuKSB7XG4gICRpbnNwZWN0ICA6ICRibGVlZDtcbiAgJG91dHB1dCAgIDogZ2V0LWJsZWVkKCRibGVlZCk7XG5cbiAgQGlmIHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSBjb250ZW50LWJveCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKChib3gtc2l6aW5nOiBjb250ZW50LWJveCksICRvdXRwdXQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJsZWVkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuXG4vLyBCbGVlZC14XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgaG9yaXpvbnRhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXgoXG4gICRibGVlZDogZ3V0dGVyKClcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAyKSAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXggb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEJsZWVkLXlcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciB2ZXJ0aWNhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXkoXG4gICRibGVlZDogaWYoZnVuY3Rpb24tZXhpc3RzKHJoeXRobSksIHJoeXRobSgxKSwgMWVtKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwIG50aCgkdHJibCwgMikgMCkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteSBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gR2V0IEJsZWVkXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBibGVlZCBvdXRwdXQgdmFsdWVzXG4vLyAtICRibGVlZDogPHNwYW4+XG5AZnVuY3Rpb24gZ2V0LWJsZWVkKFxuICAkYmxlZWRcbikge1xuICAkYmxlZWQgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJGJsZWVkKSk7XG4gICR0cmJsICAgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG4gICRzaG9ydCAgICA6IG51bGw7XG4gICRvdXRwdXQgICA6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR0cmJsKSB7XG4gICAgJHRoaXM6IG50aCgkdHJibCwgJGkpO1xuICAgICRuZXc6ICgpO1xuICAgICRtYXJnaW46IG51bGw7XG4gICAgJHBhZGRpbmc6IG51bGw7XG4gICAgJHBhZGRpbmcteDogbnVsbDtcblxuICAgIEBpZiAkdGhpcyA+IDAge1xuICAgICAgJHRoaXM6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAkdGhpcykpO1xuICAgICAgJG1hcmdpbjogc3BhbigkdGhpcyk7XG4gICAgICAkcGFkZGluZzogJG1hcmdpbjtcbiAgICAgICRwYWRkaW5nLXg6ICRwYWRkaW5nO1xuICAgIH1cblxuICAgIEBpZiAkbWFyZ2luIGFuZCAkbWFyZ2luID4gMCB7XG4gICAgICAkbWFyZ2luOiAtICRtYXJnaW47XG5cbiAgICAgIEBpZiBpcy1pbnNpZGUoJHRoaXMpIHtcbiAgICAgICAgJGd1dHRlcjogZ3V0dGVyKCR0aGlzKTtcbiAgICAgICAgJGpvaW46IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHBhZGRpbmcsICRndXR0ZXIpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICRwYWRkaW5nLXg6IGlmKCRqb2luIGFuZCAkcGFkZGluZyA+IDAsICRwYWRkaW5nICsgJGd1dHRlciwgJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAyIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDMge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gNCB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAkbmV3KTtcbiAgfVxuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG91dHB1dCB7XG4gICAgJG91dHB1dDogaWYoJHZhbHVlID09IDAsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJHByb3A6IG51bGwpKSwgJG91dHB1dCk7XG4gIH1cblxuICBAcmV0dXJuIGJsZWVkLXNob3J0aGFuZCgkb3V0cHV0KTtcbn1cblxuLy8gQmxlZWQgU2hvcnRoYW5kXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENvbnZlcnQgYmxlZWQgb3V0cHV0IGludG8gc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuXG4vLyAtICRibGVlZDogPG91dHB1dCBtYXA+XG5AZnVuY3Rpb24gYmxlZWQtc2hvcnRoYW5kKFxuICAkYmxlZWRcbikge1xuICAkbWFyZ2luOiAoKTtcbiAgJHBhZGRpbmc6ICgpO1xuICAkcmV0dXJuOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJsZWVkIHtcbiAgICBAaWYgc3RyLWluZGV4KCRrZXksIG1hcmdpbikge1xuICAgICAgJG1hcmdpbjogbWFwLW1lcmdlKCRtYXJnaW4sICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIGlmIHN0ci1pbmRleCgka2V5LCBwYWRkaW5nKSA+IDAge1xuICAgICAgJHBhZGRpbmc6IG1hcC1tZXJnZSgkcGFkZGluZywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICRwcm9wczogKFxuICAgIG1hcmdpbjogJG1hcmdpbixcbiAgICBwYWRkaW5nOiAkcGFkZGluZyxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJG1hcCBpbiAkcHJvcHMge1xuICAgICRmb3VyOiBpZihsZW5ndGgobWFwLWtleXMoJG1hcCkpID09IDQsIHRydWUsIGZhbHNlKTtcbiAgICAkbnVsbDogaWYoaW5kZXgobWFwLXZhbHVlcygkbWFwKSwgbnVsbCksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkZm91ciBhbmQgbm90KCRudWxsKSB7XG4gICAgICAkdG9wOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS10b3AnKTtcbiAgICAgICRyaWdodDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tcmlnaHQnKTtcbiAgICAgICRib3R0b206IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWJvdHRvbScpO1xuICAgICAgJGxlZnQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWxlZnQnKTtcblxuICAgICAgJHRiOiBpZigkdG9wID09ICRib3R0b20sICR0b3AsIG51bGwpO1xuICAgICAgJHJsOiBpZigkcmlnaHQgPT0gJGxlZnQsICRyaWdodCwgbnVsbCk7XG4gICAgICAkYWxsOiBpZigkdGIgPT0gJHJsLCAkdGIsIG51bGwpO1xuXG4gICAgICAkbmV3OiBpZigkYWxsLCAkYWxsLCBudWxsKTtcblxuICAgICAgQGlmIG5vdCgkbmV3KSB7XG4gICAgICAgIEBpZiAkdGIgYW5kICRybCB7XG4gICAgICAgICAgJG5ldzogJHRiICRybDtcbiAgICAgICAgfSBAZWxzZSBpZiAkcmwge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJsICRib3R0b207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJpZ2h0ICRib3R0b20gJGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmFtZTogJG5ldykpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICRtYXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cbiIsIi8qXG4qIFNjdXQsIGEgY29sbGVjdGlvbiBvZiBTYXNzIHV0aWxpdGllc1xuKiB0byBlYXNlIGFuZCBpbXByb3ZlIG91ciBpbXBsZW1lbnRhdGlvbnMgb2YgY29tbW9uIHN0eWxlLWNvZGUgcGF0dGVybnMuXG4qIHYxLjQuMFxuKiBEb2NzIGF0IGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0XG4qL1xuXG5AbWl4aW4gc2N1dC1jbGVhcmZpeCB7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNsZWFyZml4IHtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtdW5zdHlsZWQoXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCk7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1mbG9hdGVkIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJGRpcjogbGVmdCxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xuXG4gICYgPiBsaSB7XG4gICAgZmxvYXQ6ICRkaXI7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tI3skZGlyfTogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtZmxvYXRlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkO1xufVxuXG5AZnVuY3Rpb24gc2N1dC1hdXRvT3JWYWx1ZSAoJHZhbCkge1xuICBAaWYgJHZhbCA9PSBhIG9yICR2YWwgPT0gYXV0byB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtY29vcmRzIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICAkdG9wOiBudGgoJGNvb3JkaW5hdGVzLCAxKTtcbiAgJHJpZ2h0OiBudGgoJGNvb3JkaW5hdGVzLCAyKTtcbiAgJGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyk7XG4gICRsZWZ0OiBudGgoJGNvb3JkaW5hdGVzLCA0KTtcblxuICBAaWYgJHRvcCAhPSBuIHtcbiAgICB0b3A6IHNjdXQtYXV0b09yVmFsdWUoJHRvcCk7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBuIHtcbiAgICByaWdodDogc2N1dC1hdXRvT3JWYWx1ZSgkcmlnaHQpO1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG4ge1xuICAgIGJvdHRvbTogc2N1dC1hdXRvT3JWYWx1ZSgkYm90dG9tKTtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbiB7XG4gICAgbGVmdDogc2N1dC1hdXRvT3JWYWx1ZSgkbGVmdCk7XG4gIH1cblxufVxuQGZ1bmN0aW9uIHNjdXQtc3RyaXAtdW5pdCAoXG4gICRudW1cbikge1xuXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1lbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtZW0gKFxuICAkcGl4ZWxzLFxuICAkYmFzZTogJHNjdXQtZW0tYmFzZVxuKSB7XG5cbiAgLy8gJGJhc2UgY291bGQgYmUgaW4gZW0gb3IgcHggKG5vIHVuaXQgPSBweCkuXG4gIC8vIEFkanVzdCBhY2NvcmRpbmdseSB0byBjcmVhdGUgYSAkZGl2aXNvciB0aGF0XG4gIC8vIHNlcnZlcyBhcyBjb250ZXh0IGZvciAkcGl4ZWxzLlxuICAkbXVsdGlwbGllcjogaWYodW5pdCgkYmFzZSkgPT0gZW0sIDE2LCAxKTtcbiAgJGRpdmlzb3I6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZSkgKiAkbXVsdGlwbGllcjtcblxuICAkZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1lbXM6IChzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkZGl2aXNvcikgKiAxZW07XG4gICAgJGVtLXZhbHM6IGFwcGVuZCgkZW0tdmFscywgJHZhbC1pbi1lbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZW0tdmFscztcbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1yZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LXJlbSAoXG4gICRwaXhlbHNcbikge1xuXG4gICRyZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1yZW1zOiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkc2N1dC1yZW0tYmFzZSAqIDFyZW07XG4gICAgJHJlbS12YWxzOiBhcHBlbmQoJHJlbS12YWxzLCAkdmFsLWluLXJlbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcmVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkcmVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRyZW0tdmFscztcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1ib3JkZXIgKFxuICAkc3R5bGUsXG4gICRzaWRlczogbiB5XG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaWRlcykgPT0gMiB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaWRlcykgPT0gNCB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDMpICE9IG4ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgNCkgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlNjdXQtYm9yZGVyIHJlcXVpcmVzIGEgJHNpZGVzIGFyZ3VtZW50IG9mIDIgb3IgNCB2YWx1ZXMuXCJcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jaXJjbGUgKFxuICAkc2l6ZSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBAaWYgJGNvbG9yID09IGluaGVyaXQge1xuICAgIC8vIElmIHVzZXIgd2FudHMgdG8gaW5oZXJpdCB0aGUgY29sb3IsXG4gICAgLy8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBib3JkZXJcbiAgICAvLyBjb2xvciBkZWZhdWx0cyB0byB0aGUgdGV4dCBjb2xvciBvZiB0aGUgZWxlbWVudC5cbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGhlaWdodDogMDtcbiAgICB3aWR0aDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHVzZSBiYWNrZ3JvdW5kLWNvbG9yLlxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jb2xvci1zd2FwIChcbiAgJG9mZixcbiAgJG9uLFxuICAkZHVyYXRpb246IDAsXG4gICRiZzogZmFsc2Vcbikge1xuXG4gICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IG51bGw7XG4gICRvZmYtaXMtbGlzdDogdHlwZS1vZigkb2ZmKSA9PSBsaXN0O1xuICAkb24taXMtbGlzdDogdHlwZS1vZigkb24pID09IGxpc3Q7XG5cbiAgLy8gSWYgJG9mZiBJUyBhIGxpc3QsXG4gIC8vIGFzc2lnbiBjb2xvciBhbmQgYmFja2dyb3VuZC1jb2xvci5cbiAgQGlmICRvZmYtaXMtbGlzdCB7XG4gICAgY29sb3I6IG50aCgkb2ZmLCAxKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9mZiwgMik7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvciwgY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBUUlVFLFxuICAvLyBhc3NpZ24gYmFja2dyb3VuZC1jb2xvci5cbiAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9mZi1pcy1saXN0KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgRkFMU0UsXG4gIC8vIGFzc2lnbiBjb2xvci5cbiAgQGVsc2Uge1xuICAgIGNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGNvbG9yO1xuICB9XG5cbiAgLy8gT25seSBzZXQtdXAgdHJhbnNpdGlvbiBpZiAkZHVyYXRpb24gIT0gMC5cbiAgQGlmICRkdXJhdGlvbiAhPSAwIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzO1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuXG4gICAgLy8gJG9uIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgJG9mZiwgYWJvdmUuXG4gICAgQGlmICRvbi1pcy1saXN0IHtcbiAgICAgIGNvbG9yOiBudGgoJG9uLCAxKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb24sIDIpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvbi1pcy1saXN0KSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb247XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgY29sb3I6ICRvbjtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtaGQtYnAgKFxuICAkcmF0aW86IDEuM1xuKSB7XG5cbiAgQG1lZGlhICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAoJHJhdGlvIC8gMSkpLFxuICAgICAgICAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgICAgICAgIChtaW4tcmVzb2x1dGlvbjogKHJvdW5kKDk2ICogJHJhdGlvKSAqIDFkcGkpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oaWRlLXZpc3VhbGx5IHtcblxuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcblxufVxuXG4lc2N1dC1oaWRlLXZpc3VhbGx5IHtcbiAgQGluY2x1ZGUgc2N1dC1oaWRlLXZpc3VhbGx5O1xufVxuQG1peGluIHNjdXQtaW1hZ2UtcmVwbGFjZSB7XG5cbiAgdGV4dC1pbmRlbnQ6IDEwMiU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG5cbn1cblxuJXNjdXQtaW1hZ2UtcmVwbGFjZSB7XG4gIEBpbmNsdWRlIHNjdXQtaW1hZ2UtcmVwbGFjZTtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LXJlbSBhbmQgc2N1dC1zdHJpcC11bml0XG5cbkBtaXhpbiBzY3V0LXJlbS1mYWxsYmFjayAoXG4gICRwaXhlbHMsXG4gICRwcm9wZXJ0eTogZm9udC1zaXplXG4pIHtcblxuICAkcHgtdmFsczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXB4OiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgKiAxcHg7XG4gICAgJHB4LXZhbHM6IGFwcGVuZCgkcHgtdmFscywgJHZhbC1pbi1weCk7XG4gIH1cbiAgJHJlbS12YWxzOiBzY3V0LXJlbSgkcGl4ZWxzKTtcblxuICAjeyRwcm9wZXJ0eX06ICRweC12YWxzO1xuICAjeyRwcm9wZXJ0eX06ICRyZW0tdmFscztcblxufVxuQG1peGluIHNjdXQtcmVzZXQtYm9yZGVyLWJveCB7XG4gIC8vIE1ha2UgZXZlcnl0aGluZyBhIGJvcmRlci1ib3gsIGJlY2F1c2Ugd2h5IG5vdD9cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1hbnRpYWxpYXMge1xuICAvLyBBbnRpYWxpYXMhXG4gIGJvZHkge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXNlbWFudGljaXplIHtcbiAgLy8gTWFrZSBoZWFkZXJzIGFuZCA8Yj4gc2VtYW50aWMsIG5vdCBwcmVzZW50YXRpb25hbC5cbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wb2ludGVyIHtcbiAgLy8gQ2xpY2thYmxlIGZvcm0gZWxlbWVudHMgc2hvdWxkIGhhdmUgYSBwb2ludGVyLlxuICBsYWJlbCxcbiAgc2VsZWN0LFxuICBvcHRpb24sXG4gIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZvcm0ge1xuICBmaWVsZHNldCB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWJ1dHRvbiB7XG4gIC8vIFJlc2V0IGRlZmF1bHQgYnV0dG9uIHN0eWxlcywgd2hpY2ggYXJlIG5ldmVyIHVzZWQuXG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdLFxuICBbdHlwZT1cInJlc2V0XCJdIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogYXV0bztcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBhcmFncmFwaCB7XG4gIC8vIFNvbWUgcGFyYWdyYXBoIG1hcmdpbnMganVzdCBnZXQgaW4gdGhlIHdheS5cbiAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LW1lZGlhIHtcbiAgLy8gWW91IHdhbnQgdGhlc2UgZWxlbWVudHMgZmx1aWQsIHByb2JhYmx5LlxuICBpbWcsXG4gIHZpZGVvIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZpZ3VyZSB7XG4gIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbnMuXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8vIENhbGwgdGhlbSBhbGwsIG1pbnVzIGV4Y2x1c2lvbnMhXG5AbWl4aW4gc2N1dC1yZXNldCAoJGV4Y2x1ZGU6IGZhbHNlKSB7XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJvcmRlci1ib3gpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1ib3JkZXItYm94O1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGFudGlhbGlhcykpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWFudGlhbGlhcztcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBzZW1hbnRpY2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXNlbWFudGljaXplO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBvaW50ZXIpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wb2ludGVyO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZvcm0pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1mb3JtO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJ1dHRvbikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJ1dHRvbjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwYXJhZ3JhcGgpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wYXJhZ3JhcGg7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgbWVkaWEpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1tZWRpYTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmaWd1cmUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1maWd1cmU7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtc2VsZWN0ZWQgKFxuICAkYWN0aXZlOiBmYWxzZVxuKSB7XG5cbiAgQGlmICRhY3RpdmUge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtdHJpYW5nbGUgKFxuICAkZGlyZWN0aW9uOiByaWdodCxcbiAgJHNpemU6IDAuNzVlbSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIC8vIEZvciBpbXByb3ZlZCBhcHBlYXJhbmNlIGluIHNvbWUgV2Via2l0IGJyb3dzZXJzXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcblxuICAvLyBTZXQgdXAgc29tZSB2YXJpYWJsZXNcbiAgJHdpZHRoOiBudWxsO1xuICAkaGVpZ2h0OiBudWxsO1xuICAkYm9yZGVyLXdpZHRoczogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gbGlzdCB7XG4gICAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR3aWR0aDogJHNpemU7XG4gICAgJGhlaWdodDogJHNpemU7XG4gIH1cblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICAvLyBGb3IgdXAgYW5kIGRvd24sIHdpZHRoIGdldHMgdHdvIGJvcmRlcnMgYnV0IGhlaWdodCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgc2Vjb25kIGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICRoZWlnaHQgKCR3aWR0aCAvIDIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgLy8gRm9yIHJpZ2h0IGFuZCBsZWZ0LCBoZWlnaHQgZ2V0cyB0d28gYm9yZGVycyBidXQgd2lkdGggb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIGZpcnN0IGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgJHdpZHRoO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBGb3IgcmlnaHQgdHJpYW5nbGVzICh0aGUgcmVzdCksIGJvdGggc2lkZXMgZ2V0IHR3byBib3JkZXJzLFxuICAgIC8vIHNvIGRpdmlkZSBib3RoIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAoJHdpZHRoIC8gMik7XG4gIH1cblxuICBib3JkZXItd2lkdGg6ICRib3JkZXItd2lkdGhzO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG5cbiAgLy8gU1RBTkRBUkQgVFJJQU5HTEVTXG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cblxuICAvLyBDT1JORVIgVFJJQU5HTEVTXG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdG9wLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdHJpYW5nbGUge1xuICBAaW5jbHVkZSBzY3V0LXRyaWFuZ2xlO1xufVxuQG1peGluIHNjdXQtY2VudGVyLWFic29sdXRlbHkgKFxuICAkZGltZW5zaW9uc1xuKSB7XG5cbiAgJHdpZHRoOiBudGgoJGRpbWVuc2lvbnMsIDEpO1xuICAkaGVpZ2h0OiBudGgoJGRpbWVuc2lvbnMsIDIpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJHdpZHRoICE9IG4ge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAoLSR3aWR0aCAvIDIpO1xuICB9XG5cbiAgQGlmICRoZWlnaHQgIT0gbiB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6ICgtJGhlaWdodCAvIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1ibG9jayAoXG4gICRtYXgtd2lkdGg6IGZhbHNlXG4pIHtcblxuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBAaWYgJG1heC13aWR0aCB7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICB9XG5cbn1cblxuJXNjdXQtY2VudGVyLWJsb2NrIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItYmxvY2s7XG59XG5cbkBtaXhpbiBzY3V0LWNlbnRlci10cmFuc2Zvcm0gKFxuICAkYXhpczogZmFsc2UgLy8gb3IgeCBvciB5XG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICRheGlzICE9IHgge1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgfVxuXG4gIEBpZiAkYXhpcyAhPSB5IHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgJHRyYW5zbGF0ZS12YWw6IG51bGw7XG5cbiAgQGlmIG5vdCgkYXhpcykge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geCB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIC1tcy10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICB0cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXgge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeCk7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuQG1peGluIHNjdXQtZmlsbCAoXG4gICR3aWR0aC1oZWlnaHQ6IGZhbHNlXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgQGlmICR3aWR0aC1oZWlnaHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtZmlsbCB7XG4gIEBpbmNsdWRlIHNjdXQtZmlsbDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtY3VzdG9tIChcbiAgJGNvbnRlbnQ6IFwiXFwyMDIyXCIsXG4gICRtYXJrZXItd2lkdGg6IDAuNzVlbSxcbiAgJHBhZDogMCxcbiAgJG5vLW1hcmdpbjogZmFsc2Vcbikge1xuXG4gICRjb250ZW50LXZhbDogbnVsbDtcbiAgJGNvdW50ZXI6IGluZGV4KCRjb250ZW50LCBjb3VudCk7XG4gIEBpZiAkY291bnRlciB7XG4gICAgQGlmIGxlbmd0aCgkY29udGVudCkgPT0gMyB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyLCBudGgoJGNvbnRlbnQsIDMpKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAyIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICRjb250ZW50LXZhbDogJGNvbnRlbnQ7XG4gIH1cblxuICBwYWRkaW5nLWxlZnQ6ICRtYXJrZXItd2lkdGggKyAkcGFkO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gICYgPiBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiAkY291bnRlciB7XG4gICAgICBjb3VudGVyLWluY3JlbWVudDogc2N1dGxpc3Rjb3VudGVyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkY29udGVudC12YWw7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IC0kbWFya2VyLXdpZHRoO1xuICAgICAgd2lkdGg6ICRtYXJrZXItd2lkdGg7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC1mbG9hdGVkYCwgd2hpY2ggZGVwZW5kcyBpbiB0dXJuIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1kaXZpZGVkIChcbiAgJGRpdmlkZXI6IFwifFwiLFxuICAkc3BhY2U6IDAuNWVtLFxuICAkZGlyOiBsZWZ0LFxuICAkaGVpZ2h0OiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQoJGRpcjogJGRpciwgJG5vLW1hcmdpbjogJG5vLW1hcmdpbik7XG5cbiAgJHBzZXVkbzogaWYoJGRpciA9PSBsZWZ0LCAnYmVmb3JlJywgJ2FmdGVyJyk7XG5cbiAgLy8gSWYgYW4gZXhwbGljaXQgaGVpZ2h0IGlzIHBhc3NlZCxcbiAgLy8gdGhpbmdzIGFyZSBkaWZmZXJlbnQ6IEFsbCA8bGk+c1xuICAvLyBuZWVkIHRoZSBwc2V1ZG8tZWxlbWVudCAodG8gZm9yY2UgaGVpZ2h0KSxcbiAgLy8gYnV0IHRoZSBmaXJzdCdzIG11c3QgYmUgaGlkZGVuLlxuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICAmID4gbGkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICAmID4gbGk6I3skcHNldWRvfSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgJiA+IGxpOmZpcnN0LWNoaWxkOiN7JHBzZXVkb30ge1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gICYgPiBsaSArIGxpOiN7JHBzZXVkb30ge1xuICAgIEBpZiBub3QoJGhlaWdodCkge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjZTtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtYmFyIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQ7XG59XG5cbiVzY3V0LWxpc3QtYnJlYWRjcnVtYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKFwiL1wiKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWlubGluZSAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtaW5saW5lO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtcHVuY3R1YXRlZCAoXG4gICRkaXZpZGVyOiBcIiwgXCIsXG4gICRkaXNwbGF5OiBpbmxpbmUsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6ICRkaXNwbGF5O1xuICAgICY6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWNvbW1hIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXB1bmN0dWF0ZWQ7XG59XG5AbWl4aW4gc2N1dC1tYXJnaW4gKFxuICAkbWFyZ2luXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDEgYW5kICRtYXJnaW4gIT0gbiB7XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMiB7XG4gICAgJG1hcmdpbi15OiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgQGlmICRtYXJnaW4teSAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDMge1xuICAgICRtYXJnaW4teS10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLXktYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgQGlmICRtYXJnaW4teS10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi15LWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSA0IHtcbiAgICAkbWFyZ2luLXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4tcmlnaHQ6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgICRtYXJnaW4tbGVmdDogbnRoKCRtYXJnaW4sIDQpO1xuICAgIEBpZiAkbWFyZ2luLXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1yaWdodCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi1yaWdodDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWxlZnQgIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi1sZWZ0O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1wYWRkaW5nIChcbiAgJHBhZGRpbmdcbikge1xuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDEgYW5kICRwYWRkaW5nICE9IG4ge1xuICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDIge1xuICAgICRwYWRkaW5nLXk6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICBAaWYgJHBhZGRpbmcteSAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15O1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXk7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAzIHtcbiAgICAkcGFkZGluZy15LXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLXktYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgIEBpZiAkcGFkZGluZy15LXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15LXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteS1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gNCB7XG4gICAgJHBhZGRpbmctdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXJpZ2h0OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICAkcGFkZGluZy1sZWZ0OiBudGgoJHBhZGRpbmcsIDQpO1xuICAgIEBpZiAkcGFkZGluZy10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmctdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctcmlnaHQgIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy1yaWdodDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1sZWZ0ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy1sZWZ0O1xuICAgIH1cbiAgfVxufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1hYnNvbHV0ZSAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWFic29sdXRlIHtcbiAgQGluY2x1ZGUgc2N1dC1hYnNvbHV0ZTtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtZml4ZWQgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1maXhlZCB7XG4gIEBpbmNsdWRlIHNjdXQtZml4ZWQ7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LXJlbGF0aXZlIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cbkBtaXhpbiBzY3V0LXJhdGlvLWJveCAoXG4gICRyYXRpbzogMS8xXG4pIHtcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVGhlIGNvbnRhaW5lcidzIGhlaWdodCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZVxuICAvLyBjb250YWluZXIncyB3aWR0aCwgaXMgc2V0IGJ5IGFzc2lnbmluZ1xuICAvLyBwYWRkaW5nLXRvcCB0byBhIHBzZXVkby1lbGVtZW50LlxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgcGFkZGluZy10b3A6ICgxIC8gJHJhdGlvKSAqIDEwMCU7XG4gIH1cblxufVxuXG4lc2N1dC1yYXRpby1ib3gge1xuICBAaW5jbHVkZSBzY3V0LXJhdGlvLWJveDtcbn1cbkBtaXhpbiBzY3V0LXNpemUoXG4gICRzaXplXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAxIHtcbiAgICB3aWR0aDogICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICB3aWR0aDogIG50aCgkc2l6ZSwgMSk7XG4gICAgaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAtJGhlaWdodDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAjeyR3cmFwcGVyfTphZnRlcixcbiAgI3skZm9vdGVyfSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG5cbn1cblxuLy8gZGVwcmVjYXRlZFxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3RlciAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbil7XG4gIEBpbmNsdWRlIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCgkaGVpZ2h0LCAkd3JhcHBlciwgJGZvb3Rlcik7XG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZsdWlkIChcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICN7JGZvb3Rlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcbiAgICBoZWlnaHQ6IDFweDtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLWliIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICAvLyBUaGUgaW5uZXIgZWxlbWVudCBpcyB2ZXJ0aWNhbGx5IGNlbnRlcmVkXG4gIC8vIGJ5IG1pZGRsZS1hbGlnbmluZyBpdCB3aXRoIGFuIGlubGluZSBwc2V1ZG8tZWxlbWVudFxuICAvLyB3aG9zZSBoZWlnaHQgaXMgMTAwJS5cblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgLy8gQSBzbWFsbCBuZWdhdGl2ZSByaWdodCBtYXJnaW4gaXMgc2V0XG4gICAgLy8gdG8gYWNjb3VudCBmb3IgdGhlIGRlZmF1bHRcbiAgICAvLyB3b3JkLXNwYWNpbmcgb2YgaW5saW5lLWJsb2NrLlxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVlbTtcbiAgfVxuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC12Y2VudGVyLWliIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLWliO1xufVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLWxoIChcbiAgJGhlaWdodFxuKSB7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJGhlaWdodDtcblxufVxuQG1peGluIHNjdXQtdmNlbnRlci10ZCAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgZGlzcGxheTogdGFibGU7XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG5cbiVzY3V0LXZjZW50ZXItdGQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdGQ7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1jZW50ZXItdHJhbnNmb3JtXG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItdHQgKCkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbiVzY3V0LXZjZW50ZXItdHQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdHQ7XG59XG4vLyBzcGFjZVxuJHNjdXQtc3BhY2U6IFwiXFwwMDIwXCI7XG4vLyBub24tYnJlYWtpbmcgc3BhY2VcbiRzY3V0LW5ic3A6IFwiXFwwMGEwXCI7XG5cbi8vIHF1b3RhdGlvbiBtYXJrXG4kc2N1dC1xdW90OiBcIlxcMDAyMlwiO1xuLy8gbGVmdCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LWxzcXVvOiBcIlxcMjAxOFwiO1xuLy8gcmlnaHQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1yc3F1bzogXCJcXDIwMTlcIjtcbi8vIGxlZnQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1sZHF1bzogXCJcXDIwMUNcIjtcbi8vIHJpZ2h0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtcmRxdW86IFwiXFwyMDFEXCI7XG4vLyBsZWZ0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbHNhcXVvOiBcIlxcMjAzOVwiO1xuLy8gcmlnaHQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yc2FxdW86IFwiXFwyMDNBXCI7XG4vLyBsZWZ0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbGFxdW86IFwiXFwwMGFiXCI7XG4vLyByaWdodCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJhcXVvOiBcIlxcMDBiYlwiO1xuXG4vLyBlbSBkYXNoIChtdXR0b24pXG4kc2N1dC1tZGFzaDogXCJcXDIwMTRcIjtcbi8vIGVuIGRhc2ggKG51dClcbiRzY3V0LW5kYXNoOiBcIlxcMjAxM1wiO1xuLy8gaHlwaGVuXG4kc2N1dC1oeXBoZW46IFwiXFwyMDEwXCI7XG5cbi8vIGFtcGVyc2FuZFxuJHNjdXQtYW1wOiBcIlxcMDAyNlwiO1xuLy8gZ3JlYXRlciB0aGFuXG4kc2N1dC1ndDogXCJcXDAwM2VcIjtcbi8vIGxlc3MgdGhhblxuJHNjdXQtbHQ6IFwiXFwwMDNjXCI7XG4vLyB0aW1lc1xuJHNjdXQtdGltZXM6IFwiXFwwMEQ3XCI7XG4vLyBiaWcgdGltZXNcbiRzY3V0LWJpZ3RpbWVzOiBcIlxcMjcxNVwiO1xuLy8gY2hlY2ttYXJrXG4kc2N1dC1jaGVja21hcms6IFwiXFwyNzEzXCI7XG5cbi8vIHNlY3Rpb24gc2lnbiAoZG91YmxlIFMsIGh1cnJpY2FuZSwgc2VjdGlvbmFsIHN5bWJvbCwgdGhlIGxlZ2FsIGRvdWdobnV0LCBzaWdudW0gc2VjdGlvbmlzKVxuJHNjdXQtc2VjdDogXCJcXDAwYTdcIjtcbi8vIHBhcmFncmFwaCBzeW1ib2wgKHBpbGNyb3cpXG4kc2N1dC1wYXJhOiBcIlxcMDBiNlwiO1xuXG4vLyBtaWRkb3QgKGludGVycHVuY3QsIGludGVycG9pbnQpXG4kc2N1dC1taWRkb3Q6IFwiXFwwMGI3XCI7XG4vLyBvLXNsYXNoIChzbGFzaGVkIG8pXG4kc2N1dC1vc2xhc2g6IFwiXFwwMGY4XCI7XG4vLyBidWxsZXRcbiRzY3V0LWJ1bGw6IFwiXFwyMDIyXCI7XG4vLyB3aGl0ZSBidWxsZXRcbiRzY3V0LXdoaWJ1bGw6IFwiXFwyNUU2XCI7XG4vLyBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1oZWxsaXA6IFwiXFwyMDI2XCI7XG4vLyB2ZXJ0aWNhbCBlbGxpcHNpc1xuJHNjdXQtdmVsbGlwOiBcIlxcMjJFRVwiO1xuLy8gbWlkbGluZSBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1taWRoZWxsaXA6IFwiXFwyMkVGXCI7XG5cbi8vIHVwLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC11dHJpOiBcIlxcMjViMlwiO1xuLy8gZG93bi1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtZHRyaTogXCJcXDI1YmNcIjtcbi8vIGxlZnQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWx0cmk6IFwiXFwyNWMwXCI7XG4vLyByaWdodC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtcnRyaTogXCJcXDI1YjZcIjtcbi8vIHVwLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC11c3RyaTogXCJcXDI1YjRcIjtcbi8vIGRvd24tcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWRzdHJpOiBcIlxcMjViZVwiO1xuLy8gbGVmdC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtbHN0cmk6IFwiXFwyNWMyXCI7XG4vLyByaWdodC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtcnN0cmk6IFwiXFwyNWI4XCI7XG4vLyBkaWFtb25kXG4kc2N1dC1kaWFtb25kOiBcIlxcMjVjNlwiO1xuLy8gZmlzaGV5ZVxuJHNjdXQtZmlzaGV5ZTogXCJcXDI1YzlcIjtcbi8vIGJ1bGxzZXllXG4kc2N1dC1idWxsc2V5ZTogXCJcXDI1Y2VcIjtcbi8vIGNpcmNsZVxuJHNjdXQtY2lyY2xlOiBcIlxcMjVjZlwiO1xuLy8gd2hpdGUgY2lyY2xlXG4kc2N1dC13aGl0ZWNpcmNsZTogXCJcXDI1Y2JcIjtcbi8vIHNxdWFyZVxuJHNjdXQtc3F1YXJlOiBcIlxcMjVhMFwiO1xuLy8gd2hpdGUgc3F1YXJlXG4kc2N1dC13aGl0ZXNxdWFyZTogXCJcXDI1YTFcIjtcbi8vIHNtYWxsIHNxdWFyZVxuJHNjdXQtc3NxdWFyZTogXCJcXDI1YWFcIjtcbi8vIHNtYWxsIHdoaXRlIHNxdWFyZVxuJHNjdXQtc3doaXRlc3F1YXJlOiBcIlxcMjVhYlwiO1xuXG4vLyBnZW5lcmFsIGN1cnJlbmN5XG4kc2N1dC1jdXJyZW5jeTogXCJcXDAwYTRcIjtcbi8vIGNlbnRcbiRzY3V0LWNlbnQ6IFwiXFwwMGEyXCI7XG4vLyBkb2xsYXJcbiRzY3V0LWRvbGxhcjogXCJcXDAwMjRcIjtcbi8vIHBvdW5kXG4kc2N1dC1wb3VuZDogXCJcXDAwYTNcIjtcbi8vIGV1cm9cbiRzY3V0LWV1cm86IFwiXFwyMGFjXCI7XG4vLyB5ZW5cbiRzY3V0LXllbjogXCJcXDAwYTVcIjtcbi8vIHJ1cGVlXG4kc2N1dC1ydXBlZTogXCJcXDIwQjlcIjtcbkBmdW5jdGlvbiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KSB7XG4gIC8vIFJldHVybiB0aGUgbGlzdCBvZiBgc3JjYCB2YWx1ZXMsIGluIG9yZGVyLCB0aGF0XG4gIC8vIGEgZ29vZCBgQGZvbnQtZmFjZWAgd2lsbCBuZWVkLCBpbmNsdWRpbmcgb25seVxuICAvLyB0aG9zZSBmb3JtYXRzIHNwZWNpZmllZCBpbiB0aGUgbGlzdCBgJGZvcm1hdHNgLlxuICAkcmVzdWx0OiAoKTtcbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAkZW90LXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRlb3QtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmMikge1xuICAgICR3b2ZmMi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYyLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZikge1xuICAgICR3b2ZmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB0dGYpIHtcbiAgICAkdHRmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHR0Zi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHN2Zykge1xuICAgICRzdmctdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fScpIGZvcm1hdCgnc3ZnJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRzdmctdmFsLCBjb21tYSk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AbWl4aW4gc2N1dC1mb250LWZhY2UgKFxuICAkZm9udC1mYW1pbHksXG4gICRmaWxlLXBhdGgsXG4gICR3ZWlnaHQ6IG5vcm1hbCxcbiAgJHN0eWxlOiBub3JtYWwsXG4gICRmb3JtYXRzOiBlb3Qgd29mZjIgd29mZiB0dGYgc3ZnXG4pIHtcblxuICBAaWYgaW5kZXgoJ2l0YWxpYycgJ29ibGlxdWUnLCAkd2VpZ2h0KSB7XG4gICAgJHN0eWxlOiAkd2VpZ2h0O1xuICAgICR3ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuXG4gICAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAgIHNyYzogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgIH1cbiAgICBzcmM6IG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpO1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGFuZ2luZy1pbmRlbnQgKFxuICAkaW5kZW50OiAxZW1cbikge1xuXG4gIC8vIHBhZGRpbmctbGVmdCBjcmVhdGVzIHRoZSBpbmRlbnQsXG4gIC8vIHdoaWxlIHRleHQtaW5kZW50IHB1bGxzIHRoZSBmaXJzdCBsaW5lXG4gIC8vIGJhY2sgdG8gdGhlIGVkZ2UuXG5cbiAgcGFkZGluZy1sZWZ0OiAkaW5kZW50O1xuICB0ZXh0LWluZGVudDogLSRpbmRlbnQ7XG5cbn1cblxuJXNjdXQtaGFuZ2luZy1pbmRlbnQge1xuICBAaW5jbHVkZSBzY3V0LWhhbmdpbmctaW5kZW50O1xufVxuQG1peGluIHNjdXQtaW5kZW50ZWQtcHMgKFxuICAkaW5kZW50OiAxLjVlbSxcbiAgJG5vLWZpcnN0LWluZGVudDogdHJ1ZVxuKSB7XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtaW5kZW50OiAkaW5kZW50O1xuICB9XG5cbiAgQGlmICRuby1maXJzdC1pbmRlbnQge1xuICAgIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB0ZXh0LWluZGVudDogMDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1pbmRlbnRlZC1wcyB7XG4gIEBpbmNsdWRlIHNjdXQtaW5kZW50ZWQtcHM7XG59XG5AbWl4aW4gc2N1dC1rZXktdmFsIChcbiAgJGRpdmlkZXI6IFwiOlwiLFxuICAkcGFkOiAwLjI1ZW0sXG4gICRpbmRlbnQ6IDFlbSxcbiAgJHNwYWNpbmc6IDAsXG4gICRwYWQtbGVmdDogMFxuKSB7XG5cbiAgJiA+IGR0IHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkcGFkO1xuICAgICAgQGlmICRwYWQtbGVmdCAhPSAwIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRwYWQtbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmID4gZGQge1xuICAgIG1hcmdpbi1sZWZ0OiAkaW5kZW50O1xuICAgIEBpZiAkc3BhY2luZyAhPSAwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWtleS12YWwge1xuICBAaW5jbHVkZSBzY3V0LWtleS12YWw7XG59XG5AbWl4aW4gc2N1dC1saW5rLWJiIChcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkd2lkdGg6IDFweFxuKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gIGJvcmRlci1ib3R0b20td2lkdGg6ICR3aWR0aDtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgfVxuXG59XG5cbiVzY3V0LWxpbmstYmIge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstYmI7XG59XG4vLyBTQ1VUIExJTksgVU5TVFlMRURcbi8vIGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0LyNsaW5rLXVuc3R5bGVkXG5cbkBtaXhpbiBzY3V0LWxpbmstdW5zdHlsZWQoKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcblxufVxuXG4lc2N1dC1saW5rLXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLXVuc3R5bGVkKCk7XG59XG5cbkBtaXhpbiBzY3V0LXJldmVyc2UtaXRhbGljcyAoXG4gICRlbGVtZW50czogbnVsbFxuKSB7XG5cbiAgJGVsZW1lbnQtbGlzdDogZW0sIGNpdGUsIGk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgI3tqb2luKCRlbGVtZW50LWxpc3QsICRlbGVtZW50cyl9IHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cblxufVxuXG4lc2N1dC1yZXZlcnNlLWl0YWxpY3Mge1xuICBAaW5jbHVkZSBzY3V0LXJldmVyc2UtaXRhbGljcztcbn1cblxuQG1peGluIHNjdXQtc2lkZS1saW5lZCAoXG4gICRoZWlnaHQ6IDFweCxcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkdi1hZGp1c3Q6IGZhbHNlLFxuICAkZG91YmxlOiBmYWxzZVxuKSB7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDUwJTtcblxuICAgIGJvcmRlci10b3Atc3R5bGU6ICRzdHlsZTtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAkaGVpZ2h0O1xuXG4gICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgJHYtYWRqdXN0ICE9IGZhbHNlIHtcbiAgICAgIGJvdHRvbTogJHYtYWRqdXN0O1xuICAgIH1cblxuICAgIEBpZiAkZG91YmxlICE9IGZhbHNlIHtcbiAgICAgIGhlaWdodDogJGRvdWJsZTtcbiAgICAgIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6ICRoZWlnaHQ7XG4gICAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0OiAkc3BhY2U7XG4gICAgbWFyZ2luLWxlZnQ6IC01MCU7XG4gIH1cbiAgJjphZnRlciB7XG4gICAgbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXNpZGUtbGluZWQge1xuICBAaW5jbHVkZSBzY3V0LXNpZGUtbGluZWQ7XG59XG5AbWl4aW4gc2N1dC10cnVuY2F0ZSB7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbn1cblxuJXNjdXQtdHJ1bmNhdGUge1xuICBAaW5jbHVkZSBzY3V0LXRydW5jYXRlO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInRvb2xraXQvcGxhY2Vob2xkZXJzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcInRvb2xraXQvY29sb3JzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9mb250c1wiO1xuQGltcG9ydCBcInRvb2xraXQvaW50cmluc2ljLXJhdGlvXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9uZXN0ZWQtY29udGV4dFwiO1xuQGltcG9ydCBcInRvb2xraXQvcGFyYWxsYXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3J0bFwiO1xuQGltcG9ydCBcInRvb2xraXQvdGFyZ2V0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC90cmlhbmdsZVwiO1xuQGltcG9ydCBcInRvb2xraXQvY2VudGVyXCI7XG5AaW1wb3J0IFwidG9vbGtpdC92aWV3cG9ydFwiO1xuQGltcG9ydCBcInRvb2xraXQvdW5kZXJsaW5lXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9hcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3NldC1tdWx0aXBsZVwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRUb29sa2l0LVNldHRpbmdzOiAoXG4gICdjbGVhcmZpeCBleHRlbmQnOiBmYWxzZSxcbiAgJ2NvbG9yIHN0YWNrIGFtb3VudHMnOiAyNSUgNTAlIDc1JSA4NSUgOTAlLFxuICAndGludCBzaGFkZSBhbW91bnRzJzogNzUlIDUwJSAyNSUsXG4gICd0aW50IGNvbG9yJzogI2ZmZixcbiAgJ3NoYWRlIGNvbG9yJzogIzAwMCxcbiAgJ2NvbG9yIHNjYWxlIHN0ZXBzJzogNixcbiAgJ2xpZ2F0dXJlIGV4dGVuZCc6IGZhbHNlLFxuICAnZm9udCBmYWNlIHdlaWdodCc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBzdHlsZSc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZic6IGZhbHNlLFxuICAnaWNvbiBmb250IGV4dGVuZCc6IGZhbHNlLFxuICAnaWNvbiBmb250IHNwZWFrJzogZmFsc2UsXG4gICdmYWRlIGluIGR1cmF0aW9uJzogMXMsXG4gICdmYWRlIGluIGxvYWRpbmcgY2xhc3MnOiAnLndmLWxvYWRpbmcnLFxuICAnZmFkZSBpbiBleHRlbmQnOiBmYWxzZSxcbiAgJ2ludHJpbnNpYyByYXRpbyc6IDE2LzksXG4gICdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnOiAxMDAlLFxuICAnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJzogJz4gKicsXG4gICdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nOiB0b3AsXG4gICdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJzogZmFsc2UsXG4gICduZXN0ZWQgY29udGV4dCBjb250ZXh0cyc6IDEwMCUsXG4gICduZXN0ZWQgY29udGV4dCBwb3NpdGlvbic6IGxlZnQsXG4gICd0cmlhbmdsZSBjb2xvcic6ICMwMDAsXG4gICd0cmlhbmdsZSBoZWlnaHQnOiAxZW0sXG4gICd0cmlhbmdsZSB3aWR0aCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIGFuZ2xlJzogMCxcbiAgJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJzogMSxcbiAgJ3BhcmFsbGF4IGVsZW1lbnQnOiAnYm9keScsXG4gICdwYXJhbGxheCBpb3MnOiB0cnVlLFxuICAncGFyYWxsYXggZGlzdGFuY2UnOiAwLFxuICAndmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICd2ZXJ0aWNhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnOiA1MCUsXG4gICdob3Jpem9udGFsIGZpeGVkJzogZmFsc2UsXG4gICdob3Jpem9udGFsIGV4dGVuZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJzogZmFsc2UsXG4gICd1bmRlcmxpbmUgYmFja2dyb3VuZCc6ICNmZmYsXG4gICd1bmRlcmxpbmUgY29sb3InOiAjMDBlLFxuICAndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnOiB0cnVlLFxuICAndW5kZXJsaW5lIGRpc3RhbmNlJzogMSxcbiAgJ3VuZGVybGluZSB3aWR0aCc6IDIsXG4gICd1bmRlcmxpbmUgZXh0ZW5kJzogZmFsc2UsXG4gICdhcnQgcGl4ZWwgc2l6ZSc6IDFweCxcbiAgJ2FydCBjb2xvcic6IGJsYWNrLFxuICAnYXJ0IGJvcmRlciByYWRpdXMnOiAwJVxuKTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBOZXcgU2V0dGluZ3MgbW9kdWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdsb2JhbFxuJEdsb2JhbFNldHRpbmdzOiAkVG9vbGtpdC1TZXR0aW5ncyAhZGVmYXVsdDtcbi8vIFVzZXJcbiRVc2VyU2V0dGluZ3M6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVzZXIgU2V0dGluZyBFeGlzdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJFJldHVybjtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1oYXMoJHNldHRpbmcpIHtcbiAgQHJldHVybiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIEdldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEdsb2JhbFNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctZ2V0LW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkdmFsdWVzOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkdmFsdWVzOiBtYXAtbWVyZ2UoJHZhbHVlcywgKCRzZXR0aW5nOiBzZXR0aW5nLWdldCgkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICR2YWx1ZXM7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtZ2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1nZXQoJHNldHRpbmcpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZ3MgU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgJHNldHRpbmdzKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZS1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJFJldHVybjogKCk7XG5cbiAgQGVhY2ggJEtleSwgJFZhbHVlIGluICRVc2VyU2V0dGluZ3Mge1xuICAgICRSZXR1cm46IGlmKCRzZXR0aW5nID09ICRLZXksICRSZXR1cm4sIG1hcC1tZXJnZSgkUmV0dXJuLCAoJEtleTogJFZhbHVlKSkpO1xuICB9XG5cbiAgJFVzZXJTZXR0aW5nczogJFJldHVybiAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRjbGVhci10aGUtc2V0dGluZ3M6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcmVzZXQoKSB7XG4gICRVc2VyU2V0dGluZ3M6ICgpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLXJlc2V0KCk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBQaWNrXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2soJHNldHRpbmcsICRpbnB1dCkge1xuICBAcmV0dXJuIGlmKCRpbnB1dCAhPSBudWxsLCAkaW5wdXQsIHNldHRpbmctZ2V0KCRzZXR0aW5nKSk7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2stbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZywgJGlucHV0IGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogc2V0dGluZy1waWNrKCRpbnB1dCwgJHNldHRpbmcpKSk7XG4gIH1cblxuICBAcmV0dXJuICRSZXR1cm47XG59IiwiJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFBsYWNlaG9sZGVyIEdldC9TZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCkge1xuICAkdW5pcXVlLWlkOiB1bmlxdWUtaWQoKTtcbiAgJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6IG1hcC1tZXJnZSgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgKCRpZDogJHVuaXF1ZS1pZCkpICFnbG9iYWw7XG4gIEByZXR1cm4gJHVuaXF1ZS1pZDtcbn1cblxuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCkge1xuICBAcmV0dXJuIG1hcC1nZXQoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICRpZCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhdGUgUGxhY2Vob2xkZXIgQ2xhc3MgYW5kIEV4dGVuZFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKTtcblxuICBAaWYgJHBsYWNlaG9sZGVyLWlkID09IG51bGwge1xuICAgICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKTtcbiAgICBAYXQtcm9vdCAlI3skcGxhY2Vob2xkZXItaWR9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZXh0ZW5kICUjeyRwbGFjZWhvbGRlci1pZH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU3RhdGljIE1peGluIEhlbHBlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gbWl4aW4tZHJ5ZXIoJGlkLCAkZXh0ZW5kOiB0cnVlKSB7XG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNb2Rlcm4gQ2xlYXJmaXggTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNsZWFyZml4KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnY2xlYXJmaXggZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjbGVhcmZpeCcpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb21wYXNzIEV4dGVuc2lvbiBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUaW50IGFuZCBTaGFkZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMdW1hXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBsdW1hKCRjb2xvcikge1xuICBAcmV0dXJuIChyZWQoJGNvbG9yKSAqIC4yOTkpICsgKGdyZWVuKCRjb2xvcikgKiAuNTg3KSArIChibHVlKCRjb2xvcikgKiAuMTE0KTtcbn1cblxuQGZ1bmN0aW9uIGx1bWEtZ3RlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPj0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWx0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpIDw9IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1kaWZmKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQHJldHVybiBsdW1hKCRjb2xvcjEpIC0gbHVtYSgkY29sb3IyKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTdGFja3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXN0YWNrKCRtYWluLCAkc2Vjb25kYXJ5LCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ2NvbG9yIHN0YWNrIGFtb3VudHMnKTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJGFtb3VudHMpID09IDEge1xuICAgICRhbW91bnRzOiBudGgoJGFtb3VudHMsIDEpO1xuICB9XG5cbiAgJHN0YWNrOiAkbWFpbjtcblxuICBAZWFjaCAkYW1vdW50IGluICRhbW91bnRzIHtcbiAgICAkc3RhY2s6IGpvaW4oJHN0YWNrLCBtaXgoJHNlY29uZGFyeSwgbnRoKCRzdGFjaywgMSksICRhbW91bnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0YWNrO1xufVxuXG4vLyBUaW50IFN0YWNrXG5AZnVuY3Rpb24gdGludC1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFNoYWRlIFN0YWNrXG5AZnVuY3Rpb24gc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFRpbnQvU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgJGNvbG9yczogKCk7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgndGludCBzaGFkZSBhbW91bnRzJyk7XG4gIH1cbiAgJGxlbmd0aDogbGVuZ3RoKCRhbW91bnRzKTtcblxuICAvLyBTaGFkZXNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgc2hhZGUoJGNvbG9yLCBudGgoJGFtb3VudHMsICRpKSkpO1xuICB9XG5cbiAgLy8gQmFzZVxuICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgJGNvbG9yKTtcblxuICAvLyBUaW50c1xuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRsZW5ndGggLSAxIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgdGludCgkY29sb3IsIG50aCgkYW1vdW50cywgJGxlbmd0aCAtICRpKSkpO1xuICB9XG5cbiAgQHJldHVybiAkY29sb3JzO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFNjYWxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc2NhbGUoJG1haW4sICRzZWNvbmRhcnksICRzdGVwczogbnVsbCkge1xuICAkc3RlcHM6IGlmKCRzdGVwcyAhPSBudWxsLCAkc3RlcHMsIHRvb2xraXQtZ2V0KCdjb2xvciBzY2FsZSBzdGVwcycpKTtcblxuICAkbGlzdDogJG1haW47XG5cbiAgJHJlZDE6IHJlZCgkbWFpbik7XG4gICRyZWQyOiByZWQoJHNlY29uZGFyeSk7XG4gICRyZWQtZGlmZjogKCgkcmVkMSAtICRyZWQyKSAvICgoJHN0ZXBzIC0gMSkpKTtcblxuICAkaHVlMTogaHVlKCRtYWluKTtcbiAgJGh1ZTI6IGh1ZSgkc2Vjb25kYXJ5KTtcbiAgQGlmICgkaHVlMiArIDM1OSAtICRodWUxKSA8IGFicygkaHVlMSAtICRodWUyKSB7XG4gICAgJGh1ZTI6ICRodWUyICsgMzU5O1xuICB9XG4gICRodWUtZGlmZjogKCRodWUyIC0gJGh1ZTEpIC8gKCRzdGVwcyAtIDEpO1xuXG4gICRzYXQxOiBzYXR1cmF0aW9uKCRtYWluKTtcbiAgJHNhdDI6IHNhdHVyYXRpb24oJHNlY29uZGFyeSk7XG4gICRzYXQtZGlmZjogMDtcbiAgQGlmICRzYXQxID4gJHNhdDIge1xuICAgICRzYXQtZGlmZjogKCRzYXQyIC0gJHNhdDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MSAtICRzYXQyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRsdGUxOiBsaWdodG5lc3MoJG1haW4pO1xuICAkbHRlMjogbGlnaHRuZXNzKCRzZWNvbmRhcnkpO1xuICAkbHRlLWRpZmY6IDA7XG4gIEBpZiAkbHRlMSA+ICRsdGUyIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMiAtICRsdGUxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTEgLSAkbHRlMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkYWxwMTogYWxwaGEoJG1haW4pO1xuICAkYWxwMjogYWxwaGEoJHNlY29uZGFyeSk7XG4gICRhbHAtZGlmZjogMDtcbiAgQGlmICRhbHAxID4gJGFscDIge1xuICAgICRhbHAtZGlmZjogKCRhbHAyIC0gJGFscDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMSAtICRhbHAyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRodWUtaG9sZDogJGh1ZTE7XG4gICRzYXQtaG9sZDogJHNhdDE7XG4gICRsdGUtaG9sZDogJGx0ZTE7XG4gICRhbHAtaG9sZDogJGFscDE7XG4gICRjb2xvci1ob2xkOiAwO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJHN0ZXBzIHtcbiAgICAkaHVlLWhvbGQ6ICRodWUtaG9sZCArICRodWUtZGlmZjtcbiAgICAkc2F0LWhvbGQ6ICRzYXQtaG9sZCArICRzYXQtZGlmZjtcbiAgICAkbHRlLWhvbGQ6ICRsdGUtaG9sZCArICRsdGUtZGlmZjtcbiAgICAkYWxwLWhvbGQ6ICRhbHAtaG9sZCArICRhbHAtZGlmZjtcblxuICAgICRjb2xvci1ob2xkOiBoc2xhKCRodWUtaG9sZCwgJHNhdC1ob2xkLCAkbHRlLWhvbGQsICRhbHAtaG9sZCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGNvbG9yLWhvbGQpO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFbmFibGUgbGlnYXR1cmVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnbGlnYXR1cmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnZW5hYmxlIGxpZ2F0dXJlcycpIHtcbiAgICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXM7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2E9MSwgZGxpZz0xXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1zLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtby1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIixcImRsaWdcIjtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFjZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZm9udC1mYWNlKCRuYW1lLCAkZmlsZXMsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGlubGluZS13b2ZmOiBudWxsKSB7XG4gICR3ZWlnaHQ6IGlmKCR3ZWlnaHQgIT0gbnVsbCwgJHdlaWdodCwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSB3ZWlnaHQnKSk7XG4gICRzdHlsZTogaWYoJHN0eWxlICE9IG51bGwsICRzdHlsZSwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBzdHlsZScpKTtcbiAgJGlubGluZS13b2ZmOiBpZigkaW5saW5lLXdvZmYgIT0gbnVsbCwgJGlubGluZS13b2ZmLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIGlubGluZSB3b2ZmJykpO1xuXG4gICRmb250LXN0YWNrOiAoKTtcbiAgJGZvbnQtc3JjOiAnJztcbiAgJGVvdDogZmFsc2U7XG4gICRmb250LWV4dGVuc2lvbnM6ICgnZW90JzogJ2VtYmVkZGVkLW9wZW50eXBlJywgJ3dvZmYyJzogJ3dvZmYyJywgJ3dvZmYnOiAnd29mZicsICd0dGYnOiAndHJ1ZXR5cGUnLCAnc3ZnJzogJ3N2ZycpO1xuXG4gIEBlYWNoICRleHQsICRmb3JtYXQgaW4gJGZvbnQtZXh0ZW5zaW9ucyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRmaWxlcywgJGV4dCkge1xuICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhpbmxpbmUtZm9udC1maWxlcykgYW5kICRpbmxpbmUtd29mZiA9PSB0cnVlIGFuZCAoJGV4dCA9PSAnd29mZicgb3IgJGV4dCA9PSAnd29mZjInKSB7XG4gICAgICAgICRmb250LXNyYzogaW5saW5lLWZvbnQtZmlsZXMobWFwLWdldCgkZmlsZXMsICRleHQpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIGZ1bmN0aW9uLWV4aXN0cyhmb250LXVybCkge1xuICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkZm9udC1zdGFjazogYXBwZW5kKCRmb250LXN0YWNrLCAkZm9udC1zcmMsICdjb21tYScpO1xuICAgIH1cblxuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRuYW1lO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6ICRlb3Q7XG4gICAgfVxuICAgIEBpZiBsZW5ndGgoJGZvbnQtc3RhY2spID4gMCB7XG4gICAgICBzcmM6ICRmb250LXN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEljb24gRm9udFxuLy8gRnJvbSBodHRwOi8vaWNvbW9vbi5pb1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaWNvbi1mb250KCRmb250LXN0YWNrLCAkc3BlYWs6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHNwZWFrOiBpZigkc3BlYWsgIT0gbnVsbCwgJHNwZWFrLCB0b29sa2l0LWdldCgnaWNvbiBmb250IHNwZWFrJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjaztcbiAgQGlmICRzcGVhayA9PSBmYWxzZSB7XG4gICAgc3BlYWs6IG5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gaWNvbi1mb250LS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCAge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpY29uIGZvbnQgY29yZScpIHtcbiAgICAgIEBpbmNsdWRlIGljb24tZm9udC0tY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZCk7XG5cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWRlIEluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjb250ZW50LWZhZGUtaW4oJGR1cmF0aW9uOiBudWxsLCAkbG9hZGluZzogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZHVyYXRpb246IGlmKCRkdXJhdGlvbiAhPSBudWxsLCAkZHVyYXRpb24sIHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykpO1xuICAkbG9hZGluZzogaWYoJGxvYWRpbmcgIT0gbnVsbCwgJGxvYWRpbmcsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUgYW5kICRkdXJhdGlvbiA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpIGFuZCAkbG9hZGluZyA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjb250ZW50IGZhZGUgaW4nKSB7XG4gICAgICBAaW5jbHVkZSBjb250ZW50LWZhZGUtaW4oJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaWYgbm90IG1peGluLWV4aXN0cygnc2luZ2xlLXRyYW5zaXRpb24nKSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG9wYWNpdHkgJGR1cmF0aW9uKTtcbiAgICB9XG5cbiAgICAjeyRsb2FkaW5nfSAmIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZsdWlkIEVtYmVkcyBhbmQgd2hhdGV2ZXIgV0lUSCBOTyBKQVZBU0NJUFQhXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBwYXJlbnQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gY2hpbGQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICB0b3A6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG5cbiAgcGFkZGluZy0jeyRwb3NpdGlvbn06ICgxIC8gJHJhdGlvKSAqICR3aWR0aDtcbiAgd2lkdGg6ICR3aWR0aDtcbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRlbGVtZW50czogaWYoJGVsZW1lbnRzICE9IG51bGwsICRlbGVtZW50cywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZCk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xuXG4gIEBlYWNoICRlbGVtZW50IGluICRlbGVtZW50cyB7XG4gICAgI3skZWxlbWVudH0ge1xuICAgIFx0QGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXIoJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpbygkcmF0aW8sICR3aWR0aCwgJGVsZW1lbnRzLCAkZXh0ZW5kLCAkcG9zaXRpb24pO1xufVxuXG5AbWl4aW4gaXItcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG59IiwiLy8gc2ltcGxlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbnRleHQgb2YgYSBuZXN0ZWQgcGVyY2VudGFnZS5cbkBmdW5jdGlvbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG5cbiAgLy8gRmlyc3QgbGV2ZWwgZGVlcCBpcyBhbHdheXMgMTAwJVxuICAkcGVyY2VudGFnZTogMTAwJTtcblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBsZXZlbFxuICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgIC8vIEludmVydCB0aGUgcGVyY2VudGFnZSB0byBmaW5kIGNvbnRleHRcbiAgICAkcGVyY2VudGFnZTogcGVyY2VudGFnZSgkcGVyY2VudGFnZSAvICRjb250ZXh0KTtcbiAgfVxuICAvLyBSZXR1cm4gZmluYWwgcGVyY2VudGFnZVxuICBAcmV0dXJuICRwZXJjZW50YWdlO1xufVxuXG4vLyBtaXhpbiB0byBtYWtlIHRoaW5ncyBlYXNpZXJcbkBtaXhpbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nKSk7XG5cbiAgd2lkdGg6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cyk7XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJjZW50ZXJcIiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0uNTtcbiAgfVxuICBAaWYgJHBvc2l0aW9uID09IFwicmlnaHRcIiB7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtMSArIDEwMCU7XG4gIH1cbn0iLCIvLyBNYWdpYyBwYXJhbGxheCBtaXhpbnNcbkBtaXhpbiBwYXJhbGxheC1pbml0KCRwZXJzcGVjdGl2ZTogbnVsbCwgJGVsZW1lbnQ6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcblxuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJGVsZW1lbnQ6IGlmKCRlbGVtZW50ICE9IG51bGwsICRlbGVtZW50LCB0b29sa2l0LWdldCgncGFyYWxsYXggZWxlbWVudCcpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIEBpZiAkZWxlbWVudCA9PSAnYm9keScge1xuICAgIEBhdC1yb290IHtcbiAgICAgIGh0bWwsIGJvZHkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICBib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGVsZW1lbnQgPT0gdGhpcyB7XG4gICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGF0LXJvb3QgI3skZWxlbWVudH0ge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmU6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBvdmVyZmxvdzogYXV0bztcbiAgQGlmIG1peGluLWV4aXN0cyhwZXJzcGVjdGl2ZSkge1xuICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSAqIDFweCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgICBwZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICB9XG4gIC8vIEFsbG93cyBmb3Igc21vb3RoIHNjcm9sbGluZyBidXQgZGlzYWJsZXMgcGFyYWxsYXggZWZmZWN0cy5cbiAgQGlmICRwYXJhbGxheC1pb3MgPT0gZmFsc2Uge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAvLyBNYWtlIHN1cmUgM0QgcGVyc3BlY3RpdmUgaXMgcHJlc2VydmVkXG4gICYsICYgKiB7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0tc3R5bGUpIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZShwcmVzZXJ2ZS0zZCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheCgkZGlzdGFuY2U6IG51bGwsICRwZXJzcGVjdGl2ZTogbnVsbCkge1xuXG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGRpc3RhbmNlJykpO1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcblxuICAkdHJhbnNmb3JtOiB0cmFuc2xhdGVaKCRkaXN0YW5jZSAqICRwZXJzcGVjdGl2ZSAqIDFweCkgc2NhbGUoYWJzKCRkaXN0YW5jZSAtIDEpKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnNmb3JtKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gICAgdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICB9XG5cbiAgei1pbmRleDogJGRpc3RhbmNlICogMTAwO1xufVxuIiwiQG1peGluIHJ0bCgkcHJvcGVydHksICR2YWx1ZSkge1xuICAkX3Byb3BlcnR5OiAkcHJvcGVydHk7XG4gICN7JHByb3BlcnR5fTogJHZhbHVlO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA9PSA0IHtcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgI3skcHJvcGVydHl9OiBudGgoJHZhbHVlLCAxKSBudGgoJHZhbHVlLCA0KSBudGgoJHZhbHVlLCAzKSBudGgoJHZhbHVlLCAyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpIC0gMSkgKyAncmlnaHQnO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykgLSAxKSArICdsZWZ0JztcbiAgICB9XG5cbiAgICBAaWYgJHByb3BlcnR5ICE9ICRfcHJvcGVydHkge1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiQG1peGluIHRhcmdldCgkdGFyZ2V0KSB7XG4gIEBhdC1yb290IHtcbiAgICAvKiEgQHt0YXJnZXQ6ICN7JHRhcmdldH19ICovXG4gICAgJiB7XG4gICAgICBAY29udGVudDsgIFxuICAgIH1cbiAgICAvKiEge3RhcmdldDogI3skdGFyZ2V0fX1AICovICBcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRHJhdyB0cmlhbmdsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gdHJpYW5nbGUoJGNvbG9yOiBudWxsLCAkaGVpZ2h0OiBudWxsLCAkd2lkdGg6IG51bGwsICRhbmdsZTogbnVsbCkge1xuXG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGNvbG9yJykpO1xuICAkaGVpZ2h0OiBpZigkaGVpZ2h0ICE9IG51bGwsICRoZWlnaHQsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBoZWlnaHQnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIHdpZHRoJykpO1xuICAkYW5nbGU6IGlmKCRhbmdsZSAhPSBudWxsLCAkYW5nbGUsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBhbmdsZScpKTtcblxuICBAaWYgbnRoKCRhbmdsZSwgMSkgPT0gXCJ0b3BcIiBvciBudGgoJGFuZ2xlLCAxKSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IFwiI3skYW5nbGV9XCI7XG4gIH1cblxuICBAaWYgJGFuZ2xlID09IFwidG9wXCIge1xuICAgICRhbmdsZTogMDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiA3O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJyaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAxO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDQ7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiAzO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA2O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNTtcbiAgfVxuXG4gIEBpZiB1bml0KCRoZWlnaHQpID09IFwiXCIgb3IgdW5pdCgkaGVpZ2h0KSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skaGVpZ2h0fSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIGhlaWdodC5cIlxuICB9XG5cbiAgQGlmIHVuaXQoJHdpZHRoKSA9PSBcIlwiIG9yIHVuaXQoJHdpZHRoKSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skd2lkdGh9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3Igd2lkdGguXCJcbiAgfVxuXG4gIC8vIG9mZnNldCA0NWRlZyB0byBtYWtlIGVhY2ggc2lkZSBzdGFydCBhdCAwXG4gICRkZWc6ICRhbmdsZSArIDQ1O1xuICAvLyBpZiB1bml0cywgcmVtb3ZlIHVuaXRzXG4gIEBpZiB1bml0KCRkZWcpID09IGRlZyB7XG4gICAgJGRlZzogJGRlZyAvIDFkZWc7XG4gIH1cbiAgLy8gc2hpZnQgdG8gYmUgb24gYSBzY2FsZSBmcm9tIDAgdG8gOTAuXG4gIEB3aGlsZSAkZGVnID4gOTAge1xuICAgICRkZWc6ICRkZWcgLSA5MDtcbiAgfVxuICBAd2hpbGUgJGRlZyA8IDAge1xuICAgICRkZWc6ICRkZWcgKyA5MDtcbiAgfVxuICAvLyBHZXQgYSByYXRpbyBvZiA5MCB0byBtdWx0aXBseSBieS5cbiAgJGRlZzogJGRlZyAvIDkwO1xuXG4gIC8vIG1ha2Ugc3VyZSBtZXRyaWNzIGFyZSByZXNldFxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gIC8vIHJ1biB0aHJvdWdoIHNpZGVzXG4gIEBpZiAkYW5nbGUgPD0gNDUgb3IgJGFuZ2xlID4gMzE1IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKSAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gNDUgYW5kICRhbmdsZSA8PSAxMzUge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqICRkZWcpIDAgKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGg7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDEzNSBhbmQgJGFuZ2xlIDw9IDIyNSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAoJHdpZHRoICogJGRlZykgMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDIyNSBhbmQgJGFuZ2xlIDw9IDMxNSB7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aCAoJGhlaWdodCAqICRkZWcpIDA7XG4gIH1cbn0iLCIvLyBWZXJ0aWNhbGx5IGNlbnRlciBhbnl0aGluZywgbGl0ZXJhbGx5IGFueXRoaW5nLlxuLy8gaHR0cDovL3plcm9zaXh0aHJlZS5zZS92ZXJ0aWNhbC1hbGlnbi1hbnl0aGluZy13aXRoLWp1c3QtMy1saW5lcy1vZi1jc3MvXG5AbWl4aW4gdmVydGljYWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuXG4gIHRvcDogJG1pZHBvaW50O1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3ZlcnRpY2FsIGNlbnRlcicpIHtcbiAgICAgIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhvcml6b250YWwgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgQGlmICRtaWRwb2ludCAhPSAwJSB7XG4gICAgbGVmdDogJG1pZHBvaW50O1xuICB9XG5cbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBYnNvbHV0ZSBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFic29sdXRlLWNlbnRlcigkdmVydGljYWw6IG51bGwsICRob3Jpem9udGFsOiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHZlcnRpY2FsOiBpZigkdmVydGljYWwgIT0gbnVsbCwgJHZlcnRpY2FsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgdG9wOiAkdmVydGljYWw7XG4gIEBpZiAkaG9yaXpvbnRhbCAhPSAwJSB7XG4gICAgbGVmdDogJGhvcml6b250YWw7XG4gIH1cblxuICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENTUyBsZXZlbCA0IFZpZXdwb3J0XG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtZGV2aWNlLWFkYXB0LyN0aGUtYXR2aWV3cG9ydC1ydWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiB2aWV3cG9ydCB7XG4gIEAtd2Via2l0LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tcy12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQHZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4iLCJAbWl4aW4gdW5kZXJsaW5lKCRiYWNrZ3JvdW5kOiBudWxsLCAkY29sb3I6IG51bGwsICRjbGVhci1kZXNjZW5kZXJzOiBudWxsLCAkZGlzdGFuY2U6IG51bGwsICR3aWR0aDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkYmFja2dyb3VuZDogaWYoJGJhY2tncm91bmQgIT0gbnVsbCwgJGJhY2tncm91bmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgYmFja2dyb3VuZCcpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNvbG9yJykpO1xuICAkY2xlYXItZGVzY2VuZGVyczogaWYoJGNsZWFyLWRlc2NlbmRlcnMgIT0gbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnMsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycycpKTtcbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGRpc3RhbmNlJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgd2lkdGgnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgJFBYOiAuMDYyNWVtO1xuXG4gIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKCRleHRlbmQpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHMoYmFja2dyb3VuZC1pbWFnZSkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhsaW5lYXItZ3JhZGllbnQpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKFxuICAgICAgbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKVxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSk7XG4gIH1cbiAgYmFja2dyb3VuZC1zaXplOiAoMiAqICRQWCkgKCgxICsgJHdpZHRoKSAqICRQWCk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgKCgkd2lkdGgpICogJFBYKSArICRkaXN0YW5jZTtcblxuICBAaWYgJGNsZWFyLWRlc2NlbmRlcnMge1xuICAgIHRleHQtc2hhZG93OiAoMSAqICRQWCkgKDEgKiAkUFgpIDAgJGJhY2tncm91bmQsICgtMSAqICRQWCkgMCAwICRiYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd1bmRlcmxpbmUnKSB7XG4gICAgICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBUlQhXG4vLyBJbnNwaXJlZCBieSBodHRwOi8vZWxydW1vcmRlbGFsdXouZ2l0aHViLmlvL1BpeGVsYXRvci9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFydCgkYXJ0LCAkcHgtc2l6ZTogbnVsbCwgJGNvbG9yOiBudWxsLCAkcmFkaXVzOiBudWxsKSB7XG4gICRweC1zaXplOiBpZigkcHgtc2l6ZSAhPSBudWxsLCAkcHgtc2l6ZSwgdG9vbGtpdC1nZXQoJ2FydCBwaXhlbCBzaXplJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCdhcnQgY29sb3InKSk7XG4gICRyYWRpdXM6IGlmKCRyYWRpdXMgIT0gbnVsbCwgJHJhZGl1cywgdG9vbGtpdC1nZXQoJ2FydCBib3JkZXIgcmFkaXVzJykpO1xuXG4gICRidWlsZDogKCk7XG4gICR5OiAkcHgtc2l6ZTtcbiAgJHg6IDA7XG5cbiAgaGVpZ2h0OiAkcHgtc2l6ZTtcbiAgd2lkdGg6ICRweC1zaXplO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyX2xlbmd0aCgkYXJ0KSB7XG4gICAgJGNoYXI6IHN0cl9zbGljZSgkYXJ0LCAkaSwgJGkpO1xuICAgICR4OiAkeCArICRweC1zaXplO1xuXG4gICAgQGlmICRjaGFyID09ICduJyB7XG4gICAgICAkeTogJHkgKyAkcHgtc2l6ZTtcbiAgICAgICR4OiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY2hhciAhPSAnICcge1xuICAgICAgJGJvcmRlcjogJHggJHkgMCAkY29sb3I7XG4gICAgICAkYnVpbGQ6IGFwcGVuZCgkYnVpbGQsICRib3JkZXIsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBib3gtc2hhZG93OiAkYnVpbGQ7XG59IiwiQG1peGluIHNldC1tdWx0aXBsZSgkdmFsdWUsICRwcm9wZXJ0aWVzLi4uKSB7XG4gICRwcm9wZXJ0eS1sZW5ndGg6IGxlbmd0aCgkcHJvcGVydGllcyk7XG4gICRlcnJvci1tc2c6IFwiVGhlIGBzZXQtbXVsdGlwbGVgIG1peGluIHJlcXVpcmVzIHlvdSB0byBwYXNzIGluIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzIHRoZSBzZWNvbmQgYXJndW1lbnRcIjtcblxuICBAaWYgJHByb3BlcnR5LWxlbmd0aCA8IDEge1xuICAgIEBpZiBmZWF0dXJlLWV4aXN0cyhhdC1lcnJvcikge1xuICAgICAgQGVycm9yICRlcnJvci1tc2c7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICRlcnJvci1tc2c7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCBpbiBpcyBhIHdoaXRlLXNwYWNlZCBzZXBhcmF0ZWQgbGlzdC5cbiAgJHByb3BlcnRpZXM6IGlmKCRwcm9wZXJ0eS1sZW5ndGggPT0gMSwgbnRoKCRwcm9wZXJ0aWVzLCAxKSwgJHByb3BlcnRpZXMpO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSBpbiAkcHJvcGVydGllcyB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWVcbiAgfVxufVxuIiwiLy8gIE1vZHVsZSBTY2FsZSBhbmQgYmFzZSBmb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJGJhc2UtZm9udC1zaXplOiAgIDE0cHg7XG4kaWRlYWwtZm9udC1zaXplOiAgMjJweDtcbi8vICRiYXNlLWxpbmUtaGVpZ2h0OiBtcygxLCAkYmFzZS1mb250LXNpemUpO1xuXG4kcmh5dGhtLXVuaXQ6IFwicmVtXCI7XG4kcmh5dGhtLWdhcDogOHB4O1xuJHJlbS13aXRoLXB4LWZhbGxiYWNrOiBmYWxzZTtcblxuJHNjdXQtcmVtLWJhc2U6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZS1mb250LXNpemUpO1xuXG5cbi8vIHt7IENvbXBvbmVudCBzaXplIH19XG4kZ2xvYmFsLXJhZGl1czogM3B4O1xuIiwiLy8gIEdyaWQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG5cbiRsYXlvdXQtYmFzZTogKFxuICBndXR0ZXJzOiAxLzUsXG4gIGNvbHVtbi13aWR0aDogODBweCxcbiAgLy8gZ3V0dGVyLXBvc2l0aW9uOiBpbnNpZGUtc3RhdGljLFxuICBkZWJ1ZzogKFxuICAgIC8vIGltYWdlOiBzaG93LFxuICApLFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IHRydWUsXG4gICAgcmVtOiBmYWxzZSxcbiAgKSxcbik7XG4kc3VzeTogbGF5b3V0KDUgJGxheW91dC1iYXNlKTtcblxuLy8ge3sgRWxlbWVudCB0d2ljayBwb2ludHMgfX1cblxuLy8ge3sgRGV2aWNlIGxheW91dHMgfX1cbiRzdXN5LW1lZGlhOiAoXG4gICdtb2JpbGUnOiAnKG1heC13aWR0aDogNDE0cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6ICcobWF4LXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiAnKG1heC13aWR0aDogMTAyNHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3RhYmxldCc6ICcobWluLXdpZHRoOiA3NjhweCknLFxuICAndGFibGV0LXBvcnRyYWl0LW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ2Rlc2t0b3AnOiAnKG1pbi13aWR0aDogMTIwMHB4KScsXG4gICdjYXRlZ29yeS1tZW51JzogJyhtaW4td2lkdGg6IDEwMjRweCknXG4pO1xuJHRhYmxldDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgdGFibGV0KSxcbiAgbGF5b3V0OiA5IC41XG4pO1xuJHRhYmxldC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCR0YWJsZXQsIGxheW91dCkpO1xuJGRlc2t0b3A6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIGRlc2t0b3ApLFxuICBsYXlvdXQ6IDEyIDEuNSBzcGxpdFxuKTtcbiRkZXNrdG9wLWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJGRlc2t0b3AsIGxheW91dCkpO1xuJGRlc2t0b3AtZ3JpZC1wYWRkaW5nOiBzY3V0LXJlbSgxNSk7XG5cbi8vICB7eyBMYXllcnMgLS0tLS0tIH19XG4kbGF5ZXJzOiAoXG4gIGJhc2UsXG4gIGhlYWRlci1tZW51LFxuICBkcmF3ZXIsXG4gIGRyYXdlci1zaGFkb3csXG4gIGRyYXdlci1uYXYsXG4pOyIsIi8vICBTZXR0aW5nc1xuLy8gID09PT09PT09XG5cbiRjb2xvci1saWdodC1zYXR1cmF0aW9uOiA5MyU7XG5cbi8vICBDb2xvcnNcbi8vICA9PT09PT1cblxuJGdyYXktYmFzZTogICAgICMwMDAgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrZXI6ICAgdGludCgkZ3JheS1iYXNlLCAxMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrOiAgICAgdGludCgkZ3JheS1iYXNlLCAyMCUpICAgIWRlZmF1bHQ7XG4kZ3JheTogICAgICAgICAgdGludCgkZ3JheS1iYXNlLCAzMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodDogICAgdGludCgkZ3JheS1iYXNlLCA0Ni41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodGVyOiAgdGludCgkZ3JheS1iYXNlLCA5My41JSkgIWRlZmF1bHQ7XG5cbi8vICBUZXh0c1xuLy8gIC0tLS0tXG5cbiR0ZXh0LWNvbG9yOiAkZ3JheS1kYXJrO1xuXG4vLyAgUGFsbGV0ZVxuLy8gIC0tLS0tLS0tLS0tXG5cbiRibHVlOiAjMmQ2ZWM2O1xuJGJsdWUtZGFyazogcmdiKDAsIDY5LCAxNjQpO1xuJGJsdWUtbGlnaHQ6ICNkOGU5ZmY7XG4keWVsbG93OiAjZmM5NjAwO1xuJHllbGxvdy1kYXJrOiAjYjg2ZTAwO1xuJHllbGxvdy1saW5rOiAjZmZkODAwO1xuJG9yYW5nZTogI2ZjNDcwMDtcbiRvcmFuZ2UtZGFyazogI2I4NmUwMDtcbiRyZWQ6IHJnYigyMDYsIDY4LCA2Mik7XG4kZ3JlZW46IHJnYigyOCwgMTQ5LCAyMik7XG4kcGluazogcmdiKDE5NywgMzEsIDEyNCk7XG5cbiRwcmltYXJ5OiBzaGFkZSgjNDI4YmNhLCA2LjUlKTtcbiRzdWNjZXNzOiAjNWNiODVjO1xuJGluZm86ICAgICM1YmMwZGM7XG4kd2FybmluZzogI2YwYWQ0ZTtcbiRkYW5nZXI6ICAjZDk1MzRmO1xuXG4kaW5wdXQtYm9yZGVyOiAjZTRlNGU0O1xuJGJvcmRlci1ncmF5OiAjOTE5MTkxO1xuJGJhY2tncm91bmQtZ3JheTogI2U5ZTllOTtcblxuLy8gIExpbmtzXG4vLyAgLS0tLS1cblxuJGxpbmstY29sb3I6ICAgICAgICAgICAjMDAwICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICBzaGFkZSgkbGluay1jb2xvciwgMTUlKSAhZGVmYXVsdDtcbiRsaW5rLWZvY3VzLWNvbG9yOiAgICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLWFjdGl2ZS1jb2xvcjogICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLXZpc2l0ZWQtY29sb3I6ICAgJGdyYXktZGFyayAhZGVmYXVsdDtcblxuLy8gIE5Qcm9ncmVzc1xuLy8gIC0tLS0tLS0tLVxuJG5wcm9ncmVzcy1jb2xvcjogICAgJHByaW1hcnk7XG4iLCIvLyAgRm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiAgIHJpZ2h0O1xuXG4vLyDlg4Xph53lsI3oi7Hmlodcbi8vIEBmb250LWZhY2Uge1xuLy8gICBmb250LWZhbWlseTogRW5nbGlzaDtcbi8vICAgdW5pY29kZS1yYW5nZTogVSswMC0wMjRGO1xuLy8gICBzcmM6IGxvY2FsKEhlbHZldGljYSk7XG4vLyB9XG5cbiRzYW5zOiAgICBIZWx2ZXRpY2FOZXVlLUxpZ2h0XG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUgTGlnaHQnXG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUnXG4gICAgICAgLCAgSGVsdmV0aWNhXG4gICAgICAgLCAnSGVpdGkgVEMnXG4gICAgICAgLCAnTGlIZWkgUHJvJ1xuICAgICAgICwgJ01pY3Jvc29mdCBKaGVuZ0hlaSdcbiAgICAgICAsICflvq7ou5/mraPpu5Hpq5QnXG4gICAgICAgLCAgQXJpYWxcbiAgICAgICAsICBzYW5zLXNlcmlmO1xuXG4kc2VyaWY6ICAnUFQgU2VyaWYnXG4gICAgICAgLCBHZW9yZ2lhXG4gICAgICAgLCBUaW1lc1xuICAgICAgICwgJ1RpbWVzIE5ldyBSb21hbidcbiAgICAgICAsICdTb25ndGkgVEMnXG4gICAgICAgLCAnSGlyYWdpbm8gTWluY2hvIFByb04nXG4gICAgICAgLCBzZXJpZjtcblxuJGJhc2UtZm9udC1mYW1pbHk6ICRzYW5zOyJdLCJtYXBwaW5ncyI6IkE4Q0FBOzs7OztFQUtFO0E5Q01zQixBQUFBLHNCQUFzQixDQUFDO0VBQzdDLE1BQU0sRUNUeUIsR0FBVyxDQUZwQixDQUFPO0VEWTdCLE9BQU8sRUNWd0IsR0FBVyxDQUFYLEdBQVc7RURXMUMsSUFBSSxFQUFFLFNBQVUsR0FPakI7RUFWdUIsQUFBQSw0QkFBc0IsQ0FLcEM7SUFDTixLQUFLLEVBQUUsSUFBSztJQUNaLGdCQUFnQixFa0V5QkYsT0FBTyxHbEV4QnRCO0VBUnFCLEFBQUEsNEJBQXNCLENBU3BDO0lBQUUsZ0JBQWdCLEVrRUdyQixPQUFPLEdsRUh5Qjs7QUFFdkMsQUFBQSxzQkFBc0IsQ0FBQztFQUFFLE9BQU8sRUFBRSxDQUFDLENDbkJGLEdBQVcsR0RtQkE7O0FBQzVDLEFBQUEsbUJBQW1CLENBQUM7RUFBRSxNQUFNLEVDcEJLLEdBQVcsQ0FGcEIsQ0FBTyxHRHNCVzs7QTZDMkJ0QyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07RTdDekJ0QixBQUFBLFdBQVcsQ0FBQztJQUVSLE9BQU8sRUFBRSxJQUFLO0lBQ2QsZUFBZSxFQUFFLGFBQWMsR0FFbEM7O0E2Q29CRyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07RTdDbkJ0QixBQUFBLGlCQUFpQixDQUFDO0lBRWQsSUFBSSxFQUFFLFFBQVMsR0FXbEI7O0FBYkQsQUFBQSxpQkFBaUIsR0FBakIsaUJBQWlCLENBSVQ7RUFDSixVQUFVLEVDakNtQixHQUFXLEdEd0N6QztFNkNPQyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07STdDbkJ0QixBQUFBLGlCQUFpQixHQUFqQixpQkFBaUIsQ0FJVDtNQUdGLFVBQVUsRUFBRSxDQUFFO01BQ2QsWUFBWSxFQ3BDZSxJQUFXO01EcUN0QyxJQUFJLEVBQUUsU0FBVTtNQUNoQixXQUFXLEVBQUUsR0FBRyxDQUFDLEtBQUssQ2tFQWIsT0FBTyxHbEVFbkIiLCJuYW1lcyI6W119 */
/*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.hot-news__list {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.hot-news {
  padding: 8px;
  position: relative;
  background-color: #e9e9e9; }

.hot-news__heading {
  margin-top: 0;
  margin-bottom: 8px;
  font-size: 18px;
  color: #ce443e; }

.hot-news__list-cell {
  font-size: 12px; }

.hot-news__list-cell + .hot-news__list-cell {
  margin-top: 8px; }

.hot-news__more {
  display: inline-block;
  padding-right: 16px;
  padding-left: 8px;
  top: 16px;
  right: 16px;
  position: absolute;
  font-weight: 700;
  font-size: 10px;
  color: #fff;
  background-color: #7d7d7d;
  border-radius: 3px; }

.hot-news__more::before {
  content: "\25B8";
  font-size: 14px;
  line-height: 1;
  top: 0;
  right: 4px;
  position: absolute; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2hvdC1uZXdzLnNjc3MiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19ob3QtbmV3cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19taXhpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fY2xhc3Nlcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvX3N1LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3V0aWxpdGllcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX2Zsb2F0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zaGFyZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19wcmVmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3JlbS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2luc3BlY3Quc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19vdXRwdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19kaXJlY3Rpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fZW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3JpZHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3V0dGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19nYWxsZXJ5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcm93cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmxlZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19icmVha3BvaW50LXBsdWdpbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3NjdXQvZGlzdC9fc2N1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy9fdG9vbGtpdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wbGFjZWhvbGRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ZvbnRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ludHJpbnNpYy1yYXRpby5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19uZXN0ZWQtY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wYXJhbGxheC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19ydGwuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdGFyZ2V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RyaWFuZ2xlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NlbnRlci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L192aWV3cG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L191bmRlcmxpbmUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fYXJ0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldC1tdWx0aXBsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19zY2FsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19mb250LnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLSB2ZW5kb3IgbWl4aW4gbGlicmFyaWVzIC0tLS1cbkBpbXBvcnQgXCJtaXhpbnNcIixcbiAgICAgICAgXCJjbGFzc2VzXCIsXG4gICAgICAgIFwifnN1c3lcIixcbiAgICAgICAgXCJ+c2N1dFwiLFxuICAgICAgICBcIn5zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdFwiO1xuXG4vLyAtLS0tIHZhcmlhYmxlcyBhbmQgY29uZmlnIC0tLS1cbkBpbXBvcnQgXCJzZXR0aW5ncy9zY2FsZVwiLFxuICAgICAgICBcInNldHRpbmdzL2dyaWRcIixcbiAgICAgICAgXCJzZXR0aW5ncy9jb2xvcnNcIixcbiAgICAgICAgXCJzZXR0aW5ncy9mb250XCI7LmhvdC1uZXdzIHtcbiAgcGFkZGluZzogcigxKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ncmF5O1xufVxuLmhvdC1uZXdzX19oZWFkaW5nIHtcbiAgbWFyZ2luOiAwIG4oKSByKDEpO1xuICB0ZXh0OiAxOHB4ICRyZWQ7XG59XG4uaG90LW5ld3NfX2xpc3QgeyBAZXh0ZW5kICVzY3V0LWxpc3QtdW5zdHlsZWQ7IH1cbi5ob3QtbmV3c19fbGlzdC1jZWxsIHtcbiAgZm9udC1zaXplOiAxMnB4O1xuICAmICsgJiB7IG1hcmdpbi10b3A6IHIoMSk7IH1cbn1cbi5ob3QtbmV3c19fbW9yZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogbigpIHIoMikgbigpIHIoMSk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSByKDIpIHIoMikgbigpIG4oKTtcbiAgdGV4dDogYm9sZCAxMHB4O1xuICBjb2xvcjogI2ZmZiByZ2IoMTI1LCAxMjUsIDEyNSk7XG4gIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzO1xuICAmOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICRzY3V0LXJzdHJpO1xuICAgIHRleHQ6IDE0cHggMTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgMCByKC41KSBuKCkgbigpO1xuICB9XG59IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiO0E4Q0FBOzs7OztFQUtFO0E5Q2VGLEE4Q2NBLGU5Q2RlLEM4Q2NLO0VBVmxCLGVBQWUsRUFBRSxJQUFLO0VBQ3RCLFlBQVksRUFBRSxDQUFFO0VBR2QsVUFBVSxFQUFFLENBQUU7RUFDZCxhQUFhLEVBQUUsQ0FBRSxHQU9wQjs7QTlDekJ1QixBQUFBLFNBQVMsQ0FBQztFQUNoQyxPQUFPLEVDVHdCLEdBQVc7RURVMUMsUUFBUSxFQUFFLFFBQVM7RUFDbkIsZ0JBQWdCLEVrRTZCQSxPQUFPLEdsRTVCeEI7O0FBQ0QsQUFBQSxrQkFBa0IsQ0FBQztFQUNqQixNQUFNLEVBQUUsQ0FBQyxDQ2hCYSxDQUFPLENBRUUsR0FBVztFRGUxQyxJQUFJLEVBQUUsSUFBSSxDa0VhTixPQUFHLEdsRVpSOztBQUVELEFBQUEsb0JBQW9CLENBQUM7RUFDbkIsU0FBUyxFQUFFLElBQUssR0FFakI7RUFIRCxBQUFBLG9CQUFvQixHQUFwQixvQkFBb0IsQ0FFWjtJQUFFLFVBQVUsRUNwQmEsR0FBVyxHRG9CZDs7QUFFOUIsQUFBQSxlQUFlLENBQUM7RUFDZCxPQUFPLEVBQUUsWUFBYTtFQUN0QixPQUFPLEVDMUJlLENBQU8sQ0FFRSxJQUFXLENBRnBCLENBQU8sQ0FFRSxHQUFXO0VEeUIxQyxRQUFRLEVBQUUsUUFBUSxDQ3pCYSxJQUFXLENBQVgsSUFBVyxDQUZwQixDQUFPLENBQVAsQ0FBTztFRDRCN0IsSUFBSSxFQUFFLFNBQVU7RUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFHO0VBQ2YsYUFBYSxFZ0VoQkMsR0FBRyxHaEVzQmxCO0VBWkQsQUFBQSxlQUFlLEFBT1osUUFBUSxDQUFDO0lBQ1IsT0FBTyxFOEMwc0NFLEtBQU87STlDenNDaEIsSUFBSSxFQUFFLE1BQU87SUFDYixRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0NoQ1MsR0FBVyxDQUZwQixDQUFPLENBQVAsQ0FBTyxHRG1DNUIiLCJuYW1lcyI6W119 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.category-menu__sub-menu {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.logo {
  text-indent: 102%;
  white-space: nowrap;
  overflow: hidden;
  padding: 0; }

.main-header__container {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: row wrap;
  flex-flow: row wrap;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  padding-top: 8px;
  padding-bottom: 8px; }

@media (min-width: 768px) {
  .main-header__container {
    -webkit-box-align: stretch;
    -ms-flex-align: stretch;
    align-items: stretch; } }
.main-header__logo {
  margin-right: auto; }

.main-header__menu {
  display: none; }

@media (min-width: 768px) {
  .main-header__menu {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-flow: column nowrap;
    flex-flow: column nowrap;
    -ms-flex-pack: distribute;
    justify-content: space-around;
    -webkit-box-align: end;
    -ms-flex-align: end;
    align-items: flex-end; } }
.main-header__mobile-nav {
  margin-left: auto; }

@media (min-width: 768px) {
  .main-header__mobile-nav {
    display: none; } }
.main-header__mobile-nav button + button {
  margin-left: 8px; }

.main-header__mobile-nav .icon {
  width: 40px;
  height: 40px; }

.logo {
  margin: 0;
  width: 162px;
  height: 43px;
  background: url(/images/logo.svg) 50% 50%/contain no-repeat; }

@media (min-width: 768px) {
  .logo {
    width: 300px;
    height: 81px; } }
.top-menu__cells {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.top-menu__cells:after {
  content: "";
  display: table;
  clear: both; }

.top-menu__cells > li {
  float: left; }

.top-menu__cells > li + li:before {
  content: "|";
  display: inline-block;
  margin-left: 8px;
  margin-right: 8px; }

.top-menu__cells > li + li:before {
  margin-left: 12px; }

.search-menu {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
  -ms-flex-pack: end;
  justify-content: flex-end;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center; }

.search-bar {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
  -ms-flex-pack: end;
  justify-content: flex-end;
  height: 30px; }

.search-bar__input {
  display: block;
  -webkit-box-flex: 1;
  -ms-flex: 1 0 auto;
  flex: 1 0 auto;
  padding-left: 8px;
  border: 1px solid #e4e4e4;
  border-radius: 3px 0 0 3px; }

.search-bar__button {
  width: 52px;
  background: #2d6ec6;
  border: 1px solid #0045a4;
  border-radius: 0 3px 3px 0; }

.search-bar__button .icon {
  width: 16px;
  height: 16px;
  top: -2px;
  position: relative;
  z-index: 1; }

.search-menu {
  margin-left: 16px; }

.search-menu__cells {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.search-menu__cells:after {
  content: "";
  display: table;
  clear: both; }

.search-menu__cells > li {
  float: left; }

.search-menu__cells > li + li:before {
  content: "|";
  display: inline-block;
  margin-left: 8px;
  margin-right: 8px; }

.search-menu__cells > li + li:before {
  margin-left: 12px; }

.main-header__blue-section {
  padding: 8px;
  text-align: center;
  background-color: #2d6ec6; }

@media (min-width: 768px) {
  .main-header__blue-section .container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center; }

  .main-header__blue-section .sns-wrapper {
    text-align: right; }

  .main-header__blue-section .sns-wrapper:first-child {
    width: 100%; } }
.main-header__blue-section .icon {
  width: 34px;
  height: 34px; }

.category-menu {
  display: none; }

@media (min-width: 768px) {
  .category-menu {
    display: block;
    -webkit-box-flex: 1;
    -ms-flex: 1 0;
    flex: 1 0; } }
.category-menu__cells {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.category-menu__cells:after {
  content: "";
  display: table;
  clear: both; }

.category-menu__cells > li {
  float: left; }

.category-menu__cells > li + li:before {
  content: "|";
  display: inline-block;
  margin-left: 8px;
  margin-right: 8px; }

.category-menu__cells > li + li:before {
  margin-left: 12px; }

.category-menu__cell {
  position: relative;
  color: #fff; }

.category-menu__cell:hover {
  color: #ffd800; }

.category-menu__cell::before {
  color: #fff; }

.category-menu__link {
  color: currentColor !important; }

.category-menu__sub-menu {
  display: none;
  padding-top: 14px;
  left: -15px;
  position: absolute;
  z-index: 2;
  width: 112px;
  background-color: #2d6ec6; }

.category-menu__cell:hover .category-menu__sub-menu {
  display: block; }

.category-menu__sub-menu__cell {
  position: relative;
  color: #fff; }

.category-menu__sub-menu__cell:hover {
  color: #000;
  background-color: #d8e9ff; }

.category-menu__sub-menu__cell:hover .list {
  display: block; }

.category-menu__sub-menu__cell + .category-menu__sub-menu__cell {
  position: relative; }

.category-menu__sub-menu__cell + .category-menu__sub-menu__cell::before {
  content: "";
  display: block;
  border-top: 1px dotted rgba(216, 233, 255, 0.6);
  top: 0;
  right: 16px;
  left: 16px;
  position: absolute; }

.category-menu__sub-menu__cell .list {
  display: none;
  padding: 0 8px 0 32px;
  top: 0;
  left: 112px;
  position: absolute;
  width: 324px;
  background-color: #d8e9ff;
  text-align: left; }

.category-menu__sub-menu__cell .list__link {
  display: block;
  padding: 4px 0;
  text-align: left; }

.category-menu__sub-menu__cell .list__link:hover {
  text-decoration: underline; }

.category-menu__sub-menu__link {
  display: block;
  padding: 4px 0;
  color: currentColor; }

.main-header__mobile-search {
  display: none;
  padding: 8px; }

.main-header__mobile-search.active {
  display: block; }

@media (min-width: 768px) {
  .main-header__mobile-search {
    display: none !important; } }
.main-header__mobile-search .link-wrapper {
  margin-top: 8px;
  text-align: center; }

.main-header__mobile-search .link {
  color: #2d6ec6;
  text-decoration: underline; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2hlYWRlci5zY3NzIiwic291cmNlcyI6WyIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvY29tcG9uZW50cy9faGVhZGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX21peGlucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19jbGFzc2VzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2N1dC9kaXN0L19zY3V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL190b29sa2l0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BsYWNlaG9sZGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fZm9udHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9faW50cmluc2ljLXJhdGlvLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX25lc3RlZC1jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BhcmFsbGF4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3J0bC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190YXJnZXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdHJpYW5nbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2VudGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3ZpZXdwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3VuZGVybGluZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19hcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0LW11bHRpcGxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3NjYWxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2ZvbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tIHZlbmRvciBtaXhpbiBsaWJyYXJpZXMgLS0tLVxuQGltcG9ydCBcIm1peGluc1wiLFxuICAgICAgICBcImNsYXNzZXNcIixcbiAgICAgICAgXCJ+c3VzeVwiLFxuICAgICAgICBcIn5zY3V0XCIsXG4gICAgICAgIFwifnNhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0XCI7XG5cbi8vIC0tLS0gdmFyaWFibGVzIGFuZCBjb25maWcgLS0tLVxuQGltcG9ydCBcInNldHRpbmdzL3NjYWxlXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZ3JpZFwiLFxuICAgICAgICBcInNldHRpbmdzL2NvbG9yc1wiLFxuICAgICAgICBcInNldHRpbmdzL2ZvbnRcIjskc3ViLW1lbnUtd2lkdGg6IHIoMTQpO1xuXG4ubWFpbi1oZWFkZXJfX2NvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjsgIFxuICBwYWRkaW5nOiByKDEpIG4oKTtcbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7IGFsaWduLWl0ZW1zOiBzdHJldGNoOyB9XG59XG4ubWFpbi1oZWFkZXJfX2xvZ28geyBtYXJnaW4tcmlnaHQ6IGF1dG87IH1cbi5tYWluLWhlYWRlcl9fbWVudSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIEBpbmNsdWRlIHN1c3koJHRhYmxldCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgfVxufVxuLm1haW4taGVhZGVyX19tb2JpbGUtbmF2IHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIEBpbmNsdWRlIHN1c3koJHRhYmxldCkgeyBkaXNwbGF5OiBub25lOyB9XG5cbiAgYnV0dG9uICsgYnV0dG9uIHsgbWFyZ2luLWxlZnQ6IHIoMSk7IH1cbiAgXG4gIC5pY29uIHsgc2l6ZTogNDBweDsgfVxufVxuXG4ubG9nbyB7XG4gIEBleHRlbmQgJXNjdXQtaW1hZ2UtcmVwbGFjZTtcbiAgbWFyZ2luOiAwO1xuICBzaXplOiAxNjJweCA0M3B4O1xuICBiYWNrZ3JvdW5kOiB1cmwobG9nby5zdmcpIDUwJSA1MCUgLyBjb250YWluIG5vLXJlcGVhdDtcbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7XG4gICAgc2l6ZTogMzAwcHggODFweDtcbiAgfVxufVxuXG4udG9wLW1lbnVfX2NlbGxzIHsgQGluY2x1ZGUgbGlzdC1kaXZpZGVkKCd8JywgcigxKSk7IH1cblxuLnNlYXJjaC1tZW51IHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbi5zZWFyY2gtYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgaGVpZ2h0OiAzMHB4O1xufVxuLnNlYXJjaC1iYXJfX2lucHV0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZsZXg6IDEgMCBhdXRvO1xuICBwYWRkaW5nLWxlZnQ6IHIoMSk7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6ICRnbG9iYWwtcmFkaXVzIDAgMCAkZ2xvYmFsLXJhZGl1cztcbn1cbi5zZWFyY2gtYmFyX19idXR0b24ge1xuICB3aWR0aDogNTJweDtcbiAgYmFja2dyb3VuZDogJGJsdWU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRibHVlLWRhcms7XG4gIGJvcmRlci1yYWRpdXM6IDAgJGdsb2JhbC1yYWRpdXMgJGdsb2JhbC1yYWRpdXMgMDtcbiAgLmljb24ge1xuICAgIHNpemU6IDE2cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlIC0ycHggbigpIG4oKSBuKCk7XG4gICAgei1pbmRleDogaW5kZXgoJGxheWVycywgYmFzZSk7XG4gIH1cbn1cblxuLnNlYXJjaC1tZW51IHsgbWFyZ2luLWxlZnQ6IHIoMik7IH1cbi5zZWFyY2gtbWVudV9fY2VsbHMgeyBAaW5jbHVkZSBsaXN0LWRpdmlkZWQoJ3wnLCByKDEpKTsgfVxuXG4ubWFpbi1oZWFkZXJfX2JsdWUtc2VjdGlvbiB7XG4gIHBhZGRpbmc6IHIoMSk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJsdWU7ICBcbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7XG4gICAgLmNvbnRhaW5lciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyAgICAgIFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gICAgLnNucy13cmFwcGVyIHtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgJjpmaXJzdC1jaGlsZCB7d2lkdGg6IDEwMCU7fVxuICAgIH1cbiAgfVxuXG4gIC5pY29uIHsgc2l6ZTogMzRweDsgfVxufVxuLmNhdGVnb3J5LW1lbnUge1xuICBkaXNwbGF5OiBub25lO1xuICBAaW5jbHVkZSBzdXN5KCR0YWJsZXQpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBmbGV4OiAxIDA7XG4gIH1cbn1cbi5jYXRlZ29yeS1tZW51X19jZWxscyB7XG4gIEBpbmNsdWRlIGxpc3QtZGl2aWRlZCgnfCcsIHIoMSkpO1xufVxuLmNhdGVnb3J5LW1lbnVfX2NlbGwge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGNvbG9yOiAjZmZmO1xuICAmOmhvdmVyIHsgY29sb3I6ICR5ZWxsb3ctbGluazsgfVxuICAmOjpiZWZvcmUgeyBjb2xvcjogI2ZmZjsgfVxufVxuLmNhdGVnb3J5LW1lbnVfX2xpbmsgeyBjb2xvcjogY3VycmVudENvbG9yICFpbXBvcnRhbnQ7IH1cbi5jYXRlZ29yeS1tZW51X19zdWItbWVudSB7XG4gIEBleHRlbmQgJXNjdXQtbGlzdC11bnN0eWxlZDtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZy10b3A6IHIoMikgLSAycHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSBuKCkgbigpIG4oKSAocigtMikgKyAxcHgpO1xuICB6LWluZGV4OiBpbmRleCgkbGF5ZXJzLCBoZWFkZXItbWVudSk7XG4gIHdpZHRoOiAkc3ViLW1lbnUtd2lkdGg7XG4gIGJhY2tncm91bmQtY29sb3I6ICRibHVlO1xuICAuY2F0ZWdvcnktbWVudV9fY2VsbDpob3ZlciAmIHsgZGlzcGxheTogYmxvY2s7IH1cbn1cbi5jYXRlZ29yeS1tZW51X19zdWItbWVudV9fY2VsbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgY29sb3I6ICNmZmY7XG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiAjMDAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRibHVlLWxpZ2h0O1xuICAgIC5saXN0IHsgZGlzcGxheTogYmxvY2s7IH1cbiAgfVxuICAmICsgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6OmJlZm9yZSB7XG4gICAgICAkZ2FwOiByKDIpO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgYm9yZGVyLXRvcDogMXB4IGRvdHRlZCByZ2JhKCRibHVlLWxpZ2h0LCAuNik7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGUgMCAkZ2FwIG4oKSAkZ2FwO1xuICAgIH1cbiAgfVxuXG4gIC5saXN0IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBhZGRpbmc6IDAgcigxKSAwIHIoNCk7XG4gICAgcG9zaXRpb246IGFic29sdXRlIDAgbigpIG4oKSAkc3ViLW1lbnUtd2lkdGg7XG4gICAgd2lkdGg6ICRzdWItbWVudS13aWR0aCAqIDI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJsdWUtbGlnaHQ7XG4gIH1cbiAgLmxpc3RfX2xpbmsge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IHIoLjUpIDA7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAmOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH1cbiAgfVxufVxuLmNhdGVnb3J5LW1lbnVfX3N1Yi1tZW51X19saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IHIoLjUpIDA7XG4gIGNvbG9yOiBjdXJyZW50Q29sb3I7XG59XG5cbi5tYWluLWhlYWRlcl9fbW9iaWxlLXNlYXJjaCB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBhZGRpbmc6IHIoMSk7XG4gICYuYWN0aXZlIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLmxpbmstd3JhcHBlciB7XG4gICAgbWFyZ2luLXRvcDogcigxKTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAubGluayB7XG4gICAgY29sb3I6ICRibHVlO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG59IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiQThDQUE7Ozs7O0VBS0U7QTlDa0hGLEE4Q3JGQSx3QjlDcUZ3QixDOENyRko7RUFWbEIsZUFBZSxFQUFFLElBQUs7RUFDdEIsWUFBWSxFQUFFLENBQUU7RUFHZCxVQUFVLEVBQUUsQ0FBRTtFQUNkLGFBQWEsRUFBRSxDQUFFLEdBT3BCOztBOUNJRCxBOENrUkEsSzlDbFJLLEM4Q2tSZTtFQVBsQixXQUFXLEVBQUUsSUFBSztFQUNsQixXQUFXLEVBQUUsTUFBTztFQUNwQixRQUFRLEVBQUUsTUFBTztFQUNqQixPQUFPLEVBQUUsQ0FBRSxHQU1aOztBOUMvU0QsQUFBQSx1QkFBdUIsQ0FBQztFQUN0QixPQUFPLEVBQUUsSUFBSztFQUNkLFNBQVMsRUFBRSxRQUFTO0VBQ3BCLGVBQWUsRUFBRSxhQUFjO0VBQy9CLFdBQVcsRUFBRSxNQUFPO0VBQ3BCLE9BQU8sRUNmd0IsR0FBVyxDQUZwQixDQUFPLEdEbUI5QjtFNkM4QkcsTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO0k3Q3JDckIsQUFBQSx1QkFBdUIsQ0FBQztNQU1HLFdBQVcsRUFBRSxPQUFRLEdBQy9DOztBQUNELEFBQUEsa0JBQWtCLENBQUM7RUFBRSxZQUFZLEVBQUUsSUFBSyxHQUFJOztBQUM1QyxBQUFBLGtCQUFrQixDQUFDO0VBQ2pCLE9BQU8sRUFBRSxJQUFLLEdBT2Y7RTZDb0JHLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztJN0M1QnJCLEFBQUEsa0JBQWtCLENBQUM7TUFHZixPQUFPLEVBQUUsSUFBSztNQUNkLFNBQVMsRUFBRSxhQUFjO01BQ3pCLGVBQWUsRUFBRSxZQUFhO01BQzlCLFdBQVcsRUFBRSxRQUFTLEdBRXpCOztBQUNELEFBQUEsd0JBQXdCLENBQUM7RUFDdkIsV0FBVyxFQUFFLElBQUssR0FNbkI7RTZDWUcsTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO0k3Q25CckIsQUFBQSx3QkFBd0IsQ0FBQztNQUVFLE9BQU8sRUFBRSxJQUFLLEdBS3hDO0VBUEQsQUFJVyx3QkFKYSxDQUl0QixNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQUUsV0FBVyxFQ2hDRSxHQUFXLEdEZ0NIO0VBSnpDLEFBTUUsd0JBTnNCLENBTXRCLEtBQUssQ0FBQztJQUFFLElBQUksRUFBRSxJQUFLLEdBQUk7O0FBR3pCLEFBQUEsS0FBSyxDQUFDO0VBRUosTUFBTSxFQUFFLENBQUU7RUFDVixJQUFJLEVBQUUsVUFBVztFQUNqQixVQUFVLEVBQWMsYUFBQyxDQUFDLEdBQUcsQ0FBQyxXQUFHLENBQVcsU0FBUyxHQUl0RDtFNkNFRyxNQUFNLEVBQUwsU0FBUyxFQUFFLEtBQUs7STdDVnJCLEFBQUEsS0FBSyxDQUFDO01BTUYsSUFBSSxFQUFFLFVBQVcsR0FFcEI7O0FBRUQsQUFBQSxnQkFBZ0IsQ0FBQztFOEMxQmYsZUFBZSxFQUFFLElBQUs7RUFDdEIsWUFBWSxFQUFFLENBQUU7RUFHZCxVQUFVLEVBQUUsQ0FBRTtFQUNkLGFBQWEsRUFBRSxDQUFFLEc5Q3FCa0M7RUFBdkQsQUFBQSxnQkFBZ0IsQThDekNiLE1BQU0sQ0FBQztJQUNOLE9BQU8sRUFBRSxFQUFHO0lBQ1osT0FBTyxFQUFFLEtBQU07SUFDZixLQUFLLEVBQUUsSUFBSyxHQUNiO0U5Q3FDSCxBOENGTSxnQjlDRVUsRzhDRlYsRUFBRSxDQUFDO0lBQ0wsS0FBSyxFQXFzQkQsSUFBSSxHQXBzQlQ7RTlDQUgsQThDbXVCYSxnQjlDbnVCRyxHOENtdUJWLEVBQUUsR0FBRyxFQUFFLEFBQUEsT0FBTyxDQUFsQjtJQUVJLE9BQU8sRTlDcnVCNEIsR0FBRztJOENzdUJ0QyxPQUFPLEVBQUUsWUFBYTtJQUd4QixXQUFXLEU3Q3h4QmtCLEdBQVc7STZDeXhCeEMsWUFBWSxFN0N6eEJpQixHQUFXLEc2QzB4QnpDO0U5QzN1QkgsQUMrQlcsZ0JEL0JLLEdDK0JaLEVBQUUsR0FBRyxFQUFFLEFBQUEsT0FBTyxDQUFDO0lBQUUsV0FBVyxFQUFFLElBQU0sR0FBVTs7QUQ3QmxELEFBQUEsWUFBWSxDQUFDO0VBQ1gsT0FBTyxFQUFFLElBQUs7RUFDZCxlQUFlLEVBQUUsUUFBUztFQUMxQixXQUFXLEVBQUUsTUFBTyxHQUNyQjs7QUFDRCxBQUFBLFdBQVcsQ0FBQztFQUNWLE9BQU8sRUFBRSxJQUFLO0VBQ2QsZUFBZSxFQUFFLFFBQVM7RUFDMUIsTUFBTSxFQUFFLElBQUssR0FDZDs7QUFDRCxBQUFBLGtCQUFrQixDQUFDO0VBQ2pCLE9BQU8sRUFBRSxLQUFNO0VBQ2YsSUFBSSxFQUFFLFFBQVM7RUFDZixZQUFZLEVDOURtQixHQUFXO0VEK0QxQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ2tFekJKLE9BQU87RWxFMEJwQixhQUFhLEVnRXBEQyxHQUFHLENoRW9EYSxDQUFDLENBQUMsQ0FBQyxDZ0VwRG5CLEdBQUcsR2hFcURsQjs7QUFDRCxBQUFBLG1CQUFtQixDQUFDO0VBQ2xCLEtBQUssRUFBRSxJQUFLO0VBQ1osVUFBVSxFa0VoREwsT0FBTztFbEVpRFosTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENrRWhEUCxPQUFHO0VsRWlEYixhQUFhLEVBQUUsQ0FBQyxDZ0UxREYsR0FBRyxDQUFILEdBQUcsQ2hFMEQ4QixDQUFDLEdBTWpEO0VBVkQsQUFLRSxtQkFMaUIsQ0FLakIsS0FBSyxDQUFDO0lBQ0osSUFBSSxFQUFFLElBQUs7SUFDWCxRQUFRLEVBQUUsUUFBUSxDQUFFLElBQUcsQ0MzRUgsQ0FBTyxDQUFQLENBQU8sQ0FBUCxDQUFPO0lENEUzQixPQUFPLEVBQUUsQ0FBSyxHQUNmOztBQUdILEFBQUEsWUFBWSxDQUFDO0VBQUUsV0FBVyxFQzlFTyxJQUFXLEdEOEVSOztBQUNwQyxBQUFBLG1CQUFtQixDQUFDO0U4QzFEbEIsZUFBZSxFQUFFLElBQUs7RUFDdEIsWUFBWSxFQUFFLENBQUU7RUFHZCxVQUFVLEVBQUUsQ0FBRTtFQUNkLGFBQWEsRUFBRSxDQUFFLEc5Q3FEcUM7RUFBMUQsQUFBQSxtQkFBbUIsQThDekVoQixNQUFNLENBQUM7SUFDTixPQUFPLEVBQUUsRUFBRztJQUNaLE9BQU8sRUFBRSxLQUFNO0lBQ2YsS0FBSyxFQUFFLElBQUssR0FDYjtFOUNxRUgsQThDbENNLG1COUNrQ2EsRzhDbENiLEVBQUUsQ0FBQztJQUNMLEtBQUssRUFxc0JELElBQUksR0Fwc0JUO0U5Q2dDSCxBOENtc0JhLG1COUNuc0JNLEc4Q21zQmIsRUFBRSxHQUFHLEVBQUUsQUFBQSxPQUFPLENBQWxCO0lBRUksT0FBTyxFOUNyc0IrQixHQUFHO0k4Q3NzQnpDLE9BQU8sRUFBRSxZQUFhO0lBR3hCLFdBQVcsRTdDeHhCa0IsR0FBVztJNkN5eEJ4QyxZQUFZLEU3Q3p4QmlCLEdBQVcsRzZDMHhCekM7RTlDM3NCSCxBQ0RXLG1CRENRLEdDRGYsRUFBRSxHQUFHLEVBQUUsQUFBQSxPQUFPLENBQUM7SUFBRSxXQUFXLEVBQUUsSUFBTSxHQUFVOztBREdsRCxBQUFBLDBCQUEwQixDQUFDO0VBQ3pCLE9BQU8sRUNsRndCLEdBQVc7RURtRjFDLFVBQVUsRUFBRSxNQUFPO0VBQ25CLGdCQUFnQixFa0VoRVgsT0FBTyxHbEU4RWI7RTZDbkRHLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztJN0NrQ3JCLEFBS0ksMEJBTHNCLENBS3RCLFVBQVUsQ0FBQztNQUNULE9BQU8sRUFBRSxJQUFLO01BQ2QsZUFBZSxFQUFFLGFBQWM7TUFDL0IsV0FBVyxFQUFFLE1BQU8sR0FDckI7SUFUTCxBQVVJLDBCQVZzQixDQVV0QixZQUFZLENBQUM7TUFDWCxVQUFVLEVBQUUsS0FBTSxHQUVuQjtNQWJMLEFBVUksMEJBVnNCLENBVXRCLFlBQVksQUFFVCxZQUFZLENBQUM7UUFBQyxLQUFLLEVBQUUsSUFBSyxHQUFHO0VBWnBDLEFBZ0JFLDBCQWhCd0IsQ0FnQnhCLEtBQUssQ0FBQztJQUFFLElBQUksRUFBRSxJQUFLLEdBQUk7O0FBRXpCLEFBQUEsY0FBYyxDQUFDO0VBQ2IsT0FBTyxFQUFFLElBQUssR0FLZjtFNkMxREcsTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO0k3Q29EckIsQUFBQSxjQUFjLENBQUM7TUFHWCxPQUFPLEVBQUUsS0FBTTtNQUNmLElBQUksRUFBRSxHQUFJLEdBRWI7O0FBQ0QsQUFBQSxxQkFBcUIsQ0FBQztFOENyRnBCLGVBQWUsRUFBRSxJQUFLO0VBQ3RCLFlBQVksRUFBRSxDQUFFO0VBR2QsVUFBVSxFQUFFLENBQUU7RUFDZCxhQUFhLEVBQUUsQ0FBRSxHOUNrRnBCO0VBRkQsQUFBQSxxQkFBcUIsQThDcEdsQixNQUFNLENBQUM7SUFDTixPQUFPLEVBQUUsRUFBRztJQUNaLE9BQU8sRUFBRSxLQUFNO0lBQ2YsS0FBSyxFQUFFLElBQUssR0FDYjtFOUNnR0gsQThDN0RNLHFCOUM2RGUsRzhDN0RmLEVBQUUsQ0FBQztJQUNMLEtBQUssRUFxc0JELElBQUksR0Fwc0JUO0U5QzJESCxBOEN3cUJhLHFCOUN4cUJRLEc4Q3dxQmYsRUFBRSxHQUFHLEVBQUUsQUFBQSxPQUFPLENBQWxCO0lBRUksT0FBTyxFOUN6cUJXLEdBQUc7SThDMHFCckIsT0FBTyxFQUFFLFlBQWE7SUFHeEIsV0FBVyxFN0N4eEJrQixHQUFXO0k2Q3l4QnhDLFlBQVksRTdDenhCaUIsR0FBVyxHNkMweEJ6QztFOUNockJILEFDNUJXLHFCRDRCVSxHQzVCakIsRUFBRSxHQUFHLEVBQUUsQUFBQSxPQUFPLENBQUM7SUFBRSxXQUFXLEVBQUUsSUFBTSxHQUFVOztBRCtCbEQsQUFBQSxvQkFBb0IsQ0FBQztFQUNuQixRQUFRLEVBQUUsUUFBUztFQUNuQixLQUFLLEVBQUUsSUFBSyxHQUdiO0VBTEQsQUFBQSxvQkFBb0IsQUFHakIsTUFBTSxDQUFDO0lBQUUsS0FBSyxFa0V2RkgsT0FBTyxHbEV1RmM7RUFIbkMsQUFBQSxvQkFBb0IsQUFJakIsUUFBUSxDQUFDO0lBQUUsS0FBSyxFQUFFLElBQUssR0FBSTs7QUFFOUIsQUFBQSxvQkFBb0IsQ0FBQztFQUFFLEtBQUssRUFBRSx1QkFBd0IsR0FBSTs7QUFDMUQsQUFBQSx3QkFBd0IsQ0FBQztFQUV2QixPQUFPLEVBQUUsSUFBSztFQUNkLFdBQVcsRUFBRSxJQUFDO0VBQ2QsUUFBUSxFQUFFLFFBQVEsQ0MxSEksQ0FBTyxDQUFQLENBQU8sQ0FBUCxDQUFPLENEMEhHLEtBQUM7RUFDakMsT0FBTyxFQUFFLENBQUs7RUFDZCxLQUFLLEVDMUgwQixLQUFXO0VEMkgxQyxnQkFBZ0IsRWtFdkdYLE9BQU8sR2xFeUdiO0VBREMsQUFSRixvQkFRc0IsQUFBQSxNQUFNLENBUjVCLHdCQUF3QixDQVFPO0lBQUUsT0FBTyxFQUFFLEtBQU0sR0FBSTs7QUFFcEQsQUFBQSw4QkFBOEIsQ0FBQztFQUM3QixRQUFRLEVBQUUsUUFBUztFQUNuQixLQUFLLEVBQUUsSUFBSyxHQThCYjtFQWhDRCxBQUFBLDhCQUE4QixBQUczQixNQUFNLENBQUM7SUFDTixLQUFLLEVBQUUsSUFBSztJQUNaLGdCQUFnQixFa0U3R1AsT0FBTyxHbEUrR2pCO0lBUEgsQUFNSSw4QkFOMEIsQUFHM0IsTUFBTSxDQUdMLEtBQUssQ0FBQztNQUFFLE9BQU8sRUFBRSxLQUFNLEdBQUk7RUFOL0IsQUFBQSw4QkFBOEIsR0FBOUIsOEJBQThCLENBUXRCO0lBQ0osUUFBUSxFQUFFLFFBQVMsR0FRcEI7SUFqQkgsQUFBQSw4QkFBOEIsR0FBOUIsOEJBQThCLEFBVXpCLFFBQVEsQ0FBQztNQUVSLE9BQU8sRUFBRSxFQUFHO01BQ1osT0FBTyxFQUFFLEtBQU07TUFDZixVQUFVLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ2tFdEhmLHdCQUFPO01sRXVIZCxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0M3SU8sSUFBVyxDQUZwQixDQUFPLENBRUUsSUFBVyxHRDhJdkM7RUFoQkwsQUFtQkUsOEJBbkI0QixDQW1CNUIsS0FBSyxDQUFDO0lBQ0osT0FBTyxFQUFFLElBQUs7SUFDZCxPQUFPLEVBQUUsQ0FBQyxDQ25KbUIsR0FBVyxDRG1KeEIsQ0FBQyxDQ25KWSxJQUFXO0lEb0p4QyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0N0SkEsQ0FBTyxDQUFQLENBQU8sQ0FFRSxLQUFXO0lEcUp4QyxLQUFLLEVBQUUsS0FBZTtJQUN0QixnQkFBZ0IsRWtFaElQLE9BQU8sR2xFaUlqQjtFQXpCSCxBQTBCRSw4QkExQjRCLENBMEI1QixXQUFXLENBQUM7SUFDVixPQUFPLEVBQUUsS0FBTTtJQUNmLE9BQU8sRUMxSnNCLEdBQVcsQ0QwSnpCLENBQUM7SUFDaEIsVUFBVSxFQUFFLElBQUssR0FFbEI7SUEvQkgsQUEwQkUsOEJBMUI0QixDQTBCNUIsV0FBVyxBQUlSLE1BQU0sQ0FBQztNQUFFLGVBQWUsRUFBRSxTQUFVLEdBQUk7O0FBRzdDLEFBQUEsOEJBQThCLENBQUM7RUFDN0IsT0FBTyxFQUFFLEtBQU07RUFDZixPQUFPLEVDakt3QixHQUFXLENEaUszQixDQUFDO0VBQ2hCLEtBQUssRUFBRSxZQUFhLEdBQ3JCOztBQUVELEFBQUEsMkJBQTJCLENBQUM7RUFDMUIsT0FBTyxFQUFFLElBQUs7RUFDZCxPQUFPLEVDdkt3QixHQUFXLEdEc0wzQztFQWpCRCxBQUFBLDJCQUEyQixBQUd4QixPQUFPLENBQUM7SUFBRSxPQUFPLEVBQUUsS0FBTSxHQUFJO0U2Q3pINUIsTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO0k3Q3NIckIsQUFBQSwyQkFBMkIsQ0FBQztNQUt4QixPQUFPLEVBQUUsZUFBZ0IsR0FZNUI7RUFqQkQsQUFRRSwyQkFSeUIsQ0FRekIsYUFBYSxDQUFDO0lBQ1osVUFBVSxFQzlLbUIsR0FBVztJRCtLeEMsVUFBVSxFQUFFLE1BQU8sR0FDcEI7RUFYSCxBQWFFLDJCQWJ5QixDQWF6QixLQUFLLENBQUM7SUFDSixLQUFLLEVrRS9KRixPQUFPO0lsRWdLVixlQUFlLEVBQUUsU0FBVSxHQUM1QiIsIm5hbWVzIjpbXX0= */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
@media (min-width: 1200px) {
  .main-footer {
    position: relative; } }
.main-footer__copyright--mobile {
  display: block;
  font-size: 14px;
  color: #fff;
  background: -webkit-linear-gradient(top, #0792d3, #203477) 50% 50% no-repeat;
  background: linear-gradient(to bottom, #0792d3, #203477) 50% 50% no-repeat; }

@media (min-width: 768px) {
  .main-footer__copyright--mobile {
    display: none; } }
.main-footer__copyright--mobile .container {
  padding: 16px; }

.main-footer__site-maps {
  font-size: 12px;
  color: #fefefe;
  background-color: #2d6ec6; }

@media (min-width: 768px) {
  .main-footer__site-maps {
    font-size: 12px;
    background: -webkit-linear-gradient(top, #0792d3, #203477) 50% 50% no-repeat;
    background: linear-gradient(to bottom, #0792d3, #203477) 50% 50% no-repeat; } }
.main-footer__site-maps .container {
  padding: 16px; }

@media (min-width: 768px) {
  .main-footer__site-maps .container {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: distribute;
    justify-content: space-around; } }
@media (min-width: 1200px) {
  .main-footer__site-maps .container {
    max-width: 820px; } }
@media (min-width: 768px) {
  .main-footer__site-map {
    width: 30.76923%; } }
.main-footer__site-map + .main-footer__site-map {
  margin-top: 0; }

@media (min-width: 768px) {
  .main-footer__site-map + .main-footer__site-map {
    margin-top: 0; } }
.main-footer__contact {
  display: none; }

@media (min-width: 1200px) {
  .main-footer__contact {
    display: block;
    padding: 16px;
    text-align: center;
    font-size: 12px; }

  .main-footer__contact .list {
    display: inline-block;
    list-style-type: none;
    padding-left: 0;
    margin-top: 0;
    margin-bottom: 0; }

  .main-footer__contact .list:after {
    content: "";
    display: table;
    clear: both; }

  .main-footer__contact .list > li {
    float: left; }

  .main-footer__contact .list > li + li:before {
    content: "|";
    display: inline-block;
    margin-left: 8px;
    margin-right: 8px; }

  .main-footer__contact .list > li + li:before {
    margin-left: 12px; } }
.main-footer__copyright {
  display: none; }

@media (min-width: 1200px) {
  .main-footer__copyright {
    display: block;
    padding-bottom: 16px;
    text-align: center;
    font-size: 12px; } }
.main-footer__a-plus-label {
  display: none; }

@media (min-width: 1200px) {
  .main-footer__a-plus-label {
    display: inline-block;
    right: 16px;
    bottom: 64px;
    position: absolute;
    z-index: 1; } }
.map {
  overflow: hidden; }

.map__title {
  font-weight: 700;
  float: left; }

@media (min-width: 768px) {
  .map__title {
    font-size: 14px; } }
.map__cells {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0;
  left: -9px;
  position: relative;
  z-index: 1; }

.map__cells > li {
  display: inline-block; }

@media (min-width: 768px) {
  .map__cell {
    margin-top: 4px; } }
.map__link {
  padding-right: 8px;
  padding-left: 8px;
  color: #fff; }

.map__cell:first-child .map__link,
.map__cell + .map__cell .map__link {
  border-left: 1px solid #fefefe; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2Zvb3Rlci5zY3NzIiwic291cmNlcyI6WyIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fZm9vdGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX21peGlucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19jbGFzc2VzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2N1dC9kaXN0L19zY3V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL190b29sa2l0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BsYWNlaG9sZGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fZm9udHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9faW50cmluc2ljLXJhdGlvLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX25lc3RlZC1jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BhcmFsbGF4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3J0bC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190YXJnZXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdHJpYW5nbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2VudGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3ZpZXdwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3VuZGVybGluZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19hcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0LW11bHRpcGxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3NjYWxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2ZvbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tIHZlbmRvciBtaXhpbiBsaWJyYXJpZXMgLS0tLVxuQGltcG9ydCBcIm1peGluc1wiLFxuICAgICAgICBcImNsYXNzZXNcIixcbiAgICAgICAgXCJ+c3VzeVwiLFxuICAgICAgICBcIn5zY3V0XCIsXG4gICAgICAgIFwifnNhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0XCI7XG5cbi8vIC0tLS0gdmFyaWFibGVzIGFuZCBjb25maWcgLS0tLVxuQGltcG9ydCBcInNldHRpbmdzL3NjYWxlXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZ3JpZFwiLFxuICAgICAgICBcInNldHRpbmdzL2NvbG9yc1wiLFxuICAgICAgICBcInNldHRpbmdzL2ZvbnRcIjskbWFwLWdhcDogcigyKTtcblxuLm1haW4tZm9vdGVyIHtcbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH1cbn1cblxuLm1haW4tZm9vdGVyX19jb3B5cmlnaHQtLW1vYmlsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0ZXh0OiAxNHB4ICNmZmY7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMwNzkyZDMsICMyMDM0NzcpIDUwJSA1MCUgbm8tcmVwZWF0O1xuICBAaW5jbHVkZSBzdXN5KCR0YWJsZXQpIHsgZGlzcGxheTogbm9uZTsgfVxuXG4gIC5jb250YWluZXIgeyBwYWRkaW5nOiAkbWFwLWdhcDsgfVxufVxuXG4ubWFpbi1mb290ZXJfX3NpdGUtbWFwcyB7XG4gIHRleHQ6IDE4cHggI2ZlZmVmZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJsdWU7XG4gIEBpbmNsdWRlIHN1c3koJHRhYmxldCkge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMDc5MmQzLCAjMjAzNDc3KSA1MCUgNTAlIG5vLXJlcGVhdDtcbiAgfVxuXG4gIC5jb250YWluZXIge1xuICAgIHBhZGRpbmc6ICRtYXAtZ2FwO1xuICAgIEBpbmNsdWRlIHN1c3koJHRhYmxldCkge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xuICAgIH1cbiAgICBAaW5jbHVkZSBzdXN5KCRkZXNrdG9wKSB7IG1heC13aWR0aDogcigxMTEpOyB9XG4gIH1cbn1cbi5tYWluLWZvb3Rlcl9fc2l0ZS1tYXAge1xuICBAaW5jbHVkZSBzdXN5KCR0YWJsZXQpIHtcbiAgICB3aWR0aDogc3BhbigzIG9mIDkpO1xuICB9XG59XG4ubWFpbi1mb290ZXJfX3NpdGUtbWFwICsgLm1haW4tZm9vdGVyX19zaXRlLW1hcCB7XG4gIG1hcmdpbi10b3A6ICRtYXAtZ2FwO1xuICBAaW5jbHVkZSBzdXN5KCR0YWJsZXQpIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG59XG5cbi5tYWluLWZvb3Rlcl9fY29udGFjdCB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiByKDIpO1xuICAgIHRleHQ6IGNlbnRlciAxMnB4O1xuICAgIFxuICAgIC5saXN0IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBpbmNsdWRlIGxpc3QtZGl2aWRlZCgnfCcsIHIoMSkpO1xuICAgIH1cbiAgfVxufVxuXG4ubWFpbi1mb290ZXJfX2NvcHlyaWdodCB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nLWJvdHRvbTogcigyKTtcbiAgICB0ZXh0OiBjZW50ZXIgMTJweDtcbiAgfVxufVxuXG4ubWFpbi1mb290ZXJfX2EtcGx1cy1sYWJlbCB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlIG4oKSByKDIpIHIoOCkgbigpO1xuICAgIHotaW5kZXg6IGluZGV4KCRsYXllcnMsIGJhc2UpO1xuICB9XG59XG5cbi5tYXAgeyBvdmVyZmxvdzogaGlkZGVuOyB9XG4ubWFwX190aXRsZSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBAaW5jbHVkZSBzdXN5KCR0YWJsZXQpIHsgZm9udC1zaXplOiAxNHB4OyB9XG59XG4ubWFwX19jZWxscyB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmUoKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlIG4oKSBuKCkgbigpIChyKC0xKSAtIDFweCk7XG4gIHotaW5kZXg6IGluZGV4KCRsYXllcnMsIGJhc2UpO1xufVxuLm1hcF9fY2VsbCB7XG4gIEBpbmNsdWRlIHN1c3koJHRhYmxldCkgeyBtYXJnaW4tdG9wOiByKC41KTsgfVxufVxuLm1hcF9fbGluayB7XG4gIHBhZGRpbmc6IG4oKSByKDEpO1xuICBjb2xvcjogI2ZmZjtcblxuICAubWFwX19jZWxsOmZpcnN0LWNoaWxkICYsXG4gIC5tYXBfX2NlbGwgKyAubWFwX19jZWxsICYgeyBib3JkZXItbGVmdDogMXB4IHNvbGlkICNmZWZlZmU7IH1cbn0iLCIvLyB7e1Nhc3MgbWl4aW5zIC0tLS0tLS0tfX1cbkBmdW5jdGlvbiBuKCkgeyBAcmV0dXJuIHVucXVvdGUoXCIqXCIpOyB9XG5cbkBmdW5jdGlvbiByKCR0aW1lczogMSkgeyBAcmV0dXJuICRyaHl0aG0tZ2FwICogJHRpbWVzOyB9XG5cbkBtaXhpbiBzdXN5KCRtYXApIHtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJG1hcCwgcXVlcnkpLCBtYXAtZ2V0KCRtYXAsIGxheW91dCkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gcmV2ZXJzZS1oaWRlLXZpc3VhbGx5KCkge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG59XG5cbkBtaXhpbiBzaGFyZS1icmVha3BvaW50cygkbWFwLCAkY3NzcHJvcDogY29udGVudCkge1xuICAkZGVzY3JpcHRpb246ICcnO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRtYXAge1xuICAgIEBpZiAkZGVzY3JpcHRpb24gIT0gICcnIHtcbiAgICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJyB8ICc7XG4gICAgfVxuICAgIFxuICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJHByb3BlcnR5ICsnOiAnKyBpbnNwZWN0KCR2YWx1ZSk7XG4gIH1cblxuICBkaXNwbGF5OiBub25lO1xuICAjeyRjc3Nwcm9wfTogICRkZXNjcmlwdGlvbjtcbn1cblxuQG1peGluIHRvZ2dsZS1mYWRlKCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICB9XG59XG5cbkBtaXhpbiB0b2dnbGUtc2hvdygpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAwO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgfSAgXG59XG5cbkBtaXhpbiBzaG93KCkge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgaGVpZ2h0OiBhdXRvOyAgXG59XG5cbkBtaXhpbiBpbnB1dC1wbGFjZWhvbGRlcigpIHtcbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgXG4gICY6Oi1tb3otcGxhY2Vob2xkZXIsXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbn1cblxuQG1peGluIGRlYnVnKCRjb2xvcjogI2ZmZiByZ2JhKHRvbWF0bywgLjMpKSB7XG4gIGNvbG9yOiAkY29sb3Jcbn1cblxuQG1peGluIGxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpO1xuICA+IGxpICsgbGk6YmVmb3JlIHsgbWFyZ2luLWxlZnQ6ICRzcGFjZSArIDRweDsgfVxufVxuIiwiQG1peGluIEhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG5AbWl4aW4gU2VsZWN0IHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgcGFkZGluZzogMCByKDIpIDAgcigxKTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgLy8gaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICAvLyBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAvLyBiYWNrZ3JvdW5kOiB1cmwoXCJpbWFnZXMvYXJyb3ctZG93bi5zdmdcIilcbiAgLy8gICAgICAgICAgIDkyJSA1MCUgLyA4cHggMTBweFxuICAvLyAgICAgICAgICAgbm8tcmVwZWF0XG4gIC8vICAgICAgICAgICB0cmFuc3BhcmVudDtcbiAgLm5vLWNzcy1hcHBlYXJhbmNlICYge1xuICAgIEBpbmNsdWRlIHNjdXQtcGFkZGluZyhuIDApO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIE5vcm1hbGl6ZSgpIHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lIHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwO1xufSIsIi8vIFN1c3lcbi8vID09PT1cblxuQGltcG9ydCAnc3VzeS9sYW5ndWFnZS9zdXN5JztcbiIsIi8vIFN1c3kgTmV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuJHN1c3ktdmVyc2lvbjogMi4xO1xuXG5AaW1wb3J0IFwiLi4vc3VcIjtcbkBpbXBvcnQgXCIuLi9vdXRwdXQvZmxvYXRcIjtcblxuQGltcG9ydCBcInN1c3kvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdXN5L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdXN5L2dyaWRzXCI7XG5AaW1wb3J0IFwic3VzeS9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VzeS9jb250ZXh0XCI7XG5AaW1wb3J0IFwic3VzeS9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VzeS9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzdXN5L3NwYW5cIjtcbkBpbXBvcnQgXCJzdXN5L2d1dHRlcnNcIjtcbkBpbXBvcnQgXCJzdXN5L2lzb2xhdGVcIjtcbkBpbXBvcnQgXCJzdXN5L2dhbGxlcnlcIjtcbkBpbXBvcnQgXCJzdXN5L3Jvd3NcIjtcbkBpbXBvcnQgXCJzdXN5L21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzdXN5L3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2JsZWVkXCI7XG5AaW1wb3J0IFwic3VzeS9icmVha3BvaW50LXBsdWdpblwiO1xuIiwiLy8gU3Vcbi8vID09XG5cbkBpbXBvcnQgXCJzdS91dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJzdS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdS9ncmlkXCI7XG4iLCIvLyBNYXAgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gVHJ1bmNhdGUgTGlzdFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSBsaXN0LCB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBsZW5ndGhcbkBmdW5jdGlvbiBfc3VzeS10cnVuY2F0ZS1saXN0KFxuICAkbGlzdCxcbiAgJGxlbmd0aFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGlzdCkge1xuICAgICRfcmV0dXJuOiBpZigkaSA8PSAkbGVuZ3RoLCBhcHBlbmQoJF9yZXR1cm4sIG50aCgkbGlzdCwgJGkpKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIEdldFxuLy8gLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtZ2V0KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiAkbWFwO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiB0eXBlLW9mKCRfcmV0dXJuKSA9PSBtYXAge1xuICAgICAgJF9yZXR1cm46IG1hcC1nZXQoJF9yZXR1cm4sICRrZXkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBTZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFNldCBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLXNldChcbiAgJG1hcCxcbiAgJGtleXMtdmFsdWUuLi5cbikge1xuICAkX3ZhbHVlOiBudGgoJGtleXMtdmFsdWUsIC0xKTtcbiAgJF9rZXlzOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRrZXlzLXZhbHVlLCBsZW5ndGgoJGtleXMtdmFsdWUpIC0gMSk7XG4gICRfbGVuZ3RoOiBsZW5ndGgoJF9rZXlzKTtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJF9sZW5ndGgge1xuICAgICRfbjogMCAtICRpO1xuICAgICRfbGV2ZWw6IF9zdXN5LXRydW5jYXRlLWxpc3QoJF9rZXlzLCAkX2xlbmd0aCArICRfbik7XG4gICAgJF9sZXZlbDogX3N1c3ktZGVlcC1nZXQoJG1hcCwgJF9sZXZlbC4uLik7XG4gICAgJF9tZXJnZTogbnRoKCRfa2V5cywgJF9uKTtcbiAgICAkX21lcmdlOiAoJF9tZXJnZTogJF92YWx1ZSk7XG4gICAgJF9yZXR1cm46IGlmKCRfbGV2ZWwsIG1hcC1tZXJnZSgkX2xldmVsLCAkX21lcmdlKSwgJF9tZXJnZSk7XG4gICAgJF92YWx1ZTogJF9yZXR1cm47XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgTWVyZ2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiAyIG9iamVjdHMgb2YgYW55IGRlcHRoLCBtZXJnZWRcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLW1lcmdlKFxuICAkbWFwMSxcbiAgJG1hcDJcbikge1xuXG4gIEBpZiB0eXBlLW9mKCRtYXAxKSAhPSBtYXAgb3IgdHlwZS1vZigkbWFwMikgIT0gbWFwIHtcbiAgICAkbWFwMTogJG1hcDI7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwMiB7XG4gICAgICAkX25ldzogKCRrZXk6IF9zdXN5X2RlZXAtbWVyZ2UobWFwLWdldCgkbWFwMSwgJGtleSksICR2YWx1ZSkpO1xuICAgICAgJG1hcDE6IG1hcC1tZXJnZSgkbWFwMSwgJF9uZXcpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG1hcDE7XG59XG5cblxuLy8gRGVlcCBIYXMtS2V5XG4vLyAtLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIHRydWUgaWYgYSBkZWVwIGtleSBleGlzdHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWhhcy1rZXkoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46IG51bGw7XG4gICRfc3RvcDogZmFsc2U7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIG5vdCgkX3N0b3ApIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KTtcbiAgICB9XG5cbiAgICBAaWYgJF9yZXR1cm4ge1xuICAgICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfc3RvcDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU2V0dGluZ3Ncbi8vID09PT09PT09XG5cbi8vIFZlcnNpb25cbi8vIC0tLS0tLS1cbiRzdS12ZXJzaW9uOiAxLjE7XG5cblxuLy8gRGVmYXVsdCBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVGhlIGJhc2ljIHNldHRpbmdzXG4kc3VzeS1kZWZhdWx0czogKFxuICBjb2x1bW5zOiA0LFxuICBndXR0ZXJzOiAuMjUsXG4pO1xuXG5cbi8vIFVzZXIgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gRGVmaW5lIHRoZSAkc3VzeSB2YXJpYWJsZSB3aXRoIGEgbWFwIG9mIHlvdXIgb3duIHNldHRpbmdzLlxuLy8gLSBTZXQgRUlUSEVSICRjb2x1bW4td2lkdGggT1IgJGNvbnRhaW5lclxuLy8gLSBVc2UgJGNvbHVtbi13aWR0aCBmb3Igc3RhdGljIGxheW91dHNcbiRzdXN5OiAoKSAhZGVmYXVsdDtcblxuXG4vLyBTdXN5IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBBZGQgZGVmYXVsdHMgdG8gU3VzeVxuQG1peGluIHN1c3ktZGVmYXVsdHMoXG4gICRkZWZhdWx0c1xuKSB7XG4gICRzdXN5LWRlZmF1bHRzOiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRkZWZhdWx0cykgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IFNldFxuLy8gLS0tLS0tLS1cbi8vIENoYW5nZSBvbmUgc2V0dGluZ1xuLy8gLSAka2V5ICAgOiBzZXR0aW5nIG5hbWVcbi8vIC0gJHZhbHVlIDogc2V0dGluZyB2YWx1ZVxuQG1peGluIHN1c3ktc2V0KFxuICAka2V5LXZhbHVlLi4uXG4pIHtcbiAgJHN1c3k6IF9zdXN5LWRlZXAtc2V0KCRzdXN5LCAka2V5LXZhbHVlLi4uKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgR2V0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJuIG9uZSBzZXR0aW5nIGZyb20gYSBncmlkXG4vLyAtICRrZXkgICAgIDogPGtleXdvcmQ+XG4vLyAtICRsYXlvdXQgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIHN1c3ktZ2V0KFxuICAka2V5LFxuICAkbGF5b3V0OiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRzdXN5KVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfb3B0aW9uczogJGxheW91dCAkc3VzeSAkc3VzeS1kZWZhdWx0cztcbiAgJF9icmVhazogZmFsc2U7XG4gICRfcmV0dXJuOiBudWxsO1xuXG4gIEBlYWNoICRvcHQgaW4gJF9vcHRpb25zIHtcbiAgICBAaWYgdHlwZS1vZigkb3B0KSA9PSBtYXAgYW5kIG5vdCgkX2JyZWFrKSB7XG4gICAgICAkX2tleXNldDogX3N1c3ktZGVlcC1oYXMta2V5KCRvcHQsICRrZXkuLi4pO1xuICAgICAgQGlmICRfa2V5c2V0IHtcbiAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtZ2V0KCRvcHQsICRrZXkuLi4pO1xuICAgICAgICAkX2JyZWFrOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBNYXRoIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PVxuXG5cbi8vIFZhbGlkIENvbHVtbnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBjb2x1bW4gc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW5zKFxuICAkY29sdW1ucyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkY29sdW1ucyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGNvbHVtbnMpIHtcbiAgICAkcmV0dXJuOiAkY29sdW1ucztcbiAgfSBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAkZmFpbDogbnVsbDtcbiAgICBAZWFjaCAkY29sIGluICRjb2x1bW5zIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRjb2wpID09IG51bWJlciB7XG4gICAgICAgICRmYWlsOiAkZmFpbCBvciBpZih1bml0bGVzcygkY29sKSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGZhaWw6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgICRyZXR1cm46IGlmKCRmYWlsLCAkcmV0dXJuLCAkY29sdW1ucyk7XG4gIH1cblxuICBAaWYgJHJldHVybiAhPSAkY29sdW1ucyBhbmQgbm90KCRzaWxlbnQpIHtcbiAgICAkcmV0dXJuOiBudWxsO1xuICAgICR3YXJuOiAnJGNvbHVtbnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlciBvciBsaXN0IG9mIHVuaXRsZXNzIG51bWJlcnMuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRjb2x1bW5zfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cblxuLy8gVmFsaWQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGd1dHRlciBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWd1dHRlcnMoXG4gICRndXR0ZXJzLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRndXR0ZXJzKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkZ3V0dGVycykge1xuICAgICRyZXR1cm46ICRndXR0ZXJzO1xuICB9IEBlbHNlIGlmIG5vdCgkc2lsZW50KSB7XG4gICAgJHdhcm46ICckZ3V0dGVycyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skZ3V0dGVyc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQ29sdW1uIG1hdGhcbi8vID09PT09PT09PT09XG5cblxuLy8gSXMgU3ltbWV0cmljYWxcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgYSBncmlkIGlzIHN5bW1ldHJpY2FsLlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIGlzLXN5bW1ldHJpY2FsKFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaWYodHlwZS1vZigkY29sdW1ucykgPT0gbnVtYmVyLCAkY29sdW1ucywgbnVsbCk7XG59XG5cblxuLy8gU3VzeSBDb3VudFxuLy8gLS0tLS0tLS0tLVxuLy8gRmluZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gYSBnaXZlbiBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LWNvdW50KFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpIG9yIGxlbmd0aCgkY29sdW1ucyk7XG59XG5cblxuLy8gU3VzeSBTdW1cbi8vIC0tLS0tLS0tXG4vLyBGaW5kIHRoZSB0b3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeS1zdW0oXG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcblxuICAkc3ByZWFkOiBpZigkc3ByZWFkID09IHdpZGUsIDAsIGlmKCRzcHJlYWQgPT0gd2lkZXIsIDEsIC0xKSk7XG4gICRndXR0ZXItc3VtOiAoc3VzeS1jb3VudCgkY29sdW1ucykgKyAkc3ByZWFkKSAqICRndXR0ZXJzO1xuICAkY29sdW1uLXN1bTogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gIEBpZiBub3QoJGNvbHVtbi1zdW0pIHtcbiAgICBAZWFjaCAkY29sdW1uIGluICRjb2x1bW5zIHtcbiAgICAgICRjb2x1bW4tc3VtOiAoJGNvbHVtbi1zdW0gb3IgMCkgKyAkY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi1zdW0gKyAkZ3V0dGVyLXN1bTtcbn1cblxuXG4vLyBTdXN5IFNsaWNlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgb2YgY29sdW1ucyBhdCBhIGdpdmVuIGxvY2F0aW9uLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktc2xpY2UoXG4gICRzcGFuLFxuICAkbG9jYXRpb24sXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJHN1Yi1jb2x1bW5zOiAkc3BhbjtcblxuICBAaWYgbm90KGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSkge1xuICAgICRsb2NhdGlvbjogJGxvY2F0aW9uIG9yIDE7XG4gICAgJHN1Yi1jb2x1bW5zOiAoKTtcbiAgICBAZm9yICRpIGZyb20gJGxvY2F0aW9uIHRvICgkbG9jYXRpb24gKyAkc3Bhbikge1xuICAgICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRpKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3ViLWNvbHVtbnM7XG59XG5cblxuLy8gU3VzeVxuLy8gLS0tLVxuLy8gRmluZCB0aGUgc3VtIG9mIGEgY29sdW1uLXNwYW4uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbiAgICAgOiBmYWxzZSxcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgICAgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICAgICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAkc3Bhbjogc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG5cbiAgQHJldHVybiBzdXN5LXN1bSgkc3BhbiwgJGd1dHRlcnMsICRzcHJlYWQpO1xufVxuIiwiLy8gRmxvYXQgQVBJXG4vLyA9PT09PT09PT1cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5AaW1wb3J0IFwiZmxvYXQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiZmxvYXQvc3BhblwiO1xuQGltcG9ydCBcImZsb2F0L2VuZFwiO1xuQGltcG9ydCBcImZsb2F0L2lzb2xhdGVcIjtcbiIsIi8vIFNoYXJlZCBBUElcbi8vID09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnRcIjtcblxuQGltcG9ydCBcInNoYXJlZC9pbnNwZWN0XCI7XG5AaW1wb3J0IFwic2hhcmVkL291dHB1dFwiO1xuQGltcG9ydCBcInNoYXJlZC9kaXJlY3Rpb25cIjtcbkBpbXBvcnQgXCJzaGFyZWQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInNoYXJlZC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzaGFyZWQvbWFyZ2luc1wiO1xuQGltcG9ydCBcInNoYXJlZC9wYWRkaW5nXCI7XG5cblxuXG4iLCIvLyBTdXN5IEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnQvc3VwcG9ydFwiO1xuQGltcG9ydCBcInN1cHBvcnQvcHJlZml4XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9yZW1cIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2NsZWFyZml4XCI7XG4iLCIvLyBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IFN1cHBvcnQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogZmFsc2UsXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kLW9wdGlvbnM6IGZhbHNlLFxuICAgIGJyZWFrcG9pbnQ6IHRydWUsXG4gICAgYm94LXNpemluZzogdHJ1ZSxcbiAgICByZW06IHRydWUsXG4gICksXG4pKTtcblxuXG4vLyBTdXN5IFN1cHBvcnQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlbmQgcHJvcGVydHktdmFsdWUgcGFpcnMgdG8gdGhlIHByb3BlciBzdXBwb3J0IG1vZHVsZXMuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1zdXBwb3J0KFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gIC8vIEJhY2tncm91bmQgU3VwcG9ydFxuICBAaWYgJHByb3AgPT0gYmFja2dyb3VuZC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWltYWdlKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtc2l6ZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLXNpemUoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1vcmlnaW4ge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1jbGlwIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtY2xpcCgkdmFsKTtcbiAgfVxuXG4gIC8vIEJveC1TaXppbmcgU3VwcG9ydFxuICBAZWxzZSBpZiAkcHJvcCA9PSBib3gtc2l6aW5nIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJveC1zaXppbmcoJHZhbCk7XG4gIH1cblxuICAvLyBSZW0gU3VwcG9ydFxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJHByb3AsICR2YWwpO1xuICB9XG59XG5cblxuLy8gU3VzeSBTdXBwb3J0IFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3Igc3VwcG9ydCBvZiBhIGZlYXR1cmUuXG4vLyAtICRmZWF0dXJlICAgICAgIDogPHN0cmluZz5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyBcInJlbVwiIG9yIFwiYm94LXNpemluZ1wiXG4vLyAtICRyZXF1aXJlbWVudHMgIDogPG1hcD5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyAodmFyaWFibGU6IHJlbS13aXRoLXB4LWZhbGxiYWNrLCBtaXhpbjogcmVtKVxuLy8gLSAkd2FybiAgICAgICAgICA6IDxib29sPlxuQGZ1bmN0aW9uIHN1c3ktc3VwcG9ydChcbiAgJGZlYXR1cmUsXG4gICRyZXF1aXJlbWVudHM6ICgpLFxuICAkd2FybjogdHJ1ZVxuKSB7XG4gICRfc3VwcG9ydDogc3VzeS1nZXQodXNlLWN1c3RvbSAkZmVhdHVyZSk7XG5cbiAgQGlmICRfc3VwcG9ydCB7XG4gICAgJF9mYWlsOiBmYWxzZTtcblxuICAgIEBlYWNoICRfdHlwZSwgJF9yZXEgaW4gJHJlcXVpcmVtZW50cyB7XG4gICAgICBAZWFjaCAkX2kgaW4gJF9yZXEge1xuICAgICAgICAkX3Bhc3M6IGNhbGwodW5xdW90ZShcIiN7JF90eXBlfS1leGlzdHNcIiksICRfaSk7XG5cbiAgICAgICAgQGlmIG5vdCgkX3Bhc3MpIHtcbiAgICAgICAgICAkX2ZhaWw6IHRydWU7XG4gICAgICAgICAgQGlmICR3YXJuIHtcbiAgICAgICAgICAgIEB3YXJuIFwiWW91IHJlcXVlc3RlZCBjdXN0b20gc3VwcG9ydCBvZiAjeyRmZWF0dXJlfSwgYnV0IHRoZSAjeyRfaX0gI3skX3R5cGV9IGlzIG5vdCBhdmFpbGFibGUuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zdXBwb3J0OiBpZigkX2ZhaWwsIGZhbHNlLCAkX3N1cHBvcnQpO1xuICB9XG5cbiAgQHJldHVybiAkX3N1cHBvcnQ7XG59XG4iLCIvLyBTdXN5IFByZWZpeFxuLy8gPT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBzaW1wbGUgcHJlZml4ZWQgcHJvcGVydGllcy5cbi8vIC0gJHByb3AgICAgICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICAgICAgOiA8Y3NzIHZhbHVlPlxuLy8gLSBbJHByZWZpeF0gIDogPGJyb3dzZXIgcHJlZml4IGxpc3Q+XG5AbWl4aW4gc3VzeS1wcmVmaXgoXG4gICRwcm9wLFxuICAkdmFsLFxuICAkcHJlZml4OiBvZmZpY2lhbFxuKSB7XG4gIEBlYWNoICRmaXggaW4gJHByZWZpeCB7XG4gICAgJGZpeDogaWYoJGZpeCA9PSBvZmZpY2lhbCBvciBub3QoJGZpeCksICRwcm9wLCAnLSN7JGZpeH0tI3skcHJvcH0nKTtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkZml4LCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gQmFja2dyb3VuZCBQcm9wZXJ0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIEltYWdlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWltYWdlPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLWltYWdlLCAobWl4aW46IGJhY2tncm91bmQtaW1hZ2UpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS4uLik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgU2l6ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1zaXplPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1zaXplKFxuICAkc2l6ZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtc2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoJHNpemUpO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBPcmlnaW5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLW9yaWdpbj5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtb3JpZ2luKFxuICAkb3JpZ2luXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1vcmlnaW4pKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1vcmlnaW4oJG9yaWdpbik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkb3JpZ2luO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBDbGlwXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtY2xpcD5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtY2xpcChcbiAgJGNsaXBcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLWNsaXApKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1jbGlwKCRjbGlwKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcDtcbiAgfVxufVxuIiwiLy8gQm94IFNpemluZ1xuLy8gPT09PT09PT09PVxuXG4vLyBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJG1vZGVsOiA8Ym94LXNpemluZz5cbkBtaXhpbiBzdXN5LWJveC1zaXppbmcoXG4gICRtb2RlbDogY29udGVudC1ib3hcbikge1xuICBAaWYgJG1vZGVsIHtcbiAgICBAaWYgc3VzeS1zdXBwb3J0KGJveC1zaXppbmcsIChtaXhpbjogYm94LXNpemluZyksICR3YXJuOiBmYWxzZSkge1xuICAgICAgQGluY2x1ZGUgYm94LXNpemluZygkbW9kZWwpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByZWZpeDogKG1veiwgd2Via2l0LCBvZmZpY2lhbCk7XG4gICAgICBAaW5jbHVkZSBzdXN5LXByZWZpeChib3gtc2l6aW5nLCAkbW9kZWwsICRwcmVmaXgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRGVidWdnaW5nXG4vLyA9PT09PT09PT1cblxuLy8gU3VzeSBJbnNwZWN0XG4vLyAtLS0tLS0tLS0tLS1cbi8vIE91dHB1dCBhcmd1bWVudHMgcGFzc2VkIHRvIGEgaW5zcGVjdC5cbi8vIC0gJG1peGluICA6IDxzdXN5IG1peGluPlxuLy8gLSAkaW5zcGVjICAgOiA8bWl4aW4gYXJndW1lbnRzPlxuXG5AbWl4aW4gc3VzeS1pbnNwZWN0KFxuICAkbWl4aW4sXG4gICRpbnNwZWN0XG4pIHtcbiAgJHNob3c6IGZhbHNlO1xuXG4gIEBlYWNoICRpdGVtIGluICRpbnNwZWN0IHtcbiAgICBAaWYgaW5kZXgoJGl0ZW0sIGluc3BlY3QpIHtcbiAgICAgICRzaG93OiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2hvdyBvciBzdXN5LWdldChkZWJ1ZyBpbnNwZWN0KSB7XG4gICAgLXN1c3ktI3skbWl4aW59OiBpbnNwZWN0KCRpbnNwZWN0KTtcbiAgfVxufVxuIiwiLy8gT3V0cHV0XG4vLyA9PT09PT1cblxuLy8gT3V0cHV0XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBDU1Mgd2l0aCBwcm9wZXIgYnJvd3NlciBzdXBwb3J0LlxuLy8gLSAkc3R5bGVzICA6IDxtYXAgb2YgY3NzIHByb3BlcnR5LXZhbHVlIHBhaXJzPlxuQG1peGluIG91dHB1dChcbiAgJHN0eWxlc1xuKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsIGluICRzdHlsZXMge1xuICAgIEBpbmNsdWRlIHN1c3ktc3VwcG9ydCgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIERpcmVjdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEZsb3cgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgZmxvdzogbHRyLFxuKSk7XG5cbi8vIEdldCBEaXJlY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIG9yICd0bycgZGlyZWN0aW9uIG9mIGEgbHRyIG9yIHJ0bCBmbG93LlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuLy8gLSBbJGtleV0gICA6IGZyb20gfCB0b1xuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGtleTogZnJvbVxuKSB7XG4gICRyZXR1cm46IGlmKCRmbG93ID09IHJ0bCwgKGZyb206IHJpZ2h0LCB0bzogbGVmdCksIChmcm9tOiBsZWZ0LCB0bzogcmlnaHQpKTtcbiAgQHJldHVybiBtYXAtZ2V0KCRyZXR1cm4sICRrZXkpO1xufVxuXG4vLyBUb1xuLy8gLS1cbi8vIFJldHVybiB0aGUgJ3RvJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gdG8oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgdG8pO1xufVxuXG4vLyBGcm9tXG4vLyAtLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gZnJvbShcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCBmcm9tKTtcbn1cbiIsIi8vIEdyaWQgQmFja2dyb3VuZCBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cbi8vIC0gU3ViLXBpeGVsIHJvdW5kaW5nIGNhbiBsZWFkIHRvIHNldmVyYWwgcGl4ZWxzIHZhcmlhdGlvbiBiZXR3ZWVuIGJyb3dzZXJzLlxuXG4vLyBHcmlkIEJhY2tncm91bmQgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRpbWFnZTogYmFja2dyb3VuZC1pbWFnZVxuLy8gLSAkc2l6ZTogYmFja2dyb3VuZC1zaXplXG4vLyAtICRjbGlwOiBiYWNrZ3JvdW5kLWNsaXBcbi8vIC0gWyRmbG93XTogbHRyIHwgcnRsXG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkLW91dHB1dCAoXG4gICRpbWFnZSxcbiAgJHNpemU6IG51bGwsXG4gICRjbGlwOiBudWxsLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlLFxuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemUsXG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRjbGlwLFxuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogZnJvbSgkZmxvdykgdG9wLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFNoYXJlZCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICAgICAgICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGNvbnRhaW5lci1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICAkb3V0cHV0OiAoXG4gICAgI3skcHJvcGVydHl9OiAkd2lkdGggb3IgMTAwJSxcbiAgICBtYXJnaW4tbGVmdDogbnRoKCRqdXN0aWZ5LCAxKSxcbiAgICBtYXJnaW4tcmlnaHQ6IG50aCgkanVzdGlmeSwgMiksXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gTWFyZ2lucyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIE1hcmdpbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gbWFyZ2luLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3skZnJvbX06ICRiZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFBhZGRpbmcgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBQYWRkaW5nIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gcGFkZGluZy1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgQ29udGFpbmVyXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBmbG9hdC1jb250YWluZXIoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICBAaW5jbHVkZSBzdXN5LWNsZWFyZml4O1xuICBAaW5jbHVkZSBjb250YWluZXItb3V0cHV0KCR3aWR0aCwgJGp1c3RpZnksICRwcm9wZXJ0eSk7XG59XG4iLCIvLyBGbG9hdCBTcGFuIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgU3BhbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICR3aWR0aCAgICAgICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvYXRdICAgICAgICAgICA6IGZyb20gfCB0b1xuLy8gLSBbJG1hcmdpbi1iZWZvcmVdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJG1hcmdpbi1hZnRlcl0gICAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYmVmb3JlXSAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYWZ0ZXJdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICAgICAgICAgICAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1zcGFuLW91dHB1dChcbiAgJHdpZHRoLFxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb20sXG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbCxcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsLFxuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGwsXG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbCxcbiAgJGZsb3cgICAgICAgICAgICAgOiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0byAgICAgOiB0bygkZmxvdyk7XG4gICRmcm9tICAgOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGg6ICR3aWR0aCxcbiAgICBmbG9hdDogaWYoJGZsb2F0ID09IHRvLCAkdG8sIG51bGwpIG9yIGlmKCRmbG9hdCA9PSBmcm9tLCAkZnJvbSwgbnVsbCksXG4gICAgbWFyZ2luLSN7JGZyb219OiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJHBhZGRpbmctYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgRW5kcyBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRW5kIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgbGFzdC1mbG93OiB0byxcbikpO1xuXG4vLyBGbG9hdCBMYXN0XG4vLyAtLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtbGFzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAkbGFzdC1mbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBsYXN0LWZsb3cpLFxuICAkbWFyZ2luOiAwXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiBpZigkbGFzdC1mbG93ID09IHRvLCAkdG8sIG51bGwpLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4sXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG4vLyBGbG9hdCBGaXJzdFxuLy8gLS0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1maXJzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0je2Zyb20oJGZsb3cpfTogMCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBJc29sYXRpb24gQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIElzb2xhdGUgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkcHVzaCAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gaXNvbGF0ZS1vdXRwdXQoXG4gICRwdXNoLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogJGZyb20sXG4gICAgbWFyZ2luLSN7JGZyb219OiAkcHVzaCxcbiAgICBtYXJnaW4tI3skdG99OiAtMTAwJSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTdXN5IFNldHRpbmdzXG4vLyA9PT09PT09PT09PT09XG5cbi8vIFN1c3kgTGFuZ3VhZ2UgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogZmx1aWQsXG4gIG91dHB1dDogZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogY2VudGVyLFxuICBndXR0ZXItcG9zaXRpb246IGFmdGVyLFxuICBnbG9iYWwtYm94LXNpemluZzogY29udGVudC1ib3gsXG4gIGRlYnVnOiAoXG4gICAgaW1hZ2U6IGhpZGUsXG4gICAgY29sb3I6IHJnYmEoIzY2ZiwgLjI1KSxcbiAgICBvdXRwdXQ6IGJhY2tncm91bmQsXG4gICAgdG9nZ2xlOiB0b3AgcmlnaHQsXG4gICksXG4pKTtcblxuXG4vLyBWYWxpZCBLZXl3b3JkIFZhbHVlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURTogRE9OVCdUIFRPVUNIXG4kc3VzeS1rZXl3b3JkczogKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IHN0YXRpYyBmbHVpZCxcbiAgb3V0cHV0OiBpc29sYXRlIGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGxlZnQgY2VudGVyIHJpZ2h0LFxuICBmbG93OiBsdHIgcnRsLFxuICBndXR0ZXItcG9zaXRpb246IGJlZm9yZSBhZnRlciBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYyxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveCBjb250ZW50LWJveCxcbiAgc3BhbjogZnVsbCxcbiAgZWRnZTogZmlyc3QgYWxwaGEgbGFzdCBvbWVnYSBmdWxsLFxuICBzcHJlYWQ6IG5hcnJvdyB3aWRlIHdpZGVyLFxuICBndXR0ZXItb3ZlcnJpZGU6IG5vLWd1dHRlcnMgbm8tZ3V0dGVyLFxuICByb2xlOiBuZXN0LFxuICBjbGVhcjogYnJlYWsgbm9icmVhayxcbiAgZGVidWcgaW1hZ2U6IHNob3cgaGlkZSBzaG93LWNvbHVtbnMgc2hvdy1iYXNlbGluZSxcbiAgZGVidWcgb3V0cHV0OiBiYWNrZ3JvdW5kIG92ZXJsYXksXG4pO1xuXG5cbi8vIFBhcnNlIFN1c3kgS2V5d29yZHMgYW5kIE1hcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zZXR0aW5ncyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBzdHJpbmcge1xuICAgICAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHN1c3kta2V5d29yZHMge1xuICAgICAgICAgIEBpZiBpbmRleCgkdmFsdWUsICRpdGVtKSB7XG4gICAgICAgICAgICAkX2tleS12YWx1ZTogYXBwZW5kKCRrZXksICRpdGVtKTtcbiAgICAgICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLXNldCgkX3JldHVybiwgJF9rZXktdmFsdWUuLi4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgLy8gbWFwc1xuICAgICAgfSBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBtYXAge1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBDb2x1bW5zICYgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1sYXlvdXQoXG4gICRzaG9ydFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcbiAgJF9jb2x1bW5zOiAoKTtcbiAgJF9ndXR0ZXJzOiBudWxsO1xuXG4gIEBpZiBub3QodW5pdGxlc3MobnRoKG50aCgkc2hvcnQsIDEpLCAxKSkpIHtcbiAgICAkX2d1dHRlcnM6IG50aCgkc2hvcnQsIDEpO1xuICB9IEBlbHNlIHtcbiAgICAkX2NvbHVtbnM6IChjb2x1bW5zOiBudGgoJHNob3J0LCAxKSk7XG4gICAgJF9ndXR0ZXJzOiBpZihsZW5ndGgoJHNob3J0KSA+IDEsIG50aCgkc2hvcnQsIDIpLCAkX2d1dHRlcnMpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJF9ndXR0ZXJzKSA9PSBsaXN0IGFuZCBsZW5ndGgoJF9ndXR0ZXJzKSA+IDAge1xuICAgICRfZ3V0dGVyczogKFxuICAgICAgZ3V0dGVyczogbnRoKCRfZ3V0dGVycywgMikgLyBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICAgIGNvbHVtbi13aWR0aDogbnRoKCRfZ3V0dGVycywgMSksXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9ndXR0ZXJzOiBpZigkX2d1dHRlcnMsIChndXR0ZXJzOiAkX2d1dHRlcnMpLCAoKSk7XG4gIH1cblxuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2NvbHVtbnMpO1xuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2d1dHRlcnMpO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3JpZC9Db250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ncmlkKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46IHBhcnNlLXNldHRpbmdzKCRzaG9ydCk7XG4gICRfbGF5b3V0OiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIG51bWJlciBvciBsaXN0XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIG9yIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qge1xuICAgICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCBvciB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAgICRfbGF5b3V0OiBhcHBlbmQoJF9sYXlvdXQsICRpdGVtKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNvbnRhaW5lcjogJGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfbGF5b3V0OiBpZihsZW5ndGgoJF9sYXlvdXQpID4gMCwgcGFyc2UtbGF5b3V0KCRfbGF5b3V0KSwgJF9sYXlvdXQpO1xuICB9XG5cbiAgQHJldHVybiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfbGF5b3V0KTtcbn1cblxuXG4vLyBQYXJzZSBTcGFuXG4vLyAtLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc3BhbihcbiAgJHNob3J0LFxuICAka2V5OiBzcGFuXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICAkX2F0OiBpbmRleCgkc2hvcnQsIGF0KTtcblxuICAgIEBpZiAkX2F0IHtcbiAgICAgICRfbG9jaTogJF9hdCArIDE7XG4gICAgICAkX2xvY2F0aW9uOiBudGgoJHNob3J0LCAkX2xvY2kpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGxvY2F0aW9uOiAkX2xvY2F0aW9uKSk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2F0LCBudWxsKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfbG9jaSwgbnVsbCk7XG4gICAgfVxuXG4gICAgJF9pOiAxO1xuICAgICRfc3BhbjogKCk7XG5cbiAgICBAd2hpbGUgJF9pIDw9IGxlbmd0aCgkc2hvcnQpIHtcbiAgICAgICRfdGhpczogbnRoKCRzaG9ydCwgJF9pKTtcblxuICAgICAgQGlmIHR5cGUtb2YoJF90aGlzKSA9PSBudW1iZXIge1xuICAgICAgICAkX3NwYW46IGFwcGVuZCgkX3NwYW4sICRfdGhpcyk7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICB9IEBlbHNlIGlmICRfdGhpcyA9PSBvZiB7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICAgICRfaTogbGVuZ3RoKCRzaG9ydCkgKyAxO1xuICAgICAgfVxuXG4gICAgICAkX2k6ICRfaSArIDE7XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkX3NwYW4pID4gMCB7XG4gICAgICAkX3NwYW46IGlmKGxlbmd0aCgkX3NwYW4pID09IDEsIG50aCgkX3NwYW4sIDEpLCAkX3NwYW4pO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRrZXk6ICRfc3BhbikpO1xuICAgIH1cblxuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIHBhcnNlLWdyaWQoJHNob3J0KSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ndXR0ZXJzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9ndXR0ZXJzOiBwYXJzZS1zcGFuKCRzaG9ydCwgZ3V0dGVyLW92ZXJyaWRlKTtcbiAgJF9zcGFuOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRfZ3V0dGVycyk7XG5cbiAgQGlmICRfc3BhbiBhbmQgbm90KG1hcC1nZXQoJF9ndXR0ZXJzLCBjb2x1bW5zKSkge1xuICAgICRfY29udGV4dDogKCk7XG4gICAgJF9uZXc6ICgpO1xuXG4gICAgQGVhY2ggJGl0ZW0gaW4gJF9zcGFuIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICRfY29udGV4dDogYXBwZW5kKCRfY29udGV4dCwgJGl0ZW0pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRfbmV3OiBhcHBlbmQoJF9uZXcsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2NvbnRleHQ6IHBhcnNlLWdyaWQoJF9jb250ZXh0KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAwLCBudWxsLCAkX25ldyk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMSwgbnRoKCRfbmV3LCAxKSwgJF9uZXcpO1xuICAgICRfbmV3OiAoZ3V0dGVyLW92ZXJyaWRlOiBpZigkX25ldyAhPSAkX3NwYW4sICRfbmV3LCAkX3NwYW4pKTtcblxuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9uZXcpO1xuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9jb250ZXh0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuIiwiLy8gVmFsaWRhdGlvblxuLy8gPT09PT09PT09PVxuXG5cbi8vIFZhbGlkYXRlIENvbHVtbiBNYXRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbi1tYXRoKFxuICAkbWF0aCxcbiAgJGNvbHVtbi13aWR0aFxuKSB7XG4gIEBpZiAkbWF0aCA9PSBzdGF0aWMgYW5kIG5vdCgkY29sdW1uLXdpZHRoKSB7XG4gICAgQGVycm9yICdTdGF0aWMgbWF0aCByZXF1aXJlcyBhIHZhbGlkIGNvbHVtbi13aWR0aCBzZXR0aW5nLic7XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4td2lkdGg7XG59XG4iLCIvLyBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gU2V0IGEgbmV3IGxheW91dCB1c2luZyBhIHNob3J0aGFuZFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIGxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGF5b3V0LCAkaW5zcGVjdCk7XG59XG5cblxuLy8gVXNlIEdyaWRcbi8vIC0tLS0tLS0tXG4vLyBVc2UgYW4gYXJiaXRyYXJ5IGxheW91dCBmb3IgYSBzZWN0aW9uIG9mIGNvZGVcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiB3aXRoLWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRvbGQgICAgICA6ICRzdXN5O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHdpdGgtbGF5b3V0LCAkaW5zcGVjdCk7XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3k6ICRvbGQgIWdsb2JhbDtcbn1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIGEgcGFyc2VkIGxheW91dCBtYXAgYmFzZWQgb24gc2hvcnRoYW5kIHN5bnRheFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gbGF5b3V0KFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbn1cblxuXG4vLyBHZXQgTGF5b3V0XG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuZXcgbGF5b3V0IGJhc2VkIG9uIGN1cnJlbnQgYW5kIGdpdmVuIHNldHRpbmdzXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AZnVuY3Rpb24gX2dldC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkbGF5b3V0OiBsYXlvdXQoJGxheW91dCk7XG4gIEByZXR1cm4gaWYoJGNsZWFuLCAkbGF5b3V0LCBfc3VzeS1kZWVwLW1lcmdlKCRzdXN5LCAkbGF5b3V0KSk7XG59XG4iLCIvLyBTdXN5IEJveCBTaXppbmdcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgYm94IG1vZGVsIGdsb2JhbGx5IG9uIGFsbCBlbGVtZW50cy5cbi8vIC0gWyRib3hdOiBib3JkZXItYm94IHwgY29udGVudC1ib3hcbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gZ2xvYmFsLWJveC1zaXppbmcoXG4gICRib3g6IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSxcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3Q6ICRib3g7XG5cbiAgQGlmICRpbmhlcml0IHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgaHRtbCB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gICAgICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG4gICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdsb2JhbC1ib3gtc2l6aW5nLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHVwZGF0ZS1ib3gtbW9kZWwoJGJveCk7XG59XG5cbi8vIEJvcmRlciBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gQSBsZWdhY3kgc2hvcnRjdXQuLi5cbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gYm9yZGVyLWJveC1zaXppbmcoXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGdsb2JhbC1ib3gtc2l6aW5nKGJvcmRlci1ib3gsICRpbmhlcml0KTtcbn1cblxuLy8gVXBkYXRlIEJveCBNb2RlbFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVXBkYXRlcyBnbG9iYWwgYm94IG1vZGVsIHNldHRpbmdcbkBtaXhpbiB1cGRhdGUtYm94LW1vZGVsKFxuICAkYm94XG4pIHtcbiAgQGlmICRib3ggIT0gc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpIHtcbiAgQGluY2x1ZGUgc3VzeS1zZXQoZ2xvYmFsLWJveC1zaXppbmcsICRib3gpO1xuICB9XG59XG4iLCIvLyBDb250ZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gTmVzdGVkIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgZ3JpZCBmb3IgbmVzdGVkIGNvbnRleHQuXG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGNvbnRleHQgICAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJHNwYW4gICAgICAgOiBzdXN5LWdldChzcGFuLCAkY29udGV4dCk7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRjb250ZXh0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbn1cblxuLy8gTmVzdGVkIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBVc2UgYSBzdWJzZXQgZ3JpZCBmb3IgYSBuZXN0ZWQgY29udGV4dFxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG4vLyAtIEBjb250ZW50ICAgOiA8Y29udGVudD5cbkBtaXhpbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkb2xkICAgICAgOiBzdXN5LWdldChjb2x1bW5zKTtcbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogbmVzdGVkKCRjb250ZXh0KSkpICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KG5lc3RlZCwgJGluc3BlY3QpO1xuICBAY29udGVudDtcblxuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiAkb2xkKSkgIWdsb2JhbDtcbn1cbiIsIi8vIEJhY2tncm91bmQgR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiBmYWxzZTtcblxuXG4vLyBTaG93IEdyaWQvc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFNob3cgZ3JpZCBvbiBhbnkgZWxlbWVudCB1c2luZyBlaXRoZXIgYmFja2dyb3VuZCBvciBvdmVybGF5LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBzaG93LWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0OiAkZ3JpZDtcbiAgJF9vdXRwdXQ6IGRlYnVnLWdldChvdXRwdXQsICRncmlkKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc2hvdy1ncmlkLCAkaW5zcGVjdCk7XG4gIEBpZiAkX291dHB1dCA9PSBvdmVybGF5IGFuZCBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpICE9IGhpZGUge1xuICAgIEBpbmNsdWRlIG92ZXJsYXktZ3JpZCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gIH1cbn1cblxuQG1peGluIHNob3ctZ3JpZHMoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkZ3JpZCk7XG59XG5cbi8vIEJhY2tncm91bmQgR3JpZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTaG93IGEgZ3JpZCBiYWNrZ3JvdW5kIG9uIGFueSBlbGVtZW50LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRncmlkO1xuICAkX291dHB1dCAgOiBnZXQtYmFja2dyb3VuZCgkZ3JpZCk7XG5cbiAgQGlmIGxlbmd0aCgkX291dHB1dCkgPiAwIHtcbiAgICAkX2Zsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKTtcblxuICAgICRfaW1hZ2U6ICgpO1xuICAgIEBlYWNoICRuYW1lLCAkbGF5ZXIgaW4gbWFwLWdldCgkX291dHB1dCwgaW1hZ2UpIHtcbiAgICAgICRfZGlyZWN0aW9uOiBpZigkbmFtZSA9PSBiYXNlbGluZSwgdG8gYm90dG9tLCB0byB0bygkX2Zsb3cpKTtcbiAgICAgICRfaW1hZ2U6IGFwcGVuZCgkX2ltYWdlLCBsaW5lYXItZ3JhZGllbnQoJF9kaXJlY3Rpb24sICRsYXllciksIGNvbW1hKTtcbiAgICB9XG4gICAgJF9vdXRwdXQ6IG1hcC1tZXJnZSgkX291dHB1dCwgKGltYWdlOiAkX2ltYWdlKSk7XG5cbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmFja2dyb3VuZC1ncmlkLCAkaW5zcGVjdCk7XG4gIH1cbn1cblxuXG4vLyBPdmVybGF5IEdyaWRcbi8vIC0tLS0tLS0tLS0tLVxuLy8gR2VuZXJhdGUgYW4gaWNvbiB0byB0cmlnZ2VyIGdyaWQtb3ZlcmxheXMgb24gYW55IGdpdmVuIGVsZW1lbnRzLlxuLy8gJGdyaWRzLi4uICA6IDxzZWxlY3Rvcj4gWzxzZXR0aW5ncz5dIFssIDxzZWxlY3Rvcj5dKlxuQG1peGluIG92ZXJsYXktZ3JpZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpZiBub3QoJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzKSB7XG4gICAgQGF0LXJvb3QgaGVhZCB7IEBpbmNsdWRlIG92ZXJsYXktaGVhZCgkZ3JpZCk7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmJlZm9yZSB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlcjsgfVxuICAgIEBhdC1yb290IGhlYWQ6aG92ZXIgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXItaG92ZXI7IH1cbiAgICAkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIGhlYWQ6aG92ZXIgfiAmLFxuICBoZWFkOmhvdmVyIH4gYm9keSAmIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1vdmVybGF5LWJhc2U7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXIge1xuICBjb250ZW50OiBcInx8fFwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGZvbnQ6IHtcbiAgICBmYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgc2l6ZTogMTZweDtcbiAgICB3ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyIEhvdmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjUpO1xuICBjb2xvcjogcmVkO1xufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IEhlYWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDxoZWFkPiBzdHlsZXMgdG8gY3JlYXRlIGdyaWQgb3ZlcmxheSB0b2dnbGVcbkBtaXhpbiBvdmVybGF5LWhlYWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkX3RvZ2dsZTogZGVidWctZ2V0KHRvZ2dsZSwgJGdyaWQpO1xuICAkX2hvcno6IG51bGw7XG4gICRfdmVydDogbnVsbDtcblxuICBAZWFjaCAkc2lkZSBpbiAkX3RvZ2dsZSB7XG4gICAgJF9ob3J6OiBpZigkc2lkZSA9PSBsZWZ0IG9yICRzaWRlID09IHJpZ2h0LCAkc2lkZSwgJF9ob3J6KTtcbiAgICAkX3ZlcnQ6IGlmKCRzaWRlID09IHRvcCBvciAkc2lkZSA9PSBib3R0b20sICRzaWRlLCAkX3ZlcnQpO1xuICB9XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgI3skX2hvcnp9OiAxMHB4O1xuICAjeyRfdmVydH06IDEwcHg7XG4gIHotaW5kZXg6IDk5OTtcbiAgY29sb3I6ICMzMzM7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC4yNSk7XG59XG5cblxuLy8gW1ByaXZhdGVdIEdyaWQgT3ZlcmxheSBCYXNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJhc2Ugc3R5bGVzIGZvciBnZW5lcmF0aW5nIGEgZ3JpZCBvdmVybGF5XG5AbWl4aW4gZ3JpZC1vdmVybGF5LWJhc2UoKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBjb250ZW50OiBcIiBcIjtcbiAgei1pbmRleDogOTk4O1xufVxuXG5cbi8vIEdldCBTeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1zeW0oXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgICAgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfZ3V0dGVycyAgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRncmlkKTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkZ3JpZCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRncmlkKTtcblxuICAkX2NvbG9yICAgICAgICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX3RyYW5zICAgICAgICAgOiB0cmFuc3BhcmVudDtcbiAgJF9saWdodCAgICAgICAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuXG4gICRfZW5kICAgICAgICAgICA6IDEgKyAkX2d1dHRlcnM7XG4gICRfYWZ0ZXIgICAgICAgICA6IHBlcmNlbnRhZ2UoMS8kX2VuZCk7XG4gICRfc3RvcHMgICAgICAgICA6ICgpO1xuICAkX3NpemUgICAgICAgICAgOiBzcGFuKDEgJGdyaWQgd2lkZSk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQ7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3NwbGl0OiAkX2d1dHRlcnMvMjtcbiAgICAkX2JlZm9yZTogcGVyY2VudGFnZSgkX3NwbGl0LyRfZW5kKTtcbiAgICAkX2FmdGVyOiBwZXJjZW50YWdlKCgxICsgJF9zcGxpdCkvJF9lbmQpO1xuICAgICRfc3RvcHM6ICRfdHJhbnMgJF9iZWZvcmUsICRfY29sb3IgJF9iZWZvcmUsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfVxuXG4gIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAkX3NpemU6IHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpICogJF9lbmQ7XG4gIH1cblxuICAkX291dHB1dDogKFxuICAgIGltYWdlOiAoY29sdW1uczogJF9zdG9wcyksXG4gICAgc2l6ZTogJF9zaXplLFxuICApO1xuXG4gIEByZXR1cm4gJF9vdXRwdXQ7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBJbnNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0taW5zaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIFNwbGl0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tc3BsaXQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkc3RhcnQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcblxuICAgICRfZW5kOiAkc3RhcnQgKyBzcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkX2VuZCwgY29tbWEpO1xuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBPdXRzaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1vdXRzaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3RyYW5zICAgOiB0cmFuc3BhcmVudDtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRndXR0ZXI6IGdldC1zcGFuLXdpZHRoKGZpcnN0ICRsb2NhdGlvbiAkZ3JpZCk7XG5cbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcblxuICAgICAgJGd1dHRlcjogJF9saWdodCAkZ3V0dGVyLCAkX3RyYW5zICRndXR0ZXIsICRfdHJhbnMgJF9lbmQ7XG4gICAgICAkdGhpcy1zdG9wOiBqb2luKCR0aGlzLXN0b3AsICRndXR0ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLWFzeW0oXG4gICRncmlkXG4pIHtcbiAgJF9zdG9wczogKCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLWluc2lkZSgkZ3JpZCk7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1zcGxpdCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLW91dHNpZGUoJGdyaWQpO1xuICB9XG5cbiAgQHJldHVybiAoaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSk7XG59XG5cblxuLy8gR2V0IEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfc2hvdyAgICA6IHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCk7XG4gICRfcmV0dXJuICA6ICgpO1xuXG4gIEBpZiAkX3Nob3cgYW5kICRfc2hvdyAhPSAnaGlkZScge1xuICAgICRfY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgJF9zeW06IGlzLXN5bW1ldHJpY2FsKCRfY29sdW1ucyk7XG4gICAgICAkX3JldHVybjogaWYoJF9zeW0sIGdldC1iYWNrZ3JvdW5kLXN5bSgkZ3JpZCksIGdldC1iYWNrZ3JvdW5kLWFzeW0oJGdyaWQpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBjb250ZW50LWJveCkpO1xuICAgIH1cblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctY29sdW1ucydcbiAgICAgIGFuZCBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKGJhc2UtbGluZS1oZWlnaHQpXG4gICAgICBhbmQgdHlwZS1vZigkYmFzZS1saW5lLWhlaWdodCkgPT0gJ251bWJlcidcbiAgICAgIGFuZCBub3QgdW5pdGxlc3MoJGJhc2UtbGluZS1oZWlnaHQpIHtcbiAgICAgICRfY29sb3I6IHZhcmlhYmxlLWV4aXN0cygnZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yJyk7XG4gICAgICAkX2NvbG9yOiBpZigkX2NvbG9yLCAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yLCAjMDAwKTtcblxuICAgICAgJF9pbWFnZTogbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpO1xuICAgICAgJF9zaXplOiBtYXAtZ2V0KCRfcmV0dXJuLCBzaXplKTtcbiAgICAgICRfYmFzZWxpbmU6IChiYXNlbGluZTogKCRfY29sb3IgMXB4LCB0cmFuc3BhcmVudCAxcHgpKTtcbiAgICAgICRfYmFzZWxpbmUtc2l6ZTogMTAwJSAkYmFzZS1saW5lLWhlaWdodDtcblxuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKFxuICAgICAgICBpbWFnZTogaWYoJF9pbWFnZSwgbWFwLW1lcmdlKCRfaW1hZ2UsICRfYmFzZWxpbmUpLCAkX2Jhc2VsaW5lKSxcbiAgICAgICAgc2l6ZTogaWYoJF9zaXplLCAoJF9zaXplLCAkX2Jhc2VsaW5lLXNpemUpLCAkX2Jhc2VsaW5lLXNpemUpLFxuICAgICAgKSk7XG5cbiAgICAgIEBpZiAkX3Nob3cgPT0gJ3Nob3cnIHtcbiAgICAgICAgJF9jbGlwOiBtYXAtZ2V0KCRfcmV0dXJuLCBjbGlwKTtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGpvaW4oJF9jbGlwLCBib3JkZXItYm94LCBjb21tYSkpKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRfc2hvdyA9PSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgQHdhcm4gJ1BsZWFzZSBwcm92aWRlIGEgJGJhc2UtbGluZS1oZWlnaHQgd2l0aCB0aGUgZGVzaXJlZCBoZWlnaHQgYW5kIHVuaXRzJztcbiAgICB9XG4gIH1cblxuICBAaWYgbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIEdldCBEZWJ1Z1xuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgZGVidWcgc2V0dGluZ1xuLy8gLSAka2V5OiA8c2V0dGluZz5cbkBmdW5jdGlvbiBkZWJ1Zy1nZXQoXG4gICRrZXksXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRrZXk6IGpvaW4oZGVidWcsICRrZXksIHNwYWNlKTtcbiAgQHJldHVybiBzdXN5LWdldCgka2V5LCAkZ3JpZCk7XG59XG4iLCIvLyBDb250YWluZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgY29udGFpbmVyIGVsZW1lbnRcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgICAgOiAkbGF5b3V0O1xuICAkbGF5b3V0ICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG5cbiAgJF93aWR0aCAgICAgOiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xuICAkX2p1c3RpZnkgICA6IHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihzdXN5LWdldChjb250YWluZXItcG9zaXRpb24sICRsYXlvdXQpKTtcbiAgJF9wcm9wZXJ0eSAgOiBpZihzdXN5LWdldChtYXRoLCAkbGF5b3V0KSA9PSBzdGF0aWMsIHdpZHRoLCBtYXgtd2lkdGgpO1xuXG4gICRfYm94ICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJGxheW91dCk7XG5cbiAgQGlmICRfYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRfYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoY29udGFpbmVyLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGZsb2F0LWNvbnRhaW5lcigkX3dpZHRoLCAkX2p1c3RpZnksICRfcHJvcGVydHkpO1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGxheW91dCk7XG59XG5cbi8vIENvbnRhaW5lciBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICBAcmV0dXJuIGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG59XG5cbi8vIEdldCBDb250YWluZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSB0aGUgY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XTogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1jb250YWluZXItd2lkdGgoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dCAgICAgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF93aWR0aCAgICAgICAgIDogc3VzeS1nZXQoY29udGFpbmVyLCAkbGF5b3V0KTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkbGF5b3V0KTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGxheW91dCk7XG5cbiAgQGlmIG5vdCgkX3dpZHRoKSBvciAkX3dpZHRoID09IGF1dG8ge1xuICAgIEBpZiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSB7XG4gICAgICAkX2NvbHVtbnMgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRsYXlvdXQpO1xuICAgICAgJF9ndXR0ZXJzICAgOiBzdXN5LWdldChndXR0ZXJzLCAkbGF5b3V0KTtcbiAgICAgICRfc3ByZWFkICAgIDogaWYoaXMtc3BsaXQoJGxheW91dCksIHdpZGUsIG5hcnJvdyk7XG4gICAgICAkX3dpZHRoICAgICA6IHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkgKiAkX2NvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3dpZHRoO1xufVxuXG4vLyBQYXJzZSBDb250YWluZXIgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyc2UgdGhlICRjb250YWluZXItcG9zaXRpb24gaW50byBtYXJnaW4gdmFsdWVzLlxuLy8gLSBbJGp1c3RpZnldICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCA8bGVuZ3RoPiBbPGxlbmd0aD5dXG5AZnVuY3Rpb24gcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKFxuICAkanVzdGlmeTogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgY29udGFpbmVyLXBvc2l0aW9uKVxuKSB7XG4gICRfcmV0dXJuOiBpZigkanVzdGlmeSA9PSBsZWZ0LCAwLCBhdXRvKSBpZigkanVzdGlmeSA9PSByaWdodCwgMCwgYXV0byk7XG5cbiAgQGlmIG5vdChpbmRleChsZWZ0IHJpZ2h0IGNlbnRlciwgJGp1c3RpZnkpKSB7XG4gICAgJF9yZXR1cm46IG50aCgkanVzdGlmeSwgMSk7XG4gICAgJF9yZXR1cm46ICRfcmV0dXJuIGlmKGxlbmd0aCgkanVzdGlmeSkgPiAxLCBudGgoJGp1c3RpZnksIDIpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU3BhbiBTeW50YXhcbi8vID09PT09PT09PT09XG5cbi8vIFNwYW4gW21peGluXVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBzcGFubmluZyBlbGVtZW50IHVzaW5nIHNob3J0aGFuZCBzeW50YXguXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbjogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRvdXRwdXQ6IHNwYW4tbWF0aCgkc3Bhbik7XG4gICRuZXN0aW5nOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjbGVhcjogc3VzeS1nZXQoY2xlYXIsICRzcGFuKTtcblxuICAkYm94OiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRjb250ZW50LWJveDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuICAkYm94OiAkYm94IG9yIGlmKGlzLWluc2lkZSgkc3BhbikgYW5kICRjb250ZW50LWJveCwgYm9yZGVyLWJveCwgbnVsbCk7XG5cbiAgQGlmICRjbGVhciA9PSBicmVhayB7XG4gICAgQGluY2x1ZGUgYnJlYWs7XG4gIH0gQGVsc2UgaWYgJGNsZWFyID09IG5vYnJlYWsge1xuICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3BhbiwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTtcbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgQGlmIHZhbGlkLWNvbHVtbnMoJG5lc3RpbmcsIHNpbGVudCkge1xuICAgIEBpbmNsdWRlIG5lc3RlZCgkc3BhbikgeyBAY29udGVudDsgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTcGFuIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIHNwYW4uXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQGZ1bmN0aW9uIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgQHJldHVybiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG59XG5cbi8vIFNwYW4gTWF0aFxuLy8gLS0tLS0tLS0tXG4vLyBHZXQgYWxsIHRoZSBzcGFuIHJlc3VsdHMuXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIHNwYW4tbWF0aChcbiAgJHNwYW5cbikge1xuICAkbmVzdCAgICAgICAgICAgICA6IGlmKHN1c3ktZ2V0KHJvbGUsICRzcGFuKSA9PSBuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRzcGxpdC1uZXN0ICAgICAgIDogaWYoaXMtc3BsaXQoJHNwYW4pIGFuZCAkbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZWRnZSAgICAgICAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgICAgICAgOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbTtcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsO1xuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGw7XG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbDtcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aWR0aHNcbiAgJHNwcmVhZDogaW5kZXgobWFwLXZhbHVlcygkc3BhbiksIHNwcmVhZCk7XG4gICRzcGFuOiBpZigkc3BsaXQtbmVzdCBhbmQgbm90KCRzcHJlYWQpLCBtYXAtbWVyZ2UoJHNwYW4sIChzcHJlYWQ6IHdpZGUpKSwgJHNwYW4pO1xuICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbiAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAvLyBhcHBseSBndXR0ZXJzXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaWYgbm90KHN1c3ktZ2V0KHJvbGUsICRzcGFuKSkge1xuICAgICAgJHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBub3QoJHNwbGl0LW5lc3QpIHtcbiAgICAgICRtYXJnaW4tYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJG1hcmdpbi1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNwZWNpYWwgbWFyZ2luIGhhbmRsaW5nXG4gIEBpZiBzdXN5LWdldChvdXRwdXQsICRzcGFuKSA9PSBpc29sYXRlIGFuZCAkbG9jYXRpb24ge1xuICAgICRtYXJnaW4tYmVmb3JlOiBnZXQtaXNvbGF0aW9uKCRzcGFuKTtcbiAgICAkbWFyZ2luLWFmdGVyOiAtMTAwJTtcbiAgfSBAZWxzZSBpZiAkZWRnZSB7XG4gICAgJGlzLXNwbGl0OiBpcy1zcGxpdCgkc3Bhbik7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG5cbiAgICBAaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkZmxvYXQ6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJHNwYW4pO1xuICAgIH1cblxuICAgIEBpZiBub3QoJGlzLXNwbGl0KSB7XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gZmlyc3QgYW5kICRwb3MgPT0gYmVmb3JlKSB7XG4gICAgICAgICRtYXJnaW4tYmVmb3JlOiAwO1xuICAgICAgfVxuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGxhc3QgYW5kICRwb3MgPT0gYWZ0ZXIpIHtcbiAgICAgICAgJG1hcmdpbi1hZnRlcjogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gKFxuICAgIHdpZHRoICAgICAgICAgICA6ICR3aWR0aCxcbiAgICBmbG9hdCAgICAgICAgICAgOiAkZmxvYXQsXG4gICAgbWFyZ2luLWJlZm9yZSAgIDogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLWFmdGVyICAgIDogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLWJlZm9yZSAgOiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy1hZnRlciAgIDogJHBhZGRpbmctYWZ0ZXIsXG4gICAgZmxvdyAgICAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xufVxuXG4vLyBHZXQgU3BhbiBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBzcGFuIHdpZHRoLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBnZXQtc3Bhbi13aWR0aChcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcblxuICAkbiAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRsb2NhdGlvbiA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycywgJHNwYW4pO1xuICAkc3ByZWFkICAgOiBzdXN5LWdldChzcHJlYWQsICRzcGFuKTtcblxuICAkY29udGV4dCAgOiBudWxsO1xuICAkc3Bhbi1zdW0gOiBudWxsO1xuICAkd2lkdGggICAgOiBudWxsO1xuXG4gIEBpZiAkbiA9PSAnZnVsbCcge1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuICAgICRyb2xlOiBzdXN5LWdldChyb2xlLCAkc3Bhbik7XG4gICAgJG46IGlmKCRwb3MgPT0gc3BsaXQgYW5kICRyb2xlICE9IG5lc3QsIHN1c3ktY291bnQoJGNvbHVtbnMpLCAxMDAlKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRuKSAhPSBudW1iZXIge1xuICAgIEB3YXJuIFwiKCN7dHlwZS1vZigkbil9KSAjeyRufSBpcyBub3QgYSB2YWxpZCBzcGFuLlwiO1xuICB9IEBlbHNlIGlmIHVuaXRsZXNzKCRuKSB7XG4gICAgJGNvbnRleHQ6IHN1c3ktc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgaWYoaXMtc3BsaXQoJHNwYW4pLCB3aWRlLCBuYXJyb3cpKTtcbiAgICAkc3ByZWFkOiBpZihpcy1pbnNpZGUoJHNwYW4pLCAkc3ByZWFkIG9yIHdpZGUsICRzcHJlYWQpO1xuICAgICRzcGFuLXN1bTogc3VzeSgkbiwgJGxvY2F0aW9uLCAkY29sdW1ucywgJGd1dHRlcnMsICRzcHJlYWQpO1xuXG4gICAgJF9tYXRoOiBzdXN5LWdldChtYXRoLCAkc3Bhbik7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJHNwYW4pO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICR3aWR0aDogJHNwYW4tc3VtICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJHNwYW4tc3VtIC8gJGNvbnRleHQpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHdpZHRoOiAkbjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuIiwiLy8gR3V0dGVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIEd1dHRlcnNcbi8vIC0tLS0tLS1cbi8vIFNldCBndXR0ZXJzIG9uIGFuIGVsZW1lbnQuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVycyA6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX291dHB1dDogKFxuICAgIGJlZm9yZTogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSksXG4gICAgYWZ0ZXI6IG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlciksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChndXR0ZXJzLCAkaW5zcGVjdCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH1cbn1cblxuQG1peGluIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZ3V0dGVycygkc3Bhbik7XG59XG5cblxuLy8gR3V0dGVyXG4vLyAtLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBndXR0ZXIuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRzcGFuOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX2d1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSBvciBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuXG5AZnVuY3Rpb24gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQHJldHVybiBndXR0ZXIoJHNwYW4pO1xufVxuXG5cbi8vIEdldCBHdXR0ZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBndXR0ZXIgd2lkdGguXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXItd2lkdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVycyA6IHN1c3ktZ2V0KGd1dHRlcnMsICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgIDogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkY29udGV4dCk7XG5cbiAgQGlmICRfZ3V0dGVycyBhbmQgKCRfZ3V0dGVycyA+IDApIGFuZCBub3QoJF9ndXR0ZXIpIHtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkY29udGV4dCk7XG4gICAgJF9tYXRoOiBndXR0ZXItbWF0aCgkY29udGV4dCk7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJF9ndXR0ZXI6ICRfZ3V0dGVycyAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuICAgICAgJF9zcHJlYWQgIDogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCB3aWRlLCBzdXN5LWdldChzcHJlYWQsICRjb250ZXh0KSk7XG4gICAgICAkX2d1dHRlciAgOiBwZXJjZW50YWdlKCRfZ3V0dGVycyAvIHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkpO1xuICAgIH1cbiAgfVxuXG4gICRfZ3V0dGVyOiBpZigkX2d1dHRlciA9PSAnbm8tZ3V0dGVycycgb3IgJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcicsIG51bGwsICRfZ3V0dGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVyO1xufVxuXG5cbi8vIEdldCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGJlZm9yZSBhbmQgYWZ0ZXIgZ3V0dGVyIHZhbHVlcy5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlcnMoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICAgICAgICAgICAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlci1wb3NpdGlvbiAgIDogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICAgICAgICAgICAgOiBnZXQtZ3V0dGVyLXdpZHRoKCRjb250ZXh0KTtcblxuICAkX3JldHVybiAgICAgICAgICAgIDogKGJlZm9yZTogbnVsbCwgYWZ0ZXI6IG51bGwpO1xuXG4gIEBpZiBpcy1zcGxpdCgkY29udGV4dCkgYW5kICRfZ3V0dGVyIHtcbiAgICAkX2d1dHRlcjogJF9ndXR0ZXIgLyAyO1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChiZWZvcmU6ICRfZ3V0dGVyLCBhZnRlcjogJF9ndXR0ZXIpKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRfZ3V0dGVyLXBvc2l0aW9uOiAkX2d1dHRlcikpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBJcyBJbnNpZGVcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIGluc2lkZS5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1pbnNpZGUoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9pbnNpZGU6IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX2luc2lkZSwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gSXMgU3BsaXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgc3BsaXQuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtc3BsaXQoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9zcGxpdDogc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfc3BsaXQsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIEd1dHRlciBNYXRoXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBtYXRoIHRvIHVzZSBmb3IgZ3V0dGVyIGNhbGN1bGF0aW9uc1xuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGd1dHRlci1tYXRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkX3JldHVybiAgOiBzdXN5LWdldChtYXRoLCAkY29udGV4dCk7XG4gICRfcmV0dXJuICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpID09IGluc2lkZS1zdGF0aWMsIHN0YXRpYywgJF9yZXR1cm4pO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBJc29sYXRpb24gU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cblxuLy8gSXNvbGF0ZSBbTWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBpc29sYXRpb24gYXMgYW4gb3ZlcnJpZGUuXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AbWl4aW4gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaW5zcGVjdDogJGlzb2xhdGU7XG5cbiAgJG91dHB1dDogKFxuICAgIHB1c2g6IGlzb2xhdGUoJGlzb2xhdGUpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRpc29sYXRlKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoaXNvbGF0ZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBpc29sYXRlLW91dHB1dCgkb3V0cHV0Li4uKTtcbn1cblxuXG4vLyBJc29sYXRlIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGFuIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGguXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AZnVuY3Rpb24gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaXNvbGF0ZTogcGFyc2Utc3BhbigkaXNvbGF0ZSk7XG4gICRpc29sYXRpb246IHN1c3ktZ2V0KHNwYW4sICRpc29sYXRlKTtcblxuICBAaWYgJGlzb2xhdGlvbiBhbmQgbm90KGdldC1sb2NhdGlvbigkaXNvbGF0ZSkpIHtcbiAgICAkbmV3OiAoXG4gICAgICBzcGFuOiBudWxsLFxuICAgICAgbG9jYXRpb246ICRpc29sYXRpb24sXG4gICAgKTtcbiAgICAkaXNvbGF0ZTogbWFwLW1lcmdlKCRpc29sYXRlLCAkbmV3KTtcbiAgfVxuXG4gIEByZXR1cm4gZ2V0LWlzb2xhdGlvbigkaXNvbGF0ZSk7XG59XG5cblxuLy8gR2V0IElzb2xhdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBpc29sYXRpb24gb2Zmc2V0IHdpZHRoXG4vLyAtICRpbnB1dDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtaXNvbGF0aW9uKFxuICAkaW5wdXRcbikge1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkaW5wdXQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRpbnB1dCk7XG4gICR3aWR0aCAgICAgIDogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciBhbmQgbm90KHVuaXRsZXNzKCRsb2NhdGlvbikpIHtcbiAgICAkd2lkdGg6ICRsb2NhdGlvbjtcbiAgfSBAZWxzZSBpZiAkbG9jYXRpb24ge1xuICAgICRwdXNoOiAkbG9jYXRpb24gLSAxO1xuICAgIEBpZiAkcHVzaCA+IDAge1xuICAgICAgJHB1c2g6IG1hcC1tZXJnZSgkaW5wdXQsIChcbiAgICAgICAgc3BhbjogJHB1c2gsXG4gICAgICAgIGxvY2F0aW9uOiAxLFxuICAgICAgICBzcHJlYWQ6IHdpZGUsXG4gICAgICApKTtcbiAgICAgICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHB1c2gpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRpbnB1dCkgPT0gc3BsaXRcbiAgICAgIGFuZCBzdXN5LWdldChndXR0ZXJzLCAkaW5wdXQpID4gMCB7XG4gICAgJHdpZHRoOiBpZigkd2lkdGggPT0gbnVsbCwgZ3V0dGVycygkaW5wdXQpLCAkd2lkdGggKyBndXR0ZXJzKCRpbnB1dCkpO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGggb3IgMDtcbn1cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJvdyBTdGFydCAmIEVuZFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIEJyZWFrXG4vLyAtLS0tLVxuLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCBzaG91bGQgZm9yY2UgYSBsaW5lIGJyZWFrLlxuQG1peGluIGJyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogYm90aCkpO1xufVxuXG5cbi8vIE5vQnJlYWtcbi8vIC0tLS0tLS1cbi8vIENhbmNlbCB0aGUgYnJlYWsoKSBlZmZlY3QsIGUuZy4gd2hlbiB1c2luZyBtZWRpYSBxdWVyaWVzLlxuQG1peGluIG5vYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBub25lKSk7XG59XG5cblxuLy8gRnVsbFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8bGF5b3V0IHNob3J0aGFuZD5cbkBtaXhpbiBmdWxsKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCA6ICRjb250ZXh0O1xuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZnVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBzcGFuKGZ1bGwgb2YgcGFyc2UtZ3JpZCgkY29udGV4dCkgYnJlYWspO1xufVxuXG5cbi8vIEZpcnN0XG4vLyAtLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gZmlyc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmaXJzdCwgJGluc3BlY3QpO1xuICBAaWYgbm90KGlzLXNwbGl0KCRjb250ZXh0KSkge1xuICAgIEBpbmNsdWRlIGZsb2F0LWZpcnN0KCRmbG93KTtcbiAgfVxufVxuXG5AbWl4aW4gYWxwaGEoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGZpcnN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBMYXN0XG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBsYXN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxhc3QsICRpbnNwZWN0KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpLFxuICAgIGxhc3QtZmxvdzogc3VzeS1nZXQobGFzdC1mbG93LCAkY29udGV4dCksXG4gICAgbWFyZ2luOiBpZihpcy1zcGxpdCgkY29udGV4dCksIG51bGwsIDApLFxuICApO1xuXG4gIEBpbmNsdWRlIGZsb2F0LWxhc3QoJG91dHB1dC4uLik7XG59XG5cbkBtaXhpbiBvbWVnYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgbGFzdCgkY29udGV4dCk7XG59XG5cblxuLy8gR2V0IEVkZ2Vcbi8vIC0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgZWRnZSB2YWx1ZSBiYXNlZCBvbiBsb2NhdGlvbiwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtZWRnZShcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IHN1c3ktZ2V0KGVkZ2UsICRzcGFuKTtcblxuICBAaWYgbm90KCRlZGdlKSB7XG4gICAgJGNvdW50OiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSk7XG4gICAgJGxvY2F0aW9uOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAgICRuOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgICAkbnVtYmVyOiBpZih0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyLCB0cnVlLCBmYWxzZSk7XG4gICAgJGluZGV4OiBpZigkbnVtYmVyIGFuZCB1bml0bGVzcygkbG9jYXRpb24pLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJG4gPT0gJGNvdW50IHtcbiAgICAgICRlZGdlOiBmdWxsO1xuICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uIGFuZCAkbiBhbmQgJGluZGV4IHtcbiAgICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAgICRlZGdlOiBpZigkbiA9PSAkY291bnQsIGZ1bGwsIGZpcnN0KTtcbiAgICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uICsgJG4gLSAxID09ICRjb3VudCB7XG4gICAgICAgICRlZGdlOiBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkZWRnZSA9PSBhbHBoYSBvciAkZWRnZSA9PSBvbWVnYSB7XG4gICAgJGVkZ2U6IGlmKCRlZGdlID09IGFscGhhLCBmaXJzdCwgbGFzdCk7XG4gIH1cblxuICBAcmV0dXJuICRlZGdlO1xufVxuXG5cbi8vIEdldCBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgbG9jYXRpb24gdmFsdWUgYmFzZWQgb24gZWRnZSwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtbG9jYXRpb24oXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJG4gICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgQGlmICRlZGdlIGFuZCBub3QoJGxvY2F0aW9uKSBhbmQgdHlwZS1vZigkbikgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkbikge1xuICAgIEBpZiAkZWRnZSA9PSBmaXJzdCB7XG4gICAgICAkbG9jYXRpb246IDE7XG4gICAgfSBAZWxzZSBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRsb2NhdGlvbjogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpIC0gJG4gKyAxO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxvY2F0aW9uXG59XG4iLCIvLyBNYXJnaW4gU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cbi8vIFByZVxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW4gICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJGd1dHRlciA6IGd1dHRlcigkc3Bhbik7XG4gICRzcGFuICAgOiBzcGFuKCRzcGFuKTtcbiAgJHdpZHRoICA6IGlmKCRzcGxpdCBhbmQgJGd1dHRlciwgJHNwYW4gKyAkZ3V0dGVyLCAkc3Bhbik7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBQb3N0XG4vLyAtLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwb3N0KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwb3N0LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFB1c2hcbi8vIC0tLS1cbi8vIFNpbXBsZSBzeW5vbnltbiBmb3IgcHJlLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdXNoKFxuICAkc3BhblxuKSB7XG4gIEBpbmNsdWRlIHByZSgkc3Bhbik7XG59XG5cbi8vIFB1bGxcbi8vIC0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdWxsKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIDAgLSBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIDAgLSBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHB1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3F1aXNoXG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBzcXVpc2goXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICAgICAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcXVpc2gsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlKCRwcmUpO1xuICBAaW5jbHVkZSBwb3N0KCRwb3N0KTtcbn1cbiIsIi8vIFBhZGRpbmcgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZWZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTdWZmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3VmZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzdWZmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFBhZFxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gcGFkKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBhZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmVmaXgoJHByZSk7XG4gIEBpbmNsdWRlIHN1ZmZpeCgkcG9zdCk7XG5cbn1cbiIsIi8vIEJsZWVkIFN5bnRheFxuLy8gPT09PT09PT09PT09XG5cbi8vIEJsZWVkXG4vLyAtLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIG1hcmdpbnMsIGFuZCBlcXVhbCBwb3NpdGl2ZSBwYWRkaW5nIHRvIGNyZWF0ZSBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkKFxuICAkYmxlZWQ6IDAgZ3V0dGVyKClcbikge1xuICAkaW5zcGVjdCAgOiAkYmxlZWQ7XG4gICRvdXRwdXQgICA6IGdldC1ibGVlZCgkYmxlZWQpO1xuXG4gIEBpZiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gY29udGVudC1ib3gge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgoYm94LXNpemluZzogY29udGVudC1ib3gpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChibGVlZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cblxuLy8gQmxlZWQteFxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIGhvcml6b250YWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC14KFxuICAkYmxlZWQ6IGd1dHRlcigpXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMikgMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC14IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBCbGVlZC15XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgdmVydGljYWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC15KFxuICAkYmxlZWQ6IGlmKGZ1bmN0aW9uLWV4aXN0cyhyaHl0aG0pLCByaHl0aG0oMSksIDFlbSlcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDApKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCBudGgoJHRyYmwsIDIpIDApKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXkgb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEdldCBCbGVlZFxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmxlZWQgb3V0cHV0IHZhbHVlc1xuLy8gLSAkYmxlZWQ6IDxzcGFuPlxuQGZ1bmN0aW9uIGdldC1ibGVlZChcbiAgJGJsZWVkXG4pIHtcbiAgJGJsZWVkICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRibGVlZCkpO1xuICAkdHJibCAgICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuICAkc2hvcnQgICAgOiBudWxsO1xuICAkb3V0cHV0ICAgOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkdHJibCkge1xuICAgICR0aGlzOiBudGgoJHRyYmwsICRpKTtcbiAgICAkbmV3OiAoKTtcbiAgICAkbWFyZ2luOiBudWxsO1xuICAgICRwYWRkaW5nOiBudWxsO1xuICAgICRwYWRkaW5nLXg6IG51bGw7XG5cbiAgICBAaWYgJHRoaXMgPiAwIHtcbiAgICAgICR0aGlzOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogJHRoaXMpKTtcbiAgICAgICRtYXJnaW46IHNwYW4oJHRoaXMpO1xuICAgICAgJHBhZGRpbmc6ICRtYXJnaW47XG4gICAgICAkcGFkZGluZy14OiAkcGFkZGluZztcbiAgICB9XG5cbiAgICBAaWYgJG1hcmdpbiBhbmQgJG1hcmdpbiA+IDAge1xuICAgICAgJG1hcmdpbjogLSAkbWFyZ2luO1xuXG4gICAgICBAaWYgaXMtaW5zaWRlKCR0aGlzKSB7XG4gICAgICAgICRndXR0ZXI6IGd1dHRlcigkdGhpcyk7XG4gICAgICAgICRqb2luOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCRwYWRkaW5nLCAkZ3V0dGVyKSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAkcGFkZGluZy14OiBpZigkam9pbiBhbmQgJHBhZGRpbmcgPiAwLCAkcGFkZGluZyArICRndXR0ZXIsICRwYWRkaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMiB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAzIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDQge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgJG5ldyk7XG4gIH1cblxuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRvdXRwdXQge1xuICAgICRvdXRwdXQ6IGlmKCR2YWx1ZSA9PSAwLCBtYXAtbWVyZ2UoJG91dHB1dCwgKCRwcm9wOiBudWxsKSksICRvdXRwdXQpO1xuICB9XG5cbiAgQHJldHVybiBibGVlZC1zaG9ydGhhbmQoJG91dHB1dCk7XG59XG5cbi8vIEJsZWVkIFNob3J0aGFuZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDb252ZXJ0IGJsZWVkIG91dHB1dCBpbnRvIHNob3J0aGFuZCB3aGVuIHBvc3NpYmxlLlxuLy8gLSAkYmxlZWQ6IDxvdXRwdXQgbWFwPlxuQGZ1bmN0aW9uIGJsZWVkLXNob3J0aGFuZChcbiAgJGJsZWVkXG4pIHtcbiAgJG1hcmdpbjogKCk7XG4gICRwYWRkaW5nOiAoKTtcbiAgJHJldHVybjogKCk7XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRibGVlZCB7XG4gICAgQGlmIHN0ci1pbmRleCgka2V5LCBtYXJnaW4pIHtcbiAgICAgICRtYXJnaW46IG1hcC1tZXJnZSgkbWFyZ2luLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfSBAZWxzZSBpZiBzdHItaW5kZXgoJGtleSwgcGFkZGluZykgPiAwIHtcbiAgICAgICRwYWRkaW5nOiBtYXAtbWVyZ2UoJHBhZGRpbmcsICgka2V5OiAkdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAkcHJvcHM6IChcbiAgICBtYXJnaW46ICRtYXJnaW4sXG4gICAgcGFkZGluZzogJHBhZGRpbmcsXG4gICk7XG5cbiAgQGVhY2ggJG5hbWUsICRtYXAgaW4gJHByb3BzIHtcbiAgICAkZm91cjogaWYobGVuZ3RoKG1hcC1rZXlzKCRtYXApKSA9PSA0LCB0cnVlLCBmYWxzZSk7XG4gICAgJG51bGw6IGlmKGluZGV4KG1hcC12YWx1ZXMoJG1hcCksIG51bGwpLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJGZvdXIgYW5kIG5vdCgkbnVsbCkge1xuICAgICAgJHRvcDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tdG9wJyk7XG4gICAgICAkcmlnaHQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXJpZ2h0Jyk7XG4gICAgICAkYm90dG9tOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1ib3R0b20nKTtcbiAgICAgICRsZWZ0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1sZWZ0Jyk7XG5cbiAgICAgICR0YjogaWYoJHRvcCA9PSAkYm90dG9tLCAkdG9wLCBudWxsKTtcbiAgICAgICRybDogaWYoJHJpZ2h0ID09ICRsZWZ0LCAkcmlnaHQsIG51bGwpO1xuICAgICAgJGFsbDogaWYoJHRiID09ICRybCwgJHRiLCBudWxsKTtcblxuICAgICAgJG5ldzogaWYoJGFsbCwgJGFsbCwgbnVsbCk7XG5cbiAgICAgIEBpZiBub3QoJG5ldykge1xuICAgICAgICBAaWYgJHRiIGFuZCAkcmwge1xuICAgICAgICAgICRuZXc6ICR0YiAkcmw7XG4gICAgICAgIH0gQGVsc2UgaWYgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRybCAkYm90dG9tO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRyaWdodCAkYm90dG9tICRsZWZ0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJG5hbWU6ICRuZXcpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAkbWFwKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBCcmVha3BvaW50IEludGVncmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW1lZGlhOiAoKSAhZGVmYXVsdDtcbiRzdXN5LW1lZGlhLWZhbGxiYWNrOiBmYWxzZSAhZGVmYXVsdDtcblxuJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICgpO1xuXG5cbi8vIFN1c3kgQnJlYWtwb2ludFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGFuZ2UgZ3JpZHMgYXQgZGlmZmVyZW50IG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRzLlxuLy8gLSAkcXVlcnkgICAgIDogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPiB8IDxtYXA+XG4vLyAtICRsYXlvdXQgICAgOiA8c2V0dGluZ3M+XG4vLyAtICRuby1xdWVyeSAgOiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1icmVha3BvaW50KFxuICAkcXVlcnksXG4gICRsYXlvdXQ6IGZhbHNlLFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1yb3V0ZXIoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAaWYgJGxheW91dCB7XG4gICAgICBAaW5jbHVkZSB3aXRoLWxheW91dCgkbGF5b3V0KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gU3VzeSBNZWRpYVxuLy8gLS0tLS0tLS0tLVxuLy8gLSAkcXVlcnk6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT5cbi8vIC0gJG5vLXF1ZXJ5OiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1tZWRpYShcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgJG9sZC1jb250ZXh0OiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgJG5hbWU6IGlmKG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkcXVlcnkpLCAkcXVlcnksIG51bGwpO1xuICAkcXVlcnk6IHN1c3ktZ2V0LW1lZGlhKCRxdWVyeSk7XG4gICRxdWVyeTogc3VzeS1wYXJzZS1tZWRpYSgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkcXVlcnksICRuYW1lKTtcblxuICBAaWYgJG5vLXF1ZXJ5IGFuZCB0eXBlLW9mKCRuby1xdWVyeSkgIT0gc3RyaW5nIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSB7XG4gICAgQG1lZGlhICN7c3VzeS1yZW5kZXItbWVkaWEoJHF1ZXJ5KX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJG5vLXF1ZXJ5KSA9PSBzdHJpbmcge1xuICAgICAgI3skbm8tcXVlcnl9ICYge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJG9sZC1jb250ZXh0LCAkY2xlYW46IHRydWUpO1xufVxuXG5cbi8vIE1lZGlhIFJvdXRlclxuLy8gLS0tLS0tLS0tLS0tXG4vLyBSb3V0IG1lZGlhIGFyZ3VtZW50cyB0byB0aGUgY29ycmVjdCBtaXhpbi5cbkBtaXhpbiBzdXN5LW1lZGlhLXJvdXRlcihcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChicmVha3BvaW50LCAobWl4aW46IGJyZWFrcG9pbnQpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktbWVkaWEoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFVwZGF0ZSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBTZXQgdGhlIG5ldyBtZWRpYSBjb250ZXh0XG5AbWl4aW4gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcXVlcnksXG4gICRuYW1lOiBudWxsLFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJHF1ZXJ5OiBtYXAtbWVyZ2UoKG5hbWU6ICRuYW1lKSwgJHF1ZXJ5KTtcblxuICBAaWYgJGNsZWFuIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogJHF1ZXJ5ICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiBtYXAtbWVyZ2UoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRxdWVyeSkgIWdsb2JhbDtcbiAgfVxufVxuXG5cbi8vIE1lZGlhIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgZnVsbCBtZWRpYSBjb250ZXh0LCBvciBhIHNpbmdsZSBtZWRpYSBwcm9wZXJ0eSAoZS5nLiBtaW4td2lkdGgpXG5AZnVuY3Rpb24gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcHJvcGVydHk6IGZhbHNlXG4pIHtcbiAgQGlmICRwcm9wZXJ0eSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcHJvcGVydHkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICB9XG59XG5cblxuLy8gR2V0IE1lZGlhXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBhIG5hbWVkIG1lZGlhLXF1ZXJ5IGZyb20gJHN1c3ktbWVkaWEuXG4vLyAtICRuYW1lOiA8a2V5PlxuQGZ1bmN0aW9uIHN1c3ktZ2V0LW1lZGlhKFxuICAkbmFtZVxuKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJG5hbWUpIHtcbiAgICAkbWFwLXZhbHVlOiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCAkbmFtZSk7XG4gICAgQGlmICgkbmFtZSA9PSAkbWFwLXZhbHVlKSB7XG4gICAgICAkbmFtZTogJG1hcC12YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRuYW1lOiBzdXN5LWdldC1tZWRpYSgkbWFwLXZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuYW1lO1xufVxuXG5cbi8vIFJlbmRlciBNZWRpYVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBCdWlsZCBhIG1lZGlhLXF1ZXJ5IHN0cmluZyBmcm9tIHZhcmlvdXMgbWVkaWEgc2V0dGluZ3NcbkBmdW5jdGlvbiBzdXN5LXJlbmRlci1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG91dHB1dDogbnVsbDtcbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHF1ZXJ5IHtcbiAgICAkc3RyaW5nOiBudWxsO1xuXG4gICAgQGlmICRwcm9wZXJ0eSA9PSBtZWRpYSB7XG4gICAgICAkc3RyaW5nOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RyaW5nOiAnKCN7JHByb3BlcnR5fTogI3skdmFsdWV9KSc7XG4gICAgfVxuXG4gICAgJG91dHB1dDogaWYoJG91dHB1dCwgJyN7JG91dHB1dH0gYW5kICN7JHN0cmluZ30nLCAkc3RyaW5nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuXG4vLyBQYXJzZSBNZWRpYVxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBwYXJzZWQgbWVkaWEtcXVlcnkgc2V0dGluZ3MgYmFzZWQgb24gc2hvcnRoYW5kXG5AZnVuY3Rpb24gc3VzeS1wYXJzZS1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG1xOiBudWxsO1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09IG1hcCB7XG4gICAgJG1xOiAkcXVlcnk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IG51bWJlciB7XG4gICAgJG1xOiAobWluLXdpZHRoOiAkcXVlcnkpO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBsaXN0IGFuZCBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gbnVtYmVyIHtcbiAgICAgICRtcTogKFxuICAgICAgICBtaW4td2lkdGg6IG1pbigkcXVlcnkuLi4pLFxuICAgICAgICBtYXgtd2lkdGg6IG1heCgkcXVlcnkuLi4pLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtcTogKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkbXE6IChtZWRpYTogJyN7JHF1ZXJ5fScpO1xuICB9XG5cbiAgQHJldHVybiAkbXE7XG59XG4iLCIvKlxuKiBTY3V0LCBhIGNvbGxlY3Rpb24gb2YgU2FzcyB1dGlsaXRpZXNcbiogdG8gZWFzZSBhbmQgaW1wcm92ZSBvdXIgaW1wbGVtZW50YXRpb25zIG9mIGNvbW1vbiBzdHlsZS1jb2RlIHBhdHRlcm5zLlxuKiB2MS40LjBcbiogRG9jcyBhdCBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dFxuKi9cblxuQG1peGluIHNjdXQtY2xlYXJmaXgge1xuXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jbGVhcmZpeCB7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG59XG5AbWl4aW4gc2N1dC1saXN0LXVuc3R5bGVkKFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZmxvYXRlZCAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRkaXI6IGxlZnQsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcblxuICAmID4gbGkge1xuICAgIGZsb2F0OiAkZGlyO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLSN7JGRpcn06ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWZsb2F0ZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZDtcbn1cblxuQGZ1bmN0aW9uIHNjdXQtYXV0b09yVmFsdWUgKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gYSBvciAkdmFsID09IGF1dG8ge1xuICAgIEByZXR1cm4gYXV0bztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LWNvb3JkcyAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgJHRvcDogbnRoKCRjb29yZGluYXRlcywgMSk7XG4gICRyaWdodDogbnRoKCRjb29yZGluYXRlcywgMik7XG4gICRib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpO1xuICAkbGVmdDogbnRoKCRjb29yZGluYXRlcywgNCk7XG5cbiAgQGlmICR0b3AgIT0gbiB7XG4gICAgdG9wOiBzY3V0LWF1dG9PclZhbHVlKCR0b3ApO1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbiB7XG4gICAgcmlnaHQ6IHNjdXQtYXV0b09yVmFsdWUoJHJpZ2h0KTtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBuIHtcbiAgICBib3R0b206IHNjdXQtYXV0b09yVmFsdWUoJGJvdHRvbSk7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG4ge1xuICAgIGxlZnQ6IHNjdXQtYXV0b09yVmFsdWUoJGxlZnQpO1xuICB9XG5cbn1cbkBmdW5jdGlvbiBzY3V0LXN0cmlwLXVuaXQgKFxuICAkbnVtXG4pIHtcblxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LWVtIChcbiAgJHBpeGVscyxcbiAgJGJhc2U6ICRzY3V0LWVtLWJhc2Vcbikge1xuXG4gIC8vICRiYXNlIGNvdWxkIGJlIGluIGVtIG9yIHB4IChubyB1bml0ID0gcHgpLlxuICAvLyBBZGp1c3QgYWNjb3JkaW5nbHkgdG8gY3JlYXRlIGEgJGRpdmlzb3IgdGhhdFxuICAvLyBzZXJ2ZXMgYXMgY29udGV4dCBmb3IgJHBpeGVscy5cbiAgJG11bHRpcGxpZXI6IGlmKHVuaXQoJGJhc2UpID09IGVtLCAxNiwgMSk7XG4gICRkaXZpc29yOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UpICogJG11bHRpcGxpZXI7XG5cbiAgJGVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tZW1zOiAoc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJGRpdmlzb3IpICogMWVtO1xuICAgICRlbS12YWxzOiBhcHBlbmQoJGVtLXZhbHMsICR2YWwtaW4tZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJGVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJGVtLXZhbHM7XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtcmVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1yZW0gKFxuICAkcGl4ZWxzXG4pIHtcblxuICAkcmVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcmVtczogc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJHNjdXQtcmVtLWJhc2UgKiAxcmVtO1xuICAgICRyZW0tdmFsczogYXBwZW5kKCRyZW0tdmFscywgJHZhbC1pbi1yZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHJlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJHJlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcmVtLXZhbHM7XG4gIH1cblxufVxuQG1peGluIHNjdXQtYm9yZGVyIChcbiAgJHN0eWxlLFxuICAkc2lkZXM6IG4geVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2lkZXMpID09IDIge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkc2lkZXMpID09IDQge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAzKSAhPSBuIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDQpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJTY3V0LWJvcmRlciByZXF1aXJlcyBhICRzaWRlcyBhcmd1bWVudCBvZiAyIG9yIDQgdmFsdWVzLlwiXG4gIH1cblxufVxuQG1peGluIHNjdXQtY2lyY2xlIChcbiAgJHNpemUsXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgQGlmICRjb2xvciA9PSBpbmhlcml0IHtcbiAgICAvLyBJZiB1c2VyIHdhbnRzIHRvIGluaGVyaXQgdGhlIGNvbG9yLFxuICAgIC8vIHRha2UgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgYm9yZGVyXG4gICAgLy8gY29sb3IgZGVmYXVsdHMgdG8gdGhlIHRleHQgY29sb3Igb2YgdGhlIGVsZW1lbnQuXG4gICAgYm9yZGVyLXdpZHRoOiAkc2l6ZSAvIDI7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgd2lkdGg6IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwganVzdCB1c2UgYmFja2dyb3VuZC1jb2xvci5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICB3aWR0aDogJHNpemU7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY29sb3Itc3dhcCAoXG4gICRvZmYsXG4gICRvbixcbiAgJGR1cmF0aW9uOiAwLFxuICAkYmc6IGZhbHNlXG4pIHtcblxuICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBudWxsO1xuICAkb2ZmLWlzLWxpc3Q6IHR5cGUtb2YoJG9mZikgPT0gbGlzdDtcbiAgJG9uLWlzLWxpc3Q6IHR5cGUtb2YoJG9uKSA9PSBsaXN0O1xuXG4gIC8vIElmICRvZmYgSVMgYSBsaXN0LFxuICAvLyBhc3NpZ24gY29sb3IgYW5kIGJhY2tncm91bmQtY29sb3IuXG4gIEBpZiAkb2ZmLWlzLWxpc3Qge1xuICAgIGNvbG9yOiBudGgoJG9mZiwgMSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvZmYsIDIpO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3IsIGNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgVFJVRSxcbiAgLy8gYXNzaWduIGJhY2tncm91bmQtY29sb3IuXG4gIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvZmYtaXMtbGlzdCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIEZBTFNFLFxuICAvLyBhc3NpZ24gY29sb3IuXG4gIEBlbHNlIHtcbiAgICBjb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBjb2xvcjtcbiAgfVxuXG4gIC8vIE9ubHkgc2V0LXVwIHRyYW5zaXRpb24gaWYgJGR1cmF0aW9uICE9IDAuXG4gIEBpZiAkZHVyYXRpb24gIT0gMCB7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogJHRyYW5zaXRpb24tcHJvcGVydGllcztcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAkZHVyYXRpb247XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcblxuICAgIC8vICRvbiBpcyB0cmVhdGVkIHRoZSBzYW1lIGFzICRvZmYsIGFib3ZlLlxuICAgIEBpZiAkb24taXMtbGlzdCB7XG4gICAgICBjb2xvcjogbnRoKCRvbiwgMSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9uLCAyKTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb24taXMtbGlzdCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9uO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkb247XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWhkLWJwIChcbiAgJHJhdGlvOiAxLjNcbikge1xuXG4gIEBtZWRpYSAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogKCRyYXRpbyAvIDEpKSxcbiAgICAgICAgICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gICAgICAgICAobWluLXJlc29sdXRpb246IChyb3VuZCg5NiAqICRyYXRpbykgKiAxZHBpKSkge1xuICAgIEBjb250ZW50O1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGlkZS12aXN1YWxseSB7XG5cbiAgYm9yZGVyOiAwO1xuICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG5cbn1cblxuJXNjdXQtaGlkZS12aXN1YWxseSB7XG4gIEBpbmNsdWRlIHNjdXQtaGlkZS12aXN1YWxseTtcbn1cbkBtaXhpbiBzY3V0LWltYWdlLXJlcGxhY2Uge1xuXG4gIHRleHQtaW5kZW50OiAxMDIlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuXG59XG5cbiVzY3V0LWltYWdlLXJlcGxhY2Uge1xuICBAaW5jbHVkZSBzY3V0LWltYWdlLXJlcGxhY2U7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1yZW0gYW5kIHNjdXQtc3RyaXAtdW5pdFxuXG5AbWl4aW4gc2N1dC1yZW0tZmFsbGJhY2sgKFxuICAkcGl4ZWxzLFxuICAkcHJvcGVydHk6IGZvbnQtc2l6ZVxuKSB7XG5cbiAgJHB4LXZhbHM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1weDogc2N1dC1zdHJpcC11bml0KCR2YWwpICogMXB4O1xuICAgICRweC12YWxzOiBhcHBlbmQoJHB4LXZhbHMsICR2YWwtaW4tcHgpO1xuICB9XG4gICRyZW0tdmFsczogc2N1dC1yZW0oJHBpeGVscyk7XG5cbiAgI3skcHJvcGVydHl9OiAkcHgtdmFscztcbiAgI3skcHJvcGVydHl9OiAkcmVtLXZhbHM7XG5cbn1cbkBtaXhpbiBzY3V0LXJlc2V0LWJvcmRlci1ib3gge1xuICAvLyBNYWtlIGV2ZXJ5dGhpbmcgYSBib3JkZXItYm94LCBiZWNhdXNlIHdoeSBub3Q/XG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYW50aWFsaWFzIHtcbiAgLy8gQW50aWFsaWFzIVxuICBib2R5IHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1zZW1hbnRpY2l6ZSB7XG4gIC8vIE1ha2UgaGVhZGVycyBhbmQgPGI+IHNlbWFudGljLCBub3QgcHJlc2VudGF0aW9uYWwuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcG9pbnRlciB7XG4gIC8vIENsaWNrYWJsZSBmb3JtIGVsZW1lbnRzIHNob3VsZCBoYXZlIGEgcG9pbnRlci5cbiAgbGFiZWwsXG4gIHNlbGVjdCxcbiAgb3B0aW9uLFxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1mb3JtIHtcbiAgZmllbGRzZXQge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1idXR0b24ge1xuICAvLyBSZXNldCBkZWZhdWx0IGJ1dHRvbiBzdHlsZXMsIHdoaWNoIGFyZSBuZXZlciB1c2VkLlxuICBidXR0b24sXG4gIFt0eXBlPVwiYnV0dG9uXCJdLFxuICBbdHlwZT1cInN1Ym1pdFwiXSxcbiAgW3R5cGU9XCJyZXNldFwiXSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wYXJhZ3JhcGgge1xuICAvLyBTb21lIHBhcmFncmFwaCBtYXJnaW5zIGp1c3QgZ2V0IGluIHRoZSB3YXkuXG4gIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICBwOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1tZWRpYSB7XG4gIC8vIFlvdSB3YW50IHRoZXNlIGVsZW1lbnRzIGZsdWlkLCBwcm9iYWJseS5cbiAgaW1nLFxuICB2aWRlbyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1maWd1cmUge1xuICAvLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zLlxuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG4vLyBDYWxsIHRoZW0gYWxsLCBtaW51cyBleGNsdXNpb25zIVxuQG1peGluIHNjdXQtcmVzZXQgKCRleGNsdWRlOiBmYWxzZSkge1xuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBib3JkZXItYm94KSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYm9yZGVyLWJveDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBhbnRpYWxpYXMpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1hbnRpYWxpYXM7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgc2VtYW50aWNpemUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1zZW1hbnRpY2l6ZTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwb2ludGVyKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcG9pbnRlcjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmb3JtKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZm9ybTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBidXR0b24pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1idXR0b247XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcGFyYWdyYXBoKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcGFyYWdyYXBoO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIG1lZGlhKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtbWVkaWE7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZmlndXJlKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZmlndXJlO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXNlbGVjdGVkIChcbiAgJGFjdGl2ZTogZmFsc2Vcbikge1xuXG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXRyaWFuZ2xlIChcbiAgJGRpcmVjdGlvbjogcmlnaHQsXG4gICRzaXplOiAwLjc1ZW0sXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuICAvLyBGb3IgaW1wcm92ZWQgYXBwZWFyYW5jZSBpbiBzb21lIFdlYmtpdCBicm93c2Vyc1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG5cbiAgLy8gU2V0IHVwIHNvbWUgdmFyaWFibGVzXG4gICR3aWR0aDogbnVsbDtcbiAgJGhlaWdodDogbnVsbDtcbiAgJGJvcmRlci13aWR0aHM6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJHNpemUpID09IGxpc3Qge1xuICAgICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgICAkaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkd2lkdGg6ICRzaXplO1xuICAgICRoZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgLy8gRm9yIHVwIGFuZCBkb3duLCB3aWR0aCBnZXRzIHR3byBib3JkZXJzIGJ1dCBoZWlnaHQgb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIHNlY29uZCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAkaGVpZ2h0ICgkd2lkdGggLyAyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIC8vIEZvciByaWdodCBhbmQgbGVmdCwgaGVpZ2h0IGdldHMgdHdvIGJvcmRlcnMgYnV0IHdpZHRoIG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBmaXJzdCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICR3aWR0aDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gRm9yIHJpZ2h0IHRyaWFuZ2xlcyAodGhlIHJlc3QpLCBib3RoIHNpZGVzIGdldCB0d28gYm9yZGVycyxcbiAgICAvLyBzbyBkaXZpZGUgYm90aCBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgKCR3aWR0aCAvIDIpO1xuICB9XG5cbiAgYm9yZGVyLXdpZHRoOiAkYm9yZGVyLXdpZHRocztcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcblxuXG4gIC8vIFNUQU5EQVJEIFRSSUFOR0xFU1xuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gQ09STkVSIFRSSUFOR0xFU1xuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHRvcC1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gdG9wLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHRvcC1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXRyaWFuZ2xlIHtcbiAgQGluY2x1ZGUgc2N1dC10cmlhbmdsZTtcbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1hYnNvbHV0ZWx5IChcbiAgJGRpbWVuc2lvbnNcbikge1xuXG4gICR3aWR0aDogbnRoKCRkaW1lbnNpb25zLCAxKTtcbiAgJGhlaWdodDogbnRoKCRkaW1lbnNpb25zLCAyKTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICR3aWR0aCAhPSBuIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogKC0kd2lkdGggLyAyKTtcbiAgfVxuXG4gIEBpZiAkaGVpZ2h0ICE9IG4ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAoLSRoZWlnaHQgLyAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYmxvY2sgKFxuICAkbWF4LXdpZHRoOiBmYWxzZVxuKSB7XG5cbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgQGlmICRtYXgtd2lkdGgge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNlbnRlci1ibG9jayB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLWJsb2NrO1xufVxuXG5AbWl4aW4gc2N1dC1jZW50ZXItdHJhbnNmb3JtIChcbiAgJGF4aXM6IGZhbHNlIC8vIG9yIHggb3IgeVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkYXhpcyAhPSB4IHtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gIH1cblxuICBAaWYgJGF4aXMgIT0geSB7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxuXG4gICR0cmFuc2xhdGUtdmFsOiBudWxsO1xuXG4gIEBpZiBub3QoJGF4aXMpIHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHgge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHkge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG5cbiAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICAtbXMtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS14IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHgpO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbkBtaXhpbiBzY3V0LWZpbGwgKFxuICAkd2lkdGgtaGVpZ2h0OiBmYWxzZVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIEBpZiAkd2lkdGgtaGVpZ2h0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWZpbGwge1xuICBAaW5jbHVkZSBzY3V0LWZpbGw7XG59XG5AbWl4aW4gc2N1dC1saXN0LWN1c3RvbSAoXG4gICRjb250ZW50OiBcIlxcMjAyMlwiLFxuICAkbWFya2VyLXdpZHRoOiAwLjc1ZW0sXG4gICRwYWQ6IDAsXG4gICRuby1tYXJnaW46IGZhbHNlXG4pIHtcblxuICAkY29udGVudC12YWw6IG51bGw7XG4gICRjb3VudGVyOiBpbmRleCgkY29udGVudCwgY291bnQpO1xuICBAaWYgJGNvdW50ZXIge1xuICAgIEBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDMge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciwgbnRoKCRjb250ZW50LCAzKSludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIGlmIGxlbmd0aCgkY29udGVudCkgPT0gMiB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlcik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkY29udGVudC12YWw6ICRjb250ZW50O1xuICB9XG5cbiAgcGFkZGluZy1sZWZ0OiAkbWFya2VyLXdpZHRoICsgJHBhZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmID4gbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgJGNvdW50ZXIge1xuICAgICAgY291bnRlci1pbmNyZW1lbnQ6IHNjdXRsaXN0Y291bnRlcjtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJGNvbnRlbnQtdmFsO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAtJG1hcmtlci13aWR0aDtcbiAgICAgIHdpZHRoOiAkbWFya2VyLXdpZHRoO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtZmxvYXRlZGAsIHdoaWNoIGRlcGVuZHMgaW4gdHVybiBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZGl2aWRlZCAoXG4gICRkaXZpZGVyOiBcInxcIixcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGRpcjogbGVmdCxcbiAgJGhlaWdodDogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkKCRkaXI6ICRkaXIsICRuby1tYXJnaW46ICRuby1tYXJnaW4pO1xuXG4gICRwc2V1ZG86IGlmKCRkaXIgPT0gbGVmdCwgJ2JlZm9yZScsICdhZnRlcicpO1xuXG4gIC8vIElmIGFuIGV4cGxpY2l0IGhlaWdodCBpcyBwYXNzZWQsXG4gIC8vIHRoaW5ncyBhcmUgZGlmZmVyZW50OiBBbGwgPGxpPnNcbiAgLy8gbmVlZCB0aGUgcHNldWRvLWVsZW1lbnQgKHRvIGZvcmNlIGhlaWdodCksXG4gIC8vIGJ1dCB0aGUgZmlyc3QncyBtdXN0IGJlIGhpZGRlbi5cblxuICBAaWYgJGhlaWdodCB7XG4gICAgJiA+IGxpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gICAgJiA+IGxpOiN7JHBzZXVkb30ge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgICYgPiBsaTpmaXJzdC1jaGlsZDojeyRwc2V1ZG99IHtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAmID4gbGkgKyBsaTojeyRwc2V1ZG99IHtcbiAgICBAaWYgbm90KCRoZWlnaHQpIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2U7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWJhciB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkO1xufVxuXG4lc2N1dC1saXN0LWJyZWFkY3J1bWIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZChcIi9cIik7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1pbmxpbmUgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtaW5saW5lIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWlubGluZTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LXB1bmN0dWF0ZWQgKFxuICAkZGl2aWRlcjogXCIsIFwiLFxuICAkZGlzcGxheTogaW5saW5lLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiAkZGlzcGxheTtcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1jb21tYSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1wdW5jdHVhdGVkO1xufVxuQG1peGluIHNjdXQtbWFyZ2luIChcbiAgJG1hcmdpblxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAxIGFuZCAkbWFyZ2luICE9IG4ge1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW47XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDIge1xuICAgICRtYXJnaW4teTogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgIEBpZiAkbWFyZ2luLXkgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXk7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAzIHtcbiAgICAkbWFyZ2luLXktdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi15LWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgIEBpZiAkbWFyZ2luLXktdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15LXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teS1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gNCB7XG4gICAgJG1hcmdpbi10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXJpZ2h0OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICAkbWFyZ2luLWxlZnQ6IG50aCgkbWFyZ2luLCA0KTtcbiAgICBAaWYgJG1hcmdpbi10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tcmlnaHQgIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4tcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1sZWZ0ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4tbGVmdDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtcGFkZGluZyAoXG4gICRwYWRkaW5nXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAxIGFuZCAkcGFkZGluZyAhPSBuIHtcbiAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAyIHtcbiAgICAkcGFkZGluZy15OiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgQGlmICRwYWRkaW5nLXkgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMyB7XG4gICAgJHBhZGRpbmcteS10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy15LWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICBAaWYgJHBhZGRpbmcteS10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteS10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXktYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDQge1xuICAgICRwYWRkaW5nLXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy1yaWdodDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgJHBhZGRpbmctbGVmdDogbnRoKCRwYWRkaW5nLCA0KTtcbiAgICBAaWYgJHBhZGRpbmctdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXJpZ2h0ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmctcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmctYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctbGVmdCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmctbGVmdDtcbiAgICB9XG4gIH1cbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtYWJzb2x1dGUgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1hYnNvbHV0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtYWJzb2x1dGU7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWZpeGVkIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogZml4ZWQ7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtZml4ZWQge1xuICBAaW5jbHVkZSBzY3V0LWZpeGVkO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1yZWxhdGl2ZSAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5AbWl4aW4gc2N1dC1yYXRpby1ib3ggKFxuICAkcmF0aW86IDEvMVxuKSB7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFRoZSBjb250YWluZXIncyBoZWlnaHQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVcbiAgLy8gY29udGFpbmVyJ3Mgd2lkdGgsIGlzIHNldCBieSBhc3NpZ25pbmdcbiAgLy8gcGFkZGluZy10b3AgdG8gYSBwc2V1ZG8tZWxlbWVudC5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHBhZGRpbmctdG9wOiAoMSAvICRyYXRpbykgKiAxMDAlO1xuICB9XG5cbn1cblxuJXNjdXQtcmF0aW8tYm94IHtcbiAgQGluY2x1ZGUgc2N1dC1yYXRpby1ib3g7XG59XG5AbWl4aW4gc2N1dC1zaXplKFxuICAkc2l6ZVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2l6ZSkgPT0gMSB7XG4gICAgd2lkdGg6ICAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkc2l6ZSkgPT0gMiB7XG4gICAgd2lkdGg6ICBudGgoJHNpemUsIDEpO1xuICAgIGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogLSRoZWlnaHQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgI3skd3JhcHBlcn06YWZ0ZXIsXG4gICN7JGZvb3Rlcn0ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxuXG59XG5cbi8vIGRlcHJlY2F0ZWRcbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXIgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pe1xuICBAaW5jbHVkZSBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQoJGhlaWdodCwgJHdyYXBwZXIsICRmb290ZXIpO1xufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1mbHVpZCAoXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAjeyRmb290ZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgaGVpZ2h0OiAxcHg7XG4gIH1cblxufVxuQG1peGluIHNjdXQtdmNlbnRlci1pYiAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgLy8gVGhlIGlubmVyIGVsZW1lbnQgaXMgdmVydGljYWxseSBjZW50ZXJlZFxuICAvLyBieSBtaWRkbGUtYWxpZ25pbmcgaXQgd2l0aCBhbiBpbmxpbmUgcHNldWRvLWVsZW1lbnRcbiAgLy8gd2hvc2UgaGVpZ2h0IGlzIDEwMCUuXG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIC8vIEEgc21hbGwgbmVnYXRpdmUgcmlnaHQgbWFyZ2luIGlzIHNldFxuICAgIC8vIHRvIGFjY291bnQgZm9yIHRoZSBkZWZhdWx0XG4gICAgLy8gd29yZC1zcGFjaW5nIG9mIGlubGluZS1ibG9jay5cbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1ZW07XG4gIH1cblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdmNlbnRlci1pYiB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci1pYjtcbn1cblxuQG1peGluIHNjdXQtdmNlbnRlci1saCAoXG4gICRoZWlnaHRcbikge1xuXG4gIGhlaWdodDogJGhlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWlnaHQ7XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItdGQgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIGRpc3BsYXk6IHRhYmxlO1xuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuXG4lc2N1dC12Y2VudGVyLXRkIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXRkO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtY2VudGVyLXRyYW5zZm9ybVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLXR0ICgpIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG4lc2N1dC12Y2VudGVyLXR0IHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXR0O1xufVxuLy8gc3BhY2VcbiRzY3V0LXNwYWNlOiBcIlxcMDAyMFwiO1xuLy8gbm9uLWJyZWFraW5nIHNwYWNlXG4kc2N1dC1uYnNwOiBcIlxcMDBhMFwiO1xuXG4vLyBxdW90YXRpb24gbWFya1xuJHNjdXQtcXVvdDogXCJcXDAwMjJcIjtcbi8vIGxlZnQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1sc3F1bzogXCJcXDIwMThcIjtcbi8vIHJpZ2h0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtcnNxdW86IFwiXFwyMDE5XCI7XG4vLyBsZWZ0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtbGRxdW86IFwiXFwyMDFDXCI7XG4vLyByaWdodCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LXJkcXVvOiBcIlxcMjAxRFwiO1xuLy8gbGVmdCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxzYXF1bzogXCJcXDIwMzlcIjtcbi8vIHJpZ2h0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcnNhcXVvOiBcIlxcMjAzQVwiO1xuLy8gbGVmdCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxhcXVvOiBcIlxcMDBhYlwiO1xuLy8gcmlnaHQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yYXF1bzogXCJcXDAwYmJcIjtcblxuLy8gZW0gZGFzaCAobXV0dG9uKVxuJHNjdXQtbWRhc2g6IFwiXFwyMDE0XCI7XG4vLyBlbiBkYXNoIChudXQpXG4kc2N1dC1uZGFzaDogXCJcXDIwMTNcIjtcbi8vIGh5cGhlblxuJHNjdXQtaHlwaGVuOiBcIlxcMjAxMFwiO1xuXG4vLyBhbXBlcnNhbmRcbiRzY3V0LWFtcDogXCJcXDAwMjZcIjtcbi8vIGdyZWF0ZXIgdGhhblxuJHNjdXQtZ3Q6IFwiXFwwMDNlXCI7XG4vLyBsZXNzIHRoYW5cbiRzY3V0LWx0OiBcIlxcMDAzY1wiO1xuLy8gdGltZXNcbiRzY3V0LXRpbWVzOiBcIlxcMDBEN1wiO1xuLy8gYmlnIHRpbWVzXG4kc2N1dC1iaWd0aW1lczogXCJcXDI3MTVcIjtcbi8vIGNoZWNrbWFya1xuJHNjdXQtY2hlY2ttYXJrOiBcIlxcMjcxM1wiO1xuXG4vLyBzZWN0aW9uIHNpZ24gKGRvdWJsZSBTLCBodXJyaWNhbmUsIHNlY3Rpb25hbCBzeW1ib2wsIHRoZSBsZWdhbCBkb3VnaG51dCwgc2lnbnVtIHNlY3Rpb25pcylcbiRzY3V0LXNlY3Q6IFwiXFwwMGE3XCI7XG4vLyBwYXJhZ3JhcGggc3ltYm9sIChwaWxjcm93KVxuJHNjdXQtcGFyYTogXCJcXDAwYjZcIjtcblxuLy8gbWlkZG90IChpbnRlcnB1bmN0LCBpbnRlcnBvaW50KVxuJHNjdXQtbWlkZG90OiBcIlxcMDBiN1wiO1xuLy8gby1zbGFzaCAoc2xhc2hlZCBvKVxuJHNjdXQtb3NsYXNoOiBcIlxcMDBmOFwiO1xuLy8gYnVsbGV0XG4kc2N1dC1idWxsOiBcIlxcMjAyMlwiO1xuLy8gd2hpdGUgYnVsbGV0XG4kc2N1dC13aGlidWxsOiBcIlxcMjVFNlwiO1xuLy8gaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtaGVsbGlwOiBcIlxcMjAyNlwiO1xuLy8gdmVydGljYWwgZWxsaXBzaXNcbiRzY3V0LXZlbGxpcDogXCJcXDIyRUVcIjtcbi8vIG1pZGxpbmUgaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtbWlkaGVsbGlwOiBcIlxcMjJFRlwiO1xuXG4vLyB1cC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtdXRyaTogXCJcXDI1YjJcIjtcbi8vIGRvd24tcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWR0cmk6IFwiXFwyNWJjXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1sdHJpOiBcIlxcMjVjMFwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXJ0cmk6IFwiXFwyNWI2XCI7XG4vLyB1cC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtdXN0cmk6IFwiXFwyNWI0XCI7XG4vLyBkb3duLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1kc3RyaTogXCJcXDI1YmVcIjtcbi8vIGxlZnQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWxzdHJpOiBcIlxcMjVjMlwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXJzdHJpOiBcIlxcMjViOFwiO1xuLy8gZGlhbW9uZFxuJHNjdXQtZGlhbW9uZDogXCJcXDI1YzZcIjtcbi8vIGZpc2hleWVcbiRzY3V0LWZpc2hleWU6IFwiXFwyNWM5XCI7XG4vLyBidWxsc2V5ZVxuJHNjdXQtYnVsbHNleWU6IFwiXFwyNWNlXCI7XG4vLyBjaXJjbGVcbiRzY3V0LWNpcmNsZTogXCJcXDI1Y2ZcIjtcbi8vIHdoaXRlIGNpcmNsZVxuJHNjdXQtd2hpdGVjaXJjbGU6IFwiXFwyNWNiXCI7XG4vLyBzcXVhcmVcbiRzY3V0LXNxdWFyZTogXCJcXDI1YTBcIjtcbi8vIHdoaXRlIHNxdWFyZVxuJHNjdXQtd2hpdGVzcXVhcmU6IFwiXFwyNWExXCI7XG4vLyBzbWFsbCBzcXVhcmVcbiRzY3V0LXNzcXVhcmU6IFwiXFwyNWFhXCI7XG4vLyBzbWFsbCB3aGl0ZSBzcXVhcmVcbiRzY3V0LXN3aGl0ZXNxdWFyZTogXCJcXDI1YWJcIjtcblxuLy8gZ2VuZXJhbCBjdXJyZW5jeVxuJHNjdXQtY3VycmVuY3k6IFwiXFwwMGE0XCI7XG4vLyBjZW50XG4kc2N1dC1jZW50OiBcIlxcMDBhMlwiO1xuLy8gZG9sbGFyXG4kc2N1dC1kb2xsYXI6IFwiXFwwMDI0XCI7XG4vLyBwb3VuZFxuJHNjdXQtcG91bmQ6IFwiXFwwMGEzXCI7XG4vLyBldXJvXG4kc2N1dC1ldXJvOiBcIlxcMjBhY1wiO1xuLy8geWVuXG4kc2N1dC15ZW46IFwiXFwwMGE1XCI7XG4vLyBydXBlZVxuJHNjdXQtcnVwZWU6IFwiXFwyMEI5XCI7XG5AZnVuY3Rpb24gbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSkge1xuICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgYHNyY2AgdmFsdWVzLCBpbiBvcmRlciwgdGhhdFxuICAvLyBhIGdvb2QgYEBmb250LWZhY2VgIHdpbGwgbmVlZCwgaW5jbHVkaW5nIG9ubHlcbiAgLy8gdGhvc2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gdGhlIGxpc3QgYCRmb3JtYXRzYC5cbiAgJHJlc3VsdDogKCk7XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgJGVvdC12YWw6IHVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkZW90LXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZjIpIHtcbiAgICAkd29mZjItdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmMi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYpIHtcbiAgICAkd29mZi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgdHRmKSB7XG4gICAgJHR0Zi12YWw6IHVybCgnI3skZmlsZS1wYXRofS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR0dGYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBzdmcpIHtcbiAgICAkc3ZnLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkc3ZnLXZhbCwgY29tbWEpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQG1peGluIHNjdXQtZm9udC1mYWNlIChcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Z1xuKSB7XG5cbiAgQGlmIGluZGV4KCdpdGFsaWMnICdvYmxpcXVlJywgJHdlaWdodCkge1xuICAgICRzdHlsZTogJHdlaWdodDtcbiAgICAkd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcblxuICAgIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgICBzcmM6IHVybCgnI3skZmlsZS1wYXRofS5lb3QnKTtcbiAgICB9XG4gICAgc3JjOiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KTtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhhbmdpbmctaW5kZW50IChcbiAgJGluZGVudDogMWVtXG4pIHtcblxuICAvLyBwYWRkaW5nLWxlZnQgY3JlYXRlcyB0aGUgaW5kZW50LFxuICAvLyB3aGlsZSB0ZXh0LWluZGVudCBwdWxscyB0aGUgZmlyc3QgbGluZVxuICAvLyBiYWNrIHRvIHRoZSBlZGdlLlxuXG4gIHBhZGRpbmctbGVmdDogJGluZGVudDtcbiAgdGV4dC1pbmRlbnQ6IC0kaW5kZW50O1xuXG59XG5cbiVzY3V0LWhhbmdpbmctaW5kZW50IHtcbiAgQGluY2x1ZGUgc2N1dC1oYW5naW5nLWluZGVudDtcbn1cbkBtaXhpbiBzY3V0LWluZGVudGVkLXBzIChcbiAgJGluZGVudDogMS41ZW0sXG4gICRuby1maXJzdC1pbmRlbnQ6IHRydWVcbikge1xuXG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LWluZGVudDogJGluZGVudDtcbiAgfVxuXG4gIEBpZiAkbm8tZmlyc3QtaW5kZW50IHtcbiAgICBwOmZpcnN0LW9mLXR5cGUge1xuICAgICAgdGV4dC1pbmRlbnQ6IDA7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtaW5kZW50ZWQtcHMge1xuICBAaW5jbHVkZSBzY3V0LWluZGVudGVkLXBzO1xufVxuQG1peGluIHNjdXQta2V5LXZhbCAoXG4gICRkaXZpZGVyOiBcIjpcIixcbiAgJHBhZDogMC4yNWVtLFxuICAkaW5kZW50OiAxZW0sXG4gICRzcGFjaW5nOiAwLFxuICAkcGFkLWxlZnQ6IDBcbikge1xuXG4gICYgPiBkdCB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogJHBhZDtcbiAgICAgIEBpZiAkcGFkLWxlZnQgIT0gMCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkcGFkLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJiA+IGRkIHtcbiAgICBtYXJnaW4tbGVmdDogJGluZGVudDtcbiAgICBAaWYgJHNwYWNpbmcgIT0gMCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1rZXktdmFsIHtcbiAgQGluY2x1ZGUgc2N1dC1rZXktdmFsO1xufVxuQG1peGluIHNjdXQtbGluay1iYiAoXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHdpZHRoOiAxcHhcbikge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBib3JkZXItYm90dG9tLXdpZHRoOiAkd2lkdGg7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gIH1cblxufVxuXG4lc2N1dC1saW5rLWJiIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLWJiO1xufVxuLy8gU0NVVCBMSU5LIFVOU1RZTEVEXG4vLyBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dC8jbGluay11bnN0eWxlZFxuXG5AbWl4aW4gc2N1dC1saW5rLXVuc3R5bGVkKCkge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGluaGVyaXQ7XG5cbn1cblxuJXNjdXQtbGluay11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay11bnN0eWxlZCgpO1xufVxuXG5AbWl4aW4gc2N1dC1yZXZlcnNlLWl0YWxpY3MgKFxuICAkZWxlbWVudHM6IG51bGxcbikge1xuXG4gICRlbGVtZW50LWxpc3Q6IGVtLCBjaXRlLCBpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICN7am9pbigkZWxlbWVudC1saXN0LCAkZWxlbWVudHMpfSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICB9XG5cbn1cblxuJXNjdXQtcmV2ZXJzZS1pdGFsaWNzIHtcbiAgQGluY2x1ZGUgc2N1dC1yZXZlcnNlLWl0YWxpY3M7XG59XG5cbkBtaXhpbiBzY3V0LXNpZGUtbGluZWQgKFxuICAkaGVpZ2h0OiAxcHgsXG4gICRzcGFjZTogMC41ZW0sXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHYtYWRqdXN0OiBmYWxzZSxcbiAgJGRvdWJsZTogZmFsc2Vcbikge1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA1MCU7XG5cbiAgICBib3JkZXItdG9wLXN0eWxlOiAkc3R5bGU7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogJGhlaWdodDtcblxuICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICR2LWFkanVzdCAhPSBmYWxzZSB7XG4gICAgICBib3R0b206ICR2LWFkanVzdDtcbiAgICB9XG5cbiAgICBAaWYgJGRvdWJsZSAhPSBmYWxzZSB7XG4gICAgICBoZWlnaHQ6ICRkb3VibGU7XG4gICAgICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAkaGVpZ2h0O1xuICAgICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICY6YmVmb3JlIHtcbiAgICByaWdodDogJHNwYWNlO1xuICAgIG1hcmdpbi1sZWZ0OiAtNTAlO1xuICB9XG4gICY6YWZ0ZXIge1xuICAgIGxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6IC01MCU7XG4gIH1cblxufVxuXG4lc2N1dC1zaWRlLWxpbmVkIHtcbiAgQGluY2x1ZGUgc2N1dC1zaWRlLWxpbmVkO1xufVxuQG1peGluIHNjdXQtdHJ1bmNhdGUge1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG59XG5cbiVzY3V0LXRydW5jYXRlIHtcbiAgQGluY2x1ZGUgc2N1dC10cnVuY2F0ZTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BsYWNlaG9sZGVyc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NvbG9yc1wiO1xuQGltcG9ydCBcInRvb2xraXQvZm9udHNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ludHJpbnNpYy1yYXRpb1wiO1xuQGltcG9ydCBcInRvb2xraXQvbmVzdGVkLWNvbnRleHRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BhcmFsbGF4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9ydGxcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RhcmdldFwiO1xuQGltcG9ydCBcInRvb2xraXQvdHJpYW5nbGVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NlbnRlclwiO1xuQGltcG9ydCBcInRvb2xraXQvdmlld3BvcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3VuZGVybGluZVwiO1xuQGltcG9ydCBcInRvb2xraXQvYXJ0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9zZXQtbXVsdGlwbGVcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kVG9vbGtpdC1TZXR0aW5nczogKFxuICAnY2xlYXJmaXggZXh0ZW5kJzogZmFsc2UsXG4gICdjb2xvciBzdGFjayBhbW91bnRzJzogMjUlIDUwJSA3NSUgODUlIDkwJSxcbiAgJ3RpbnQgc2hhZGUgYW1vdW50cyc6IDc1JSA1MCUgMjUlLFxuICAndGludCBjb2xvcic6ICNmZmYsXG4gICdzaGFkZSBjb2xvcic6ICMwMDAsXG4gICdjb2xvciBzY2FsZSBzdGVwcyc6IDYsXG4gICdsaWdhdHVyZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2ZvbnQgZmFjZSB3ZWlnaHQnOiBub3JtYWwsXG4gICdmb250IGZhY2Ugc3R5bGUnOiBub3JtYWwsXG4gICdmb250IGZhY2UgaW5saW5lIHdvZmYnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBleHRlbmQnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBzcGVhayc6IGZhbHNlLFxuICAnZmFkZSBpbiBkdXJhdGlvbic6IDFzLFxuICAnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJzogJy53Zi1sb2FkaW5nJyxcbiAgJ2ZhZGUgaW4gZXh0ZW5kJzogZmFsc2UsXG4gICdpbnRyaW5zaWMgcmF0aW8nOiAxNi85LFxuICAnaW50cmluc2ljIHJhdGlvIHdpZHRoJzogMTAwJSxcbiAgJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cyc6ICc+IConLFxuICAnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJzogdG9wLFxuICAnaW50cmluc2ljIHJhdGlvIGV4dGVuZCc6IGZhbHNlLFxuICAnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnOiAxMDAlLFxuICAnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nOiBsZWZ0LFxuICAndHJpYW5nbGUgY29sb3InOiAjMDAwLFxuICAndHJpYW5nbGUgaGVpZ2h0JzogMWVtLFxuICAndHJpYW5nbGUgd2lkdGgnOiAxZW0sXG4gICd0cmlhbmdsZSBhbmdsZSc6IDAsXG4gICdwYXJhbGxheCBwZXJzcGVjdGl2ZSc6IDEsXG4gICdwYXJhbGxheCBlbGVtZW50JzogJ2JvZHknLFxuICAncGFyYWxsYXggaW9zJzogdHJ1ZSxcbiAgJ3BhcmFsbGF4IGRpc3RhbmNlJzogMCxcbiAgJ3ZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAndmVydGljYWwgZXh0ZW5kJzogZmFsc2UsXG4gICdob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JzogNTAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCc6IGZhbHNlLFxuICAndW5kZXJsaW5lIGJhY2tncm91bmQnOiAjZmZmLFxuICAndW5kZXJsaW5lIGNvbG9yJzogIzAwZSxcbiAgJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJzogdHJ1ZSxcbiAgJ3VuZGVybGluZSBkaXN0YW5jZSc6IDEsXG4gICd1bmRlcmxpbmUgd2lkdGgnOiAyLFxuICAndW5kZXJsaW5lIGV4dGVuZCc6IGZhbHNlLFxuICAnYXJ0IHBpeGVsIHNpemUnOiAxcHgsXG4gICdhcnQgY29sb3InOiBibGFjayxcbiAgJ2FydCBib3JkZXIgcmFkaXVzJzogMCVcbik7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTmV3IFNldHRpbmdzIG1vZHVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHbG9iYWxcbiRHbG9iYWxTZXR0aW5nczogJFRvb2xraXQtU2V0dGluZ3MgIWRlZmF1bHQ7XG4vLyBVc2VyXG4kVXNlclNldHRpbmdzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBVc2VyIFNldHRpbmcgRXhpc3RzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkVXNlclNldHRpbmdzLCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cy1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICRSZXR1cm47XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtaGFzKCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBHZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRHbG9iYWxTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWdldC1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHZhbHVlczogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJHZhbHVlczogbWFwLW1lcmdlKCR2YWx1ZXMsICgkc2V0dGluZzogc2V0dGluZy1nZXQoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWdldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctZ2V0KCRzZXR0aW5nKTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmdzIFNldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICRzZXR0aW5ncykgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQHJldHVybiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRSZXR1cm46ICgpO1xuXG4gIEBlYWNoICRLZXksICRWYWx1ZSBpbiAkVXNlclNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBpZigkc2V0dGluZyA9PSAkS2V5LCAkUmV0dXJuLCBtYXAtbWVyZ2UoJFJldHVybiwgKCRLZXk6ICRWYWx1ZSkpKTtcbiAgfVxuXG4gICRVc2VyU2V0dGluZ3M6ICRSZXR1cm4gIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkY2xlYXItdGhlLXNldHRpbmdzOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkVXNlclNldHRpbmdzOiAoKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1yZXNldCgpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1yZXNldCgpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgUGlja1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrKCRzZXR0aW5nLCAkaW5wdXQpIHtcbiAgQHJldHVybiBpZigkaW5wdXQgIT0gbnVsbCwgJGlucHV0LCBzZXR0aW5nLWdldCgkc2V0dGluZykpO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcsICRpbnB1dCBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHNldHRpbmctcGljaygkaW5wdXQsICRzZXR0aW5nKSkpO1xuICB9XG5cbiAgQHJldHVybiAkUmV0dXJuO1xufSIsIiRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQbGFjZWhvbGRlciBHZXQvU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpIHtcbiAgJHVuaXF1ZS1pZDogdW5pcXVlLWlkKCk7XG4gICRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiBtYXAtbWVyZ2UoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICgkaWQ6ICR1bmlxdWUtaWQpKSAhZ2xvYmFsO1xuICBAcmV0dXJuICR1bmlxdWUtaWQ7XG59XG5cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAkaWQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYXRlIFBsYWNlaG9sZGVyIENsYXNzIGFuZCBFeHRlbmRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCk7XG5cbiAgQGlmICRwbGFjZWhvbGRlci1pZCA9PSBudWxsIHtcbiAgICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCk7XG4gICAgQGF0LXJvb3QgJSN7JHBsYWNlaG9sZGVyLWlkfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGV4dGVuZCAlI3skcGxhY2Vob2xkZXItaWR9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFN0YXRpYyBNaXhpbiBIZWxwZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIG1peGluLWRyeWVyKCRpZCwgJGV4dGVuZDogdHJ1ZSkge1xuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTW9kZXJuIENsZWFyZml4IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjbGVhcmZpeCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2NsZWFyZml4IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY2xlYXJmaXgnKSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29tcGFzcyBFeHRlbnNpb24gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVGludCBhbmQgU2hhZGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTHVtYVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gbHVtYSgkY29sb3IpIHtcbiAgQHJldHVybiAocmVkKCRjb2xvcikgKiAuMjk5KSArIChncmVlbigkY29sb3IpICogLjU4NykgKyAoYmx1ZSgkY29sb3IpICogLjExNCk7XG59XG5cbkBmdW5jdGlvbiBsdW1hLWd0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpID49IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1sdGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA8PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtZGlmZigkY29sb3IxLCAkY29sb3IyKSB7XG4gIEByZXR1cm4gbHVtYSgkY29sb3IxKSAtIGx1bWEoJGNvbG9yMik7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU3RhY2tzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zdGFjaygkbWFpbiwgJHNlY29uZGFyeSwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCdjb2xvciBzdGFjayBhbW91bnRzJyk7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAxIHtcbiAgICAkYW1vdW50czogbnRoKCRhbW91bnRzLCAxKTtcbiAgfVxuXG4gICRzdGFjazogJG1haW47XG5cbiAgQGVhY2ggJGFtb3VudCBpbiAkYW1vdW50cyB7XG4gICAgJHN0YWNrOiBqb2luKCRzdGFjaywgbWl4KCRzZWNvbmRhcnksIG50aCgkc3RhY2ssIDEpLCAkYW1vdW50KSk7XG4gIH1cblxuICBAcmV0dXJuICRzdGFjaztcbn1cblxuLy8gVGludCBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBTaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBUaW50L1NoYWRlIFN0YWNrXG5AZnVuY3Rpb24gdGludC1zaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gICRjb2xvcnM6ICgpO1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ3RpbnQgc2hhZGUgYW1vdW50cycpO1xuICB9XG4gICRsZW5ndGg6IGxlbmd0aCgkYW1vdW50cyk7XG5cbiAgLy8gU2hhZGVzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHNoYWRlKCRjb2xvciwgbnRoKCRhbW91bnRzLCAkaSkpKTtcbiAgfVxuXG4gIC8vIEJhc2VcbiAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsICRjb2xvcik7XG5cbiAgLy8gVGludHNcbiAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkbGVuZ3RoIC0gMSB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHRpbnQoJGNvbG9yLCBudGgoJGFtb3VudHMsICRsZW5ndGggLSAkaSkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJGNvbG9ycztcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTY2FsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXNjYWxlKCRtYWluLCAkc2Vjb25kYXJ5LCAkc3RlcHM6IG51bGwpIHtcbiAgJHN0ZXBzOiBpZigkc3RlcHMgIT0gbnVsbCwgJHN0ZXBzLCB0b29sa2l0LWdldCgnY29sb3Igc2NhbGUgc3RlcHMnKSk7XG5cbiAgJGxpc3Q6ICRtYWluO1xuXG4gICRyZWQxOiByZWQoJG1haW4pO1xuICAkcmVkMjogcmVkKCRzZWNvbmRhcnkpO1xuICAkcmVkLWRpZmY6ICgoJHJlZDEgLSAkcmVkMikgLyAoKCRzdGVwcyAtIDEpKSk7XG5cbiAgJGh1ZTE6IGh1ZSgkbWFpbik7XG4gICRodWUyOiBodWUoJHNlY29uZGFyeSk7XG4gIEBpZiAoJGh1ZTIgKyAzNTkgLSAkaHVlMSkgPCBhYnMoJGh1ZTEgLSAkaHVlMikge1xuICAgICRodWUyOiAkaHVlMiArIDM1OTtcbiAgfVxuICAkaHVlLWRpZmY6ICgkaHVlMiAtICRodWUxKSAvICgkc3RlcHMgLSAxKTtcblxuICAkc2F0MTogc2F0dXJhdGlvbigkbWFpbik7XG4gICRzYXQyOiBzYXR1cmF0aW9uKCRzZWNvbmRhcnkpO1xuICAkc2F0LWRpZmY6IDA7XG4gIEBpZiAkc2F0MSA+ICRzYXQyIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MiAtICRzYXQxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDEgLSAkc2F0MikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkbHRlMTogbGlnaHRuZXNzKCRtYWluKTtcbiAgJGx0ZTI6IGxpZ2h0bmVzcygkc2Vjb25kYXJ5KTtcbiAgJGx0ZS1kaWZmOiAwO1xuICBAaWYgJGx0ZTEgPiAkbHRlMiB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTIgLSAkbHRlMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRsdGUtZGlmZjogKCRsdGUxIC0gJGx0ZTIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGFscDE6IGFscGhhKCRtYWluKTtcbiAgJGFscDI6IGFscGhhKCRzZWNvbmRhcnkpO1xuICAkYWxwLWRpZmY6IDA7XG4gIEBpZiAkYWxwMSA+ICRhbHAyIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMiAtICRhbHAxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGFscC1kaWZmOiAoJGFscDEgLSAkYWxwMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkaHVlLWhvbGQ6ICRodWUxO1xuICAkc2F0LWhvbGQ6ICRzYXQxO1xuICAkbHRlLWhvbGQ6ICRsdGUxO1xuICAkYWxwLWhvbGQ6ICRhbHAxO1xuICAkY29sb3ItaG9sZDogMDtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRzdGVwcyB7XG4gICAgJGh1ZS1ob2xkOiAkaHVlLWhvbGQgKyAkaHVlLWRpZmY7XG4gICAgJHNhdC1ob2xkOiAkc2F0LWhvbGQgKyAkc2F0LWRpZmY7XG4gICAgJGx0ZS1ob2xkOiAkbHRlLWhvbGQgKyAkbHRlLWRpZmY7XG4gICAgJGFscC1ob2xkOiAkYWxwLWhvbGQgKyAkYWxwLWRpZmY7XG5cbiAgICAkY29sb3ItaG9sZDogaHNsYSgkaHVlLWhvbGQsICRzYXQtaG9sZCwgJGx0ZS1ob2xkLCAkYWxwLWhvbGQpO1xuICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRjb2xvci1ob2xkKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRW5hYmxlIGxpZ2F0dXJlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2xpZ2F0dXJlIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2VuYWJsZSBsaWdhdHVyZXMnKSB7XG4gICAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhPTEsIGRsaWc9MVwiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tcy1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW8tZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJsaWdhXCIsXCJkbGlnXCI7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhY2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGZvbnQtZmFjZSgkbmFtZSwgJGZpbGVzLCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwsICRpbmxpbmUtd29mZjogbnVsbCkge1xuICAkd2VpZ2h0OiBpZigkd2VpZ2h0ICE9IG51bGwsICR3ZWlnaHQsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugd2VpZ2h0JykpO1xuICAkc3R5bGU6IGlmKCRzdHlsZSAhPSBudWxsLCAkc3R5bGUsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugc3R5bGUnKSk7XG4gICRpbmxpbmUtd29mZjogaWYoJGlubGluZS13b2ZmICE9IG51bGwsICRpbmxpbmUtd29mZiwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZicpKTtcblxuICAkZm9udC1zdGFjazogKCk7XG4gICRmb250LXNyYzogJyc7XG4gICRlb3Q6IGZhbHNlO1xuICAkZm9udC1leHRlbnNpb25zOiAoJ2VvdCc6ICdlbWJlZGRlZC1vcGVudHlwZScsICd3b2ZmMic6ICd3b2ZmMicsICd3b2ZmJzogJ3dvZmYnLCAndHRmJzogJ3RydWV0eXBlJywgJ3N2Zyc6ICdzdmcnKTtcblxuICBAZWFjaCAkZXh0LCAkZm9ybWF0IGluICRmb250LWV4dGVuc2lvbnMge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkZmlsZXMsICRleHQpIHtcbiAgICAgIEBpZiBmdW5jdGlvbi1leGlzdHMoaW5saW5lLWZvbnQtZmlsZXMpIGFuZCAkaW5saW5lLXdvZmYgPT0gdHJ1ZSBhbmQgKCRleHQgPT0gJ3dvZmYnIG9yICRleHQgPT0gJ3dvZmYyJykge1xuICAgICAgICAkZm9udC1zcmM6IGlubGluZS1mb250LWZpbGVzKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSk7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiBmdW5jdGlvbi1leGlzdHMoZm9udC11cmwpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGZvbnQtc3RhY2s6IGFwcGVuZCgkZm9udC1zdGFjaywgJGZvbnQtc3JjLCAnY29tbWEnKTtcbiAgICB9XG5cbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkbmFtZTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgQGlmICRlb3Qge1xuICAgICAgc3JjOiAkZW90O1xuICAgIH1cbiAgICBAaWYgbGVuZ3RoKCRmb250LXN0YWNrKSA+IDAge1xuICAgICAgc3JjOiAkZm9udC1zdGFjaztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJY29uIEZvbnRcbi8vIEZyb20gaHR0cDovL2ljb21vb24uaW9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGljb24tZm9udCgkZm9udC1zdGFjaywgJHNwZWFrOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRzcGVhazogaWYoJHNwZWFrICE9IG51bGwsICRzcGVhaywgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBzcGVhaycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBmb250LWZhbWlseTogJGZvbnQtc3RhY2s7XG4gIEBpZiAkc3BlYWsgPT0gZmFsc2Uge1xuICAgIHNwZWFrOiBub25lO1xuICB9XG4gIEBpbmNsdWRlIGljb24tZm9udC0tY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIGljb24tZm9udC0tY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaWNvbiBmb250IGNvcmUnKSB7XG4gICAgICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQpO1xuXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFkZSBJblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY29udGVudC1mYWRlLWluKCRkdXJhdGlvbjogbnVsbCwgJGxvYWRpbmc6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGR1cmF0aW9uOiBpZigkZHVyYXRpb24gIT0gbnVsbCwgJGR1cmF0aW9uLCB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpKTtcbiAgJGxvYWRpbmc6IGlmKCRsb2FkaW5nICE9IG51bGwsICRsb2FkaW5nLCB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIGFuZCAkZHVyYXRpb24gPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSBhbmQgJGxvYWRpbmcgPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY29udGVudCBmYWRlIGluJykge1xuICAgICAgQGluY2x1ZGUgY29udGVudC1mYWRlLWluKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGlmIG5vdCBtaXhpbi1leGlzdHMoJ3NpbmdsZS10cmFuc2l0aW9uJykge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBzaW5nbGUtdHJhbnNpdGlvbihvcGFjaXR5ICRkdXJhdGlvbik7XG4gICAgfVxuXG4gICAgI3skbG9hZGluZ30gJiB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGbHVpZCBFbWJlZHMgYW5kIHdoYXRldmVyIFdJVEggTk8gSkFWQVNDSVBUIVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gcGFyZW50Jykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIGNoaWxkJykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgdG9wOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuXG4gIHBhZGRpbmctI3skcG9zaXRpb259OiAoMSAvICRyYXRpbykgKiAkd2lkdGg7XG4gIHdpZHRoOiAkd2lkdGg7XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkZWxlbWVudHM6IGlmKCRlbGVtZW50cyAhPSBudWxsLCAkZWxlbWVudHMsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcblxuICBAZWFjaCAkZWxlbWVudCBpbiAkZWxlbWVudHMge1xuICAgICN7JGVsZW1lbnR9IHtcbiAgICBcdEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGlyKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRlbGVtZW50cywgJGV4dGVuZCwgJHBvc2l0aW9uKTtcbn1cblxuQG1peGluIGlyLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xufSIsIi8vIHNpbXBsZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb250ZXh0IG9mIGEgbmVzdGVkIHBlcmNlbnRhZ2UuXG5AZnVuY3Rpb24gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuXG4gIC8vIEZpcnN0IGxldmVsIGRlZXAgaXMgYWx3YXlzIDEwMCVcbiAgJHBlcmNlbnRhZ2U6IDEwMCU7XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggbGV2ZWxcbiAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAvLyBJbnZlcnQgdGhlIHBlcmNlbnRhZ2UgdG8gZmluZCBjb250ZXh0XG4gICAgJHBlcmNlbnRhZ2U6IHBlcmNlbnRhZ2UoJHBlcmNlbnRhZ2UgLyAkY29udGV4dCk7XG4gIH1cbiAgLy8gUmV0dXJuIGZpbmFsIHBlcmNlbnRhZ2VcbiAgQHJldHVybiAkcGVyY2VudGFnZTtcbn1cblxuLy8gbWl4aW4gdG8gbWFrZSB0aGluZ3MgZWFzaWVyXG5AbWl4aW4gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJykpO1xuXG4gIHdpZHRoOiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpO1xuICBAaWYgJHBvc2l0aW9uID09IFwiY2VudGVyXCIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtLjU7XG4gIH1cbiAgQGlmICRwb3NpdGlvbiA9PSBcInJpZ2h0XCIge1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLTEgKyAxMDAlO1xuICB9XG59IiwiLy8gTWFnaWMgcGFyYWxsYXggbWl4aW5zXG5AbWl4aW4gcGFyYWxsYXgtaW5pdCgkcGVyc3BlY3RpdmU6IG51bGwsICRlbGVtZW50OiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG5cbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRlbGVtZW50OiBpZigkZWxlbWVudCAhPSBudWxsLCAkZWxlbWVudCwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGVsZW1lbnQnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBAaWYgJGVsZW1lbnQgPT0gJ2JvZHknIHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBodG1sLCBib2R5IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuICAgICAgYm9keSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRlbGVtZW50ID09IHRoaXMge1xuICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBhdC1yb290ICN7JGVsZW1lbnR9IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlOiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgb3ZlcmZsb3c6IGF1dG87XG4gIEBpZiBtaXhpbi1leGlzdHMocGVyc3BlY3RpdmUpIHtcbiAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUgKiAxcHgpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gICAgcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgfVxuICAvLyBBbGxvd3MgZm9yIHNtb290aCBzY3JvbGxpbmcgYnV0IGRpc2FibGVzIHBhcmFsbGF4IGVmZmVjdHMuXG4gIEBpZiAkcGFyYWxsYXgtaW9zID09IGZhbHNlIHtcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cbiAgLy8gTWFrZSBzdXJlIDNEIHBlcnNwZWN0aXZlIGlzIHByZXNlcnZlZFxuICAmLCAmICoge1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtLXN0eWxlKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUocHJlc2VydmUtM2QpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgoJGRpc3RhbmNlOiBudWxsLCAkcGVyc3BlY3RpdmU6IG51bGwpIHtcblxuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBkaXN0YW5jZScpKTtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG5cbiAgJHRyYW5zZm9ybTogdHJhbnNsYXRlWigkZGlzdGFuY2UgKiAkcGVyc3BlY3RpdmUgKiAxcHgpIHNjYWxlKGFicygkZGlzdGFuY2UgLSAxKSk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zZm9ybSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICAgIHRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgfVxuXG4gIHotaW5kZXg6ICRkaXN0YW5jZSAqIDEwMDtcbn1cbiIsIkBtaXhpbiBydGwoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgJF9wcm9wZXJ0eTogJHByb3BlcnR5O1xuICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcblxuICBAaWYgbGVuZ3RoKCR2YWx1ZSkgPT0gNCB7XG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICN7JHByb3BlcnR5fTogbnRoKCR2YWx1ZSwgMSkgbnRoKCR2YWx1ZSwgNCkgbnRoKCR2YWx1ZSwgMykgbnRoKCR2YWx1ZSwgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSAtIDEpICsgJ3JpZ2h0JztcbiAgICB9XG4gICAgQGVsc2UgaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpIC0gMSkgKyAnbGVmdCc7XG4gICAgfVxuXG4gICAgQGlmICRwcm9wZXJ0eSAhPSAkX3Byb3BlcnR5IHtcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIkBtaXhpbiB0YXJnZXQoJHRhcmdldCkge1xuICBAYXQtcm9vdCB7XG4gICAgLyohIEB7dGFyZ2V0OiAjeyR0YXJnZXR9fSAqL1xuICAgICYge1xuICAgICAgQGNvbnRlbnQ7ICBcbiAgICB9XG4gICAgLyohIHt0YXJnZXQ6ICN7JHRhcmdldH19QCAqLyAgXG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERyYXcgdHJpYW5nbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIHRyaWFuZ2xlKCRjb2xvcjogbnVsbCwgJGhlaWdodDogbnVsbCwgJHdpZHRoOiBudWxsLCAkYW5nbGU6IG51bGwpIHtcblxuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBjb2xvcicpKTtcbiAgJGhlaWdodDogaWYoJGhlaWdodCAhPSBudWxsLCAkaGVpZ2h0LCB0b29sa2l0LWdldCgndHJpYW5nbGUgaGVpZ2h0JykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSB3aWR0aCcpKTtcbiAgJGFuZ2xlOiBpZigkYW5nbGUgIT0gbnVsbCwgJGFuZ2xlLCB0b29sa2l0LWdldCgndHJpYW5nbGUgYW5nbGUnKSk7XG5cbiAgQGlmIG50aCgkYW5nbGUsIDEpID09IFwidG9wXCIgb3IgbnRoKCRhbmdsZSwgMSkgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiBcIiN7JGFuZ2xlfVwiO1xuICB9XG5cbiAgQGlmICRhbmdsZSA9PSBcInRvcFwiIHtcbiAgICAkYW5nbGU6IDA7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwicmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDI7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMTtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogNDUgKiA0O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwibGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDU7XG4gIH1cblxuICBAaWYgdW5pdCgkaGVpZ2h0KSA9PSBcIlwiIG9yIHVuaXQoJGhlaWdodCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JGhlaWdodH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciBoZWlnaHQuXCJcbiAgfVxuXG4gIEBpZiB1bml0KCR3aWR0aCkgPT0gXCJcIiBvciB1bml0KCR3aWR0aCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JHdpZHRofSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIHdpZHRoLlwiXG4gIH1cblxuICAvLyBvZmZzZXQgNDVkZWcgdG8gbWFrZSBlYWNoIHNpZGUgc3RhcnQgYXQgMFxuICAkZGVnOiAkYW5nbGUgKyA0NTtcbiAgLy8gaWYgdW5pdHMsIHJlbW92ZSB1bml0c1xuICBAaWYgdW5pdCgkZGVnKSA9PSBkZWcge1xuICAgICRkZWc6ICRkZWcgLyAxZGVnO1xuICB9XG4gIC8vIHNoaWZ0IHRvIGJlIG9uIGEgc2NhbGUgZnJvbSAwIHRvIDkwLlxuICBAd2hpbGUgJGRlZyA+IDkwIHtcbiAgICAkZGVnOiAkZGVnIC0gOTA7XG4gIH1cbiAgQHdoaWxlICRkZWcgPCAwIHtcbiAgICAkZGVnOiAkZGVnICsgOTA7XG4gIH1cbiAgLy8gR2V0IGEgcmF0aW8gb2YgOTAgdG8gbXVsdGlwbHkgYnkuXG4gICRkZWc6ICRkZWcgLyA5MDtcblxuICAvLyBtYWtlIHN1cmUgbWV0cmljcyBhcmUgcmVzZXRcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAvLyBydW4gdGhyb3VnaCBzaWRlc1xuICBAaWYgJGFuZ2xlIDw9IDQ1IG9yICRhbmdsZSA+IDMxNSB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSkgJGhlaWdodCAoJHdpZHRoICogJGRlZyk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDQ1IGFuZCAkYW5nbGUgPD0gMTM1IHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiAkZGVnKSAwICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAxMzUgYW5kICRhbmdsZSA8PSAyMjUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpIDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAyMjUgYW5kICRhbmdsZSA8PSAzMTUge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGggKCRoZWlnaHQgKiAkZGVnKSAwO1xuICB9XG59IiwiLy8gVmVydGljYWxseSBjZW50ZXIgYW55dGhpbmcsIGxpdGVyYWxseSBhbnl0aGluZy5cbi8vIGh0dHA6Ly96ZXJvc2l4dGhyZWUuc2UvdmVydGljYWwtYWxpZ24tYW55dGhpbmctd2l0aC1qdXN0LTMtbGluZXMtb2YtY3NzL1xuQG1peGluIHZlcnRpY2FsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgndmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcblxuICB0b3A6ICRtaWRwb2ludDtcbiAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd2ZXJ0aWNhbCBjZW50ZXInKSB7XG4gICAgICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIb3Jpem9udGFsIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIEBpZiAkbWlkcG9pbnQgIT0gMCUge1xuICAgIGxlZnQ6ICRtaWRwb2ludDtcbiAgfVxuXG4gIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWJzb2x1dGUgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIoJHZlcnRpY2FsOiBudWxsLCAkaG9yaXpvbnRhbDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICR2ZXJ0aWNhbDogaWYoJHZlcnRpY2FsICE9IG51bGwsICR2ZXJ0aWNhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIHRvcDogJHZlcnRpY2FsO1xuICBAaWYgJGhvcml6b250YWwgIT0gMCUge1xuICAgIGxlZnQ6ICRob3Jpem9udGFsO1xuICB9XG5cbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIH1cbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxuXG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDU1MgbGV2ZWwgNCBWaWV3cG9ydFxuLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLWRldmljZS1hZGFwdC8jdGhlLWF0dmlld3BvcnQtcnVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gdmlld3BvcnQge1xuICBALXdlYmtpdC12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tb3otdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbXMtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEB2aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuIiwiQG1peGluIHVuZGVybGluZSgkYmFja2dyb3VuZDogbnVsbCwgJGNvbG9yOiBudWxsLCAkY2xlYXItZGVzY2VuZGVyczogbnVsbCwgJGRpc3RhbmNlOiBudWxsLCAkd2lkdGg6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGJhY2tncm91bmQ6IGlmKCRiYWNrZ3JvdW5kICE9IG51bGwsICRiYWNrZ3JvdW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGJhY2tncm91bmQnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjb2xvcicpKTtcbiAgJGNsZWFyLWRlc2NlbmRlcnM6IGlmKCRjbGVhci1kZXNjZW5kZXJzICE9IG51bGwsICRjbGVhci1kZXNjZW5kZXJzLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnKSk7XG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBkaXN0YW5jZScpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIHdpZHRoJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gICRQWDogLjA2MjVlbTtcblxuICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKGJhY2tncm91bmQtaW1hZ2UpIGFuZCBmdW5jdGlvbi1leGlzdHMobGluZWFyLWdyYWRpZW50KSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgIGxpbmVhci1ncmFkaWVudChib3R0b20sICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSlcbiAgICApO1xuICB9XG4gIEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpO1xuICB9XG4gIGJhY2tncm91bmQtc2l6ZTogKDIgKiAkUFgpICgoMSArICR3aWR0aCkgKiAkUFgpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwICgoJHdpZHRoKSAqICRQWCkgKyAkZGlzdGFuY2U7XG5cbiAgQGlmICRjbGVhci1kZXNjZW5kZXJzIHtcbiAgICB0ZXh0LXNoYWRvdzogKDEgKiAkUFgpICgxICogJFBYKSAwICRiYWNrZ3JvdW5kLCAoLTEgKiAkUFgpIDAgMCAkYmFja2dyb3VuZDtcbiAgfVxufVxuXG5AbWl4aW4gdW5kZXJsaW5lLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndW5kZXJsaW5lJykge1xuICAgICAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQVJUIVxuLy8gSW5zcGlyZWQgYnkgaHR0cDovL2VscnVtb3JkZWxhbHV6LmdpdGh1Yi5pby9QaXhlbGF0b3IvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhcnQoJGFydCwgJHB4LXNpemU6IG51bGwsICRjb2xvcjogbnVsbCwgJHJhZGl1czogbnVsbCkge1xuICAkcHgtc2l6ZTogaWYoJHB4LXNpemUgIT0gbnVsbCwgJHB4LXNpemUsIHRvb2xraXQtZ2V0KCdhcnQgcGl4ZWwgc2l6ZScpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgnYXJ0IGNvbG9yJykpO1xuICAkcmFkaXVzOiBpZigkcmFkaXVzICE9IG51bGwsICRyYWRpdXMsIHRvb2xraXQtZ2V0KCdhcnQgYm9yZGVyIHJhZGl1cycpKTtcblxuICAkYnVpbGQ6ICgpO1xuICAkeTogJHB4LXNpemU7XG4gICR4OiAwO1xuXG4gIGhlaWdodDogJHB4LXNpemU7XG4gIHdpZHRoOiAkcHgtc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0cl9sZW5ndGgoJGFydCkge1xuICAgICRjaGFyOiBzdHJfc2xpY2UoJGFydCwgJGksICRpKTtcbiAgICAkeDogJHggKyAkcHgtc2l6ZTtcblxuICAgIEBpZiAkY2hhciA9PSAnbicge1xuICAgICAgJHk6ICR5ICsgJHB4LXNpemU7XG4gICAgICAkeDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGNoYXIgIT0gJyAnIHtcbiAgICAgICRib3JkZXI6ICR4ICR5IDAgJGNvbG9yO1xuICAgICAgJGJ1aWxkOiBhcHBlbmQoJGJ1aWxkLCAkYm9yZGVyLCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgYm94LXNoYWRvdzogJGJ1aWxkO1xufSIsIkBtaXhpbiBzZXQtbXVsdGlwbGUoJHZhbHVlLCAkcHJvcGVydGllcy4uLikge1xuICAkcHJvcGVydHktbGVuZ3RoOiBsZW5ndGgoJHByb3BlcnRpZXMpO1xuICAkZXJyb3ItbXNnOiBcIlRoZSBgc2V0LW11bHRpcGxlYCBtaXhpbiByZXF1aXJlcyB5b3UgdG8gcGFzcyBpbiBhIGxpc3Qgb2YgcHJvcGVydGllcyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50XCI7XG5cbiAgQGlmICRwcm9wZXJ0eS1sZW5ndGggPCAxIHtcbiAgICBAaWYgZmVhdHVyZS1leGlzdHMoYXQtZXJyb3IpIHtcbiAgICAgIEBlcnJvciAkZXJyb3ItbXNnO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAkZXJyb3ItbXNnO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgaW4gaXMgYSB3aGl0ZS1zcGFjZWQgc2VwYXJhdGVkIGxpc3QuXG4gICRwcm9wZXJ0aWVzOiBpZigkcHJvcGVydHktbGVuZ3RoID09IDEsIG50aCgkcHJvcGVydGllcywgMSksICRwcm9wZXJ0aWVzKTtcblxuICBAZWFjaCAkcHJvcGVydHkgaW4gJHByb3BlcnRpZXMge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlXG4gIH1cbn1cbiIsIi8vICBNb2R1bGUgU2NhbGUgYW5kIGJhc2UgZm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiRiYXNlLWZvbnQtc2l6ZTogICAxNHB4O1xuJGlkZWFsLWZvbnQtc2l6ZTogIDIycHg7XG4vLyAkYmFzZS1saW5lLWhlaWdodDogbXMoMSwgJGJhc2UtZm9udC1zaXplKTtcblxuJHJoeXRobS11bml0OiBcInJlbVwiO1xuJHJoeXRobS1nYXA6IDhweDtcbiRyZW0td2l0aC1weC1mYWxsYmFjazogZmFsc2U7XG5cbiRzY3V0LXJlbS1iYXNlOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UtZm9udC1zaXplKTtcblxuXG4vLyB7eyBDb21wb25lbnQgc2l6ZSB9fVxuJGdsb2JhbC1yYWRpdXM6IDNweDtcbiIsIi8vICBHcmlkIHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuXG4kbGF5b3V0LWJhc2U6IChcbiAgZ3V0dGVyczogMS81LFxuICBjb2x1bW4td2lkdGg6IDgwcHgsXG4gIC8vIGd1dHRlci1wb3NpdGlvbjogaW5zaWRlLXN0YXRpYyxcbiAgZGVidWc6IChcbiAgICAvLyBpbWFnZTogc2hvdyxcbiAgKSxcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiB0cnVlLFxuICAgIHJlbTogZmFsc2UsXG4gICksXG4pO1xuJHN1c3k6IGxheW91dCg1ICRsYXlvdXQtYmFzZSk7XG5cbi8vIHt7IEVsZW1lbnQgdHdpY2sgcG9pbnRzIH19XG5cbi8vIHt7IERldmljZSBsYXlvdXRzIH19XG4kc3VzeS1tZWRpYTogKFxuICAnbW9iaWxlJzogJyhtYXgtd2lkdGg6IDQxNHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiAnKG1heC13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogJyhtYXgtd2lkdGg6IDEwMjRweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICd0YWJsZXQnOiAnKG1pbi13aWR0aDogNzY4cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdC1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlLW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdkZXNrdG9wJzogJyhtaW4td2lkdGg6IDEyMDBweCknLFxuICAnY2F0ZWdvcnktbWVudSc6ICcobWluLXdpZHRoOiAxMDI0cHgpJ1xuKTtcbiR0YWJsZXQ6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIHRhYmxldCksXG4gIGxheW91dDogOSAuNVxuKTtcbiR0YWJsZXQtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkdGFibGV0LCBsYXlvdXQpKTtcbiRkZXNrdG9wOiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCBkZXNrdG9wKSxcbiAgbGF5b3V0OiAxMiAxLjUgc3BsaXRcbik7XG4kZGVza3RvcC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCRkZXNrdG9wLCBsYXlvdXQpKTtcbiRkZXNrdG9wLWdyaWQtcGFkZGluZzogc2N1dC1yZW0oMTUpO1xuXG4vLyAge3sgTGF5ZXJzIC0tLS0tLSB9fVxuJGxheWVyczogKFxuICBiYXNlLFxuICBoZWFkZXItbWVudSxcbiAgZHJhd2VyLFxuICBkcmF3ZXItc2hhZG93LFxuICBkcmF3ZXItbmF2LFxuKTsiLCIvLyAgU2V0dGluZ3Ncbi8vICA9PT09PT09PVxuXG4kY29sb3ItbGlnaHQtc2F0dXJhdGlvbjogOTMlO1xuXG4vLyAgQ29sb3JzXG4vLyAgPT09PT09XG5cbiRncmF5LWJhc2U6ICAgICAjMDAwICFkZWZhdWx0O1xuJGdyYXktZGFya2VyOiAgIHRpbnQoJGdyYXktYmFzZSwgMTMuNSUpICFkZWZhdWx0O1xuJGdyYXktZGFyazogICAgIHRpbnQoJGdyYXktYmFzZSwgMjAlKSAgICFkZWZhdWx0O1xuJGdyYXk6ICAgICAgICAgIHRpbnQoJGdyYXktYmFzZSwgMzMuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHQ6ICAgIHRpbnQoJGdyYXktYmFzZSwgNDYuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHRlcjogIHRpbnQoJGdyYXktYmFzZSwgOTMuNSUpICFkZWZhdWx0O1xuXG4vLyAgVGV4dHNcbi8vICAtLS0tLVxuXG4kdGV4dC1jb2xvcjogJGdyYXktZGFyaztcblxuLy8gIFBhbGxldGVcbi8vICAtLS0tLS0tLS0tLVxuXG4kYmx1ZTogIzJkNmVjNjtcbiRibHVlLWRhcms6IHJnYigwLCA2OSwgMTY0KTtcbiRibHVlLWxpZ2h0OiAjZDhlOWZmO1xuJHllbGxvdzogI2ZjOTYwMDtcbiR5ZWxsb3ctZGFyazogI2I4NmUwMDtcbiR5ZWxsb3ctbGluazogI2ZmZDgwMDtcbiRvcmFuZ2U6ICNmYzQ3MDA7XG4kb3JhbmdlLWRhcms6ICNiODZlMDA7XG4kcmVkOiByZ2IoMjA2LCA2OCwgNjIpO1xuJGdyZWVuOiByZ2IoMjgsIDE0OSwgMjIpO1xuJHBpbms6IHJnYigxOTcsIDMxLCAxMjQpO1xuXG4kcHJpbWFyeTogc2hhZGUoIzQyOGJjYSwgNi41JSk7XG4kc3VjY2VzczogIzVjYjg1YztcbiRpbmZvOiAgICAjNWJjMGRjO1xuJHdhcm5pbmc6ICNmMGFkNGU7XG4kZGFuZ2VyOiAgI2Q5NTM0ZjtcblxuJGlucHV0LWJvcmRlcjogI2U0ZTRlNDtcbiRib3JkZXItZ3JheTogIzkxOTE5MTtcbiRiYWNrZ3JvdW5kLWdyYXk6ICNlOWU5ZTk7XG5cbi8vICBMaW5rc1xuLy8gIC0tLS0tXG5cbiRsaW5rLWNvbG9yOiAgICAgICAgICAgIzAwMCAhZGVmYXVsdDtcbiRsaW5rLWhvdmVyLWNvbG9yOiAgICAgc2hhZGUoJGxpbmstY29sb3IsIDE1JSkgIWRlZmF1bHQ7XG4kbGluay1mb2N1cy1jb2xvcjogICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay1hY3RpdmUtY29sb3I6ICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay12aXNpdGVkLWNvbG9yOiAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG5cbi8vICBOUHJvZ3Jlc3Ncbi8vICAtLS0tLS0tLS1cbiRucHJvZ3Jlc3MtY29sb3I6ICAgICRwcmltYXJ5O1xuIiwiLy8gIEZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogICByaWdodDtcblxuLy8g5YOF6Yed5bCN6Iux5paHXG4vLyBAZm9udC1mYWNlIHtcbi8vICAgZm9udC1mYW1pbHk6IEVuZ2xpc2g7XG4vLyAgIHVuaWNvZGUtcmFuZ2U6IFUrMDAtMDI0Rjtcbi8vICAgc3JjOiBsb2NhbChIZWx2ZXRpY2EpO1xuLy8gfVxuXG4kc2FuczogICAgSGVsdmV0aWNhTmV1ZS1MaWdodFxuICAgICAgICwgJ0hlbHZldGljYSBOZXVlIExpZ2h0J1xuICAgICAgICwgJ0hlbHZldGljYSBOZXVlJ1xuICAgICAgICwgIEhlbHZldGljYVxuICAgICAgICwgJ0hlaXRpIFRDJ1xuICAgICAgICwgJ0xpSGVpIFBybydcbiAgICAgICAsICdNaWNyb3NvZnQgSmhlbmdIZWknXG4gICAgICAgLCAn5b6u6Luf5q2j6buR6auUJ1xuICAgICAgICwgIEFyaWFsXG4gICAgICAgLCAgc2Fucy1zZXJpZjtcblxuJHNlcmlmOiAgJ1BUIFNlcmlmJ1xuICAgICAgICwgR2VvcmdpYVxuICAgICAgICwgVGltZXNcbiAgICAgICAsICdUaW1lcyBOZXcgUm9tYW4nXG4gICAgICAgLCAnU29uZ3RpIFRDJ1xuICAgICAgICwgJ0hpcmFnaW5vIE1pbmNobyBQcm9OJ1xuICAgICAgICwgc2VyaWY7XG5cbiRiYXNlLWZvbnQtZmFtaWx5OiAkc2FuczsiXSwibWFwcGluZ3MiOiJBOENBQTs7Ozs7RUFLRTtBRDZDRSxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07RTdDckN0QixBQUFBLFlBQVksQ0FBQztJQUNlLFFBQVEsRUFBRSxRQUFTLEdBQzlDOztBQUVELEFBQUEsK0JBQStCLENBQUM7RUFDOUIsT0FBTyxFQUFFLEtBQU07RUFDZixJQUFJLEVBQUUsU0FBVTtFQUNoQixVQUFVLEVBQUUsNENBQWUsQ0FBOEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBSTNFO0U2QzBCRyxNQUFNLEVBQUwsU0FBUyxFQUFFLEtBQUs7STdDakNyQixBQUFBLCtCQUErQixDQUFDO01BSUwsT0FBTyxFQUFFLElBQUssR0FHeEM7RUFQRCxBQU1FLCtCQU42QixDQU03QixVQUFVLENBQUM7SUFBRSxPQUFPLEVDcEJXLElBQVcsR0RvQlI7O0FBR3BDLEFBQUEsdUJBQXVCLENBQUM7RUFDdEIsSUFBSSxFQUFFLFlBQWE7RUFDbkIsZ0JBQWdCLEVrRUxYLE9BQU8sR2xFbUJiO0U2Q1FHLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztJN0N4QnJCLEFBQUEsdUJBQXVCLENBQUM7TUFJcEIsU0FBUyxFQUFFLElBQUs7TUFDaEIsVUFBVSxFQUFFLDRDQUFlLENBQThCLEdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxHQVc3RTtFQWhCRCxBQVFFLHVCQVJxQixDQVFyQixVQUFVLENBQUM7SUFDVCxPQUFPLEVDaENzQixJQUFXLEdEc0N6QztJNkNTQyxNQUFNLEVBQUwsU0FBUyxFQUFFLEtBQUs7TTdDeEJyQixBQVFFLHVCQVJxQixDQVFyQixVQUFVLENBQUM7UUFHUCxPQUFPLEVBQUUsSUFBSztRQUNkLGVBQWUsRUFBRSxZQUFhLEdBR2pDO0k2Q1NDLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtNN0N4QnRCLEFBUUUsdUJBUnFCLENBUXJCLFVBQVUsQ0FBQztRQU1pQixTQUFTLEVDckNOLEtBQVcsR0RzQ3pDOztBNkNTQyxNQUFNLEVBQUwsU0FBUyxFQUFFLEtBQUs7RTdDUHJCLEFBQUEsc0JBQXNCLENBQUM7SUFFbkIsS0FBSyxFcUM4R0ssU0FBVSxHckM1R3ZCOztBQUNELEFBQXlCLHNCQUFILEdBQUcsc0JBQXNCLENBQUM7RUFDOUMsVUFBVSxFQzlDcUIsSUFBVyxHRGtEM0M7RTZDSEcsTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO0k3Q0ZyQixBQUF5QixzQkFBSCxHQUFHLHNCQUFzQixDQUFDO01BRzVDLFVBQVUsRUFBRSxDQUFFLEdBRWpCOztBQUVELEFBQUEscUJBQXFCLENBQUM7RUFDcEIsT0FBTyxFQUFFLElBQUssR0FXZjtFNkNqQkcsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO0k3Q0t0QixBQUFBLHFCQUFxQixDQUFDO01BR2xCLE9BQU8sRUFBRSxLQUFNO01BQ2YsT0FBTyxFQ3hEc0IsSUFBVztNRHlEeEMsSUFBSSxFQUFFLFdBQVksR0FPckI7TUFaRCxBQU9JLHFCQVBpQixDQU9qQixLQUFLLENBQUM7UUFDSixPQUFPLEVBQUUsWUFBYTtROEN2QzFCLGVBQWUsRUFBRSxJQUFLO1FBQ3RCLFlBQVksRUFBRSxDQUFFO1FBR2QsVUFBVSxFQUFFLENBQUU7UUFDZCxhQUFhLEVBQUUsQ0FBRSxHOUNvQ2hCO1FBVkwsQUFPSSxxQkFQaUIsQ0FPakIsS0FBSyxBOENyRE4sTUFBTSxDQUFDO1VBQ04sT0FBTyxFQUFFLEVBQUc7VUFDWixPQUFPLEVBQUUsS0FBTTtVQUNmLEtBQUssRUFBRSxJQUFLLEdBQ2I7UTlDMENILEE4Q1BNLHFCOUNPZSxDQU9qQixLQUFLLEc4Q2RILEVBQUUsQ0FBQztVQUNMLEtBQUssRUFxc0JELElBQUksR0Fwc0JUO1E5Q0tILEE4Qzh0QmEscUI5Qzl0QlEsQ0FPakIsS0FBSyxHOEN1dEJILEVBQUUsR0FBRyxFQUFFLEFBQUEsT0FBTyxDQUFsQjtVQUVJLE9BQU8sRTlDdnRCZSxHQUFHO1U4Q3d0QnpCLE9BQU8sRUFBRSxZQUFhO1VBR3hCLFdBQVcsRTdDeHhCa0IsR0FBVztVNkN5eEJ4QyxZQUFZLEU3Q3p4QmlCLEdBQVcsRzZDMHhCekM7UTlDdHVCSCxBQzBCVyxxQkQxQlUsQ0FPakIsS0FBSyxHQ21CTCxFQUFFLEdBQUcsRUFBRSxBQUFBLE9BQU8sQ0FBQztVQUFFLFdBQVcsRUFBRSxJQUFNLEdBQVU7O0FEWmxELEFBQUEsdUJBQXVCLENBQUM7RUFDdEIsT0FBTyxFQUFFLElBQUssR0FNZjtFNkMxQkcsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO0k3Q21CdEIsQUFBQSx1QkFBdUIsQ0FBQztNQUdwQixPQUFPLEVBQUUsS0FBTTtNQUNmLGNBQWMsRUN0RWUsSUFBVztNRHVFeEMsSUFBSSxFQUFFLFdBQVksR0FFckI7O0FBRUQsQUFBQSwwQkFBMEIsQ0FBQztFQUN6QixPQUFPLEVBQUUsSUFBSyxHQU1mO0U2Q25DRyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07STdDNEJ0QixBQUFBLDBCQUEwQixDQUFDO01BR3ZCLE9BQU8sRUFBRSxZQUFhO01BQ3RCLFFBQVEsRUFBRSxRQUFRLENDakZFLENBQU8sQ0FFRSxJQUFXLENBQVgsSUFBVyxDQUZwQixDQUFPO01Ea0YzQixPQUFPLEVBQUUsQ0FBSyxHQUVqQjs7QUFFRCxBQUFBLElBQUksQ0FBQztFQUFFLFFBQVEsRUFBRSxNQUFPLEdBQUk7O0FBQzVCLEFBQUEsV0FBVyxDQUFDO0VBQ1YsV0FBVyxFQUFFLElBQUssR0FFbkI7RTZDekNHLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztJN0NzQ3JCLEFBQUEsV0FBVyxDQUFDO01BRWUsU0FBUyxFQUFFLElBQUssR0FDMUM7O0FBQ0QsQUFBQSxXQUFXLENBQUM7RThDcEVWLGVBQWUsRUFBRSxJQUFLO0VBQ3RCLFlBQVksRUFBRSxDQUFFO0VBR2QsVUFBVSxFQUFFLENBQUU7RUFDZCxhQUFhLEVBQUUsQ0FBRTtFOUNpRW5CLFFBQVEsRUFBRSxRQUFRLENDN0ZJLENBQU8sQ0FBUCxDQUFPLENBQVAsQ0FBTyxDRDZGRyxJQUFDO0VBQ2pDLE9BQU8sRUFBRSxDQUFLLEdBQ2Y7RUFKRCxBOENxdEJNLFc5Q3J0QkssRzhDcXRCTCxFQUFFLENBQUM7SUFDTCxPQUFPLEVBQUUsWUFBYSxHQUN2Qjs7QURqd0JDLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztFN0MrQ3JCLEFBQUEsVUFBVSxDQUFDO0lBQ2dCLFVBQVUsRUMvRkosR0FBVyxHRGdHM0M7O0FBQ0QsQUFBQSxVQUFVLENBQUM7RUFDVCxPQUFPLEVDcEdlLENBQU8sQ0FFRSxHQUFXO0VEbUcxQyxLQUFLLEVBQUUsSUFBSyxHQUliO0VBRkMsQUFKRixVQUlZLEFBQUEsWUFBWSxDQUp4QixVQUFVO0VBS1IsQUFMRixVQUtZLEdBQUcsVUFBVSxDQUx6QixVQUFVLENBS2tCO0lBQUUsV0FBVyxFQUFFLGlCQUFrQixHQUFJIiwibmFtZXMiOltdfQ== */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
@media (min-width: 768px) {
  .sidebar {
    width: 33.33333%;
    padding-left: 8px; } }
@media (min-width: 1200px) {
  .sidebar {
    width: 20%; } }
.sidebar__section {
  margin-top: 8px;
  margin-bottom: 8px; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX3NpZGViYXIuc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX3NpZGViYXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy5zaWRlYmFyIHtcbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7XG4gICAgd2lkdGg6IHNwYW4oMyBvZiA5IDApO1xuICAgIHBhZGRpbmctbGVmdDogcigxKTtcbiAgfVxuICBAaW5jbHVkZSBzdXN5KCRkZXNrdG9wKSB7XG4gICAgd2lkdGg6IHNwYW4oMyBvZiAxNSAwKTtcbiAgfVxufVxuLnNpZGViYXJfX3NlY3Rpb24geyBtYXJnaW46IHIoMSkgbigpOyB9IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiQThDQUE7Ozs7O0VBS0U7QUQ2Q0UsTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO0U3Q3ZDRyxBQUFBLFFBQVEsQ0FBQztJQUU3QixLQUFLLEVxQzhJSyxTQUFVO0lyQzdJcEIsWUFBWSxFQ1hpQixHQUFXLEdEZ0IzQzs7QTZDK0JHLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtFN0N2Q0UsQUFBQSxRQUFRLENBQUM7SUFNN0IsS0FBSyxFcUMwSUssR0FBVSxHckN4SXZCOztBQUNELEFBQUEsaUJBQWlCLENBQUM7RUFBRSxNQUFNLEVDakJPLEdBQVcsQ0FGcEIsQ0FBTyxHRG1CUyIsIm5hbWVzIjpbXX0= */
/*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.mobile-menu__cells {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.drawer {
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  position: fixed;
  z-index: 3;
  opacity: 0;
  visibility: hidden;
  -webkit-transition: opacity .2s ease 0s, visibility .2s ease .2s;
  transition: opacity .2s ease 0s, visibility .2s ease .2s; }

body.drawer-enabled .drawer {
  opacity: 1;
  visibility: visible;
  -webkit-transition-delay: 0s;
  transition-delay: 0s; }

@media (min-width: 768px) {
  body.drawer-enabled .drawer {
    display: none; } }
.drawer__shadow {
  width: 100%;
  height: 100%;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  position: absolute;
  z-index: 4; }

.drawer__container {
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  position: absolute;
  overflow: auto;
  background-color: rgba(0, 0, 0, 0.5);
  cursor: pointer; }

.mobile-menu {
  background-color: #D4D4D4;
  max-width: 140px;
  -webkit-transform: translate3D(-100%, 0, 0);
  transform: translate3D(-100%, 0, 0);
  -webkit-transition: -webkit-transform .3s ease 0s;
  transition: -webkit-transform .3s ease 0s;
  transition: transform .3s ease 0s;
  transition: transform .3s ease 0s, -webkit-transform .3s ease 0s;
  position: relative;
  z-index: 5; }

body.drawer-enabled .mobile-menu {
  -webkit-transform: translate3D(0, 0, 0);
  transform: translate3D(0, 0, 0); }

.mobile-menu__cells {
  padding: 8px 16px; }

.mobile-menu__cell + .mobile-menu__cell {
  border-top: 1px dotted #000; }

.mobile-menu__link {
  display: block;
  font-size: 18px;
  padding: 8px;
  position: relative; }

.mobile-menu__link::before {
  content: "\25B8";
  font-size: 18px;
  line-height: 1;
  right: 0;
  position: absolute;
  top: 50%;
  margin-top: auto;
  margin-bottom: auto;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%); }

.mobile-menu__sub-menu {
  display: none !important;
  visibility: hidden; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2RyYXdlci5zY3NzIiwic291cmNlcyI6WyIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fZHJhd2VyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX21peGlucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19jbGFzc2VzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2N1dC9kaXN0L19zY3V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL190b29sa2l0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BsYWNlaG9sZGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fZm9udHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9faW50cmluc2ljLXJhdGlvLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX25lc3RlZC1jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BhcmFsbGF4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3J0bC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190YXJnZXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdHJpYW5nbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2VudGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3ZpZXdwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3VuZGVybGluZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19hcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0LW11bHRpcGxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3NjYWxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2ZvbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tIHZlbmRvciBtaXhpbiBsaWJyYXJpZXMgLS0tLVxuQGltcG9ydCBcIm1peGluc1wiLFxuICAgICAgICBcImNsYXNzZXNcIixcbiAgICAgICAgXCJ+c3VzeVwiLFxuICAgICAgICBcIn5zY3V0XCIsXG4gICAgICAgIFwifnNhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0XCI7XG5cbi8vIC0tLS0gdmFyaWFibGVzIGFuZCBjb25maWcgLS0tLVxuQGltcG9ydCBcInNldHRpbmdzL3NjYWxlXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZ3JpZFwiLFxuICAgICAgICBcInNldHRpbmdzL2NvbG9yc1wiLFxuICAgICAgICBcInNldHRpbmdzL2ZvbnRcIjsuZHJhd2VyIHtcbiAgcG9zaXRpb246IGZpeGVkIDAgMCAwIDA7XG4gIHotaW5kZXg6IGluZGV4KCRsYXllcnMsIGRyYXdlcik7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIGJvZHkuZHJhd2VyLWVuYWJsZWQgJiB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICAgIEBpbmNsdWRlIHN1c3koJHRhYmxldCkgeyBkaXNwbGF5OiBub25lOyB9XG4gIH1cbn1cbi5kcmF3ZXJfX3NoYWRvdyB7XG4gIHNpemU6IDEwMCU7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAwIDAgMCAwO1xuICB6LWluZGV4OiBpbmRleCgkbGF5ZXJzLCBkcmF3ZXItc2hhZG93KTtcbn1cbi5kcmF3ZXJfX2NvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSAwIDAgMCAwO1xuICBvdmVyZmxvdzogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgjMDAwLCAuNSk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLm1vYmlsZS1tZW51IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0Q0RDRENDtcbiAgbWF4LXdpZHRoOiAxNDBweDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzRCgtMTAwJSwgMCwgMCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuM3MgZWFzZSAwcztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiBpbmRleCgkbGF5ZXJzLCBkcmF3ZXItbmF2KTtcbiAgYm9keS5kcmF3ZXItZW5hYmxlZCAmIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUzRCgwLCAwLCAwKTsgfVxufVxuLm1vYmlsZS1tZW51X19jZWxscyB7XG4gIEBleHRlbmQgJXNjdXQtbGlzdC11bnN0eWxlZDtcbiAgcGFkZGluZzogcigxKSByKDIpO1xufVxuLm1vYmlsZS1tZW51X19jZWxsIHtcbiAgJiArICYgeyBib3JkZXItdG9wOiAxcHggZG90dGVkICMwMDA7IH1cbn1cbi5tb2JpbGUtbWVudV9fbGluayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0ZXh0OiAxOHB4O1xuICBwYWRkaW5nOiByKDEpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJHNjdXQtcnN0cmk7XG4gICAgdGV4dDogMThweCAxO1xuICAgIHJpZ2h0OiAwO1xuICAgIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbiAgfVxufVxuLm1vYmlsZS1tZW51X19zdWItbWVudSB7IEBpbmNsdWRlIEhpZGRlbigpOyB9IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiO0E4Q0FBOzs7OztFQUtFO0E5Q3dDRixBOENYQSxtQjlDV21CLEM4Q1hDO0VBVmxCLGVBQWUsRUFBRSxJQUFLO0VBQ3RCLFlBQVksRUFBRSxDQUFFO0VBR2QsVUFBVSxFQUFFLENBQUU7RUFDZCxhQUFhLEVBQUUsQ0FBRSxHQU9wQjs7QTlDekJ1QixBQUFBLE9BQU8sQ0FBQztFQUM5QixRQUFRLEVBQUUsYUFBYztFQUN4QixPQUFPLEVBQUUsQ0FBSztFQUNkLE9BQU8sRUFBRSxDQUFFO0VBQ1gsVUFBVSxFQUFFLE1BQU87RUFDbkIsVUFBVSxFQUFFLDRDQUE2QyxHQU8xRDtFQU5DLEFBTnNCLElBTWxCLEFBQUEsZUFBZSxDQU5HLE9BQU8sQ0FNUDtJQUNwQixPQUFPLEVBQUUsQ0FBRTtJQUNYLFVBQVUsRUFBRSxPQUFRO0lBQ3BCLGdCQUFnQixFQUFFLEVBQUcsR0FFdEI7STZDNEJDLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztNN0NqQ25CLEFBTnNCLElBTWxCLEFBQUEsZUFBZSxDQU5HLE9BQU8sQ0FNUDtRQUlLLE9BQU8sRUFBRSxJQUFLLEdBQ3hDOztBQUVILEFBQUEsZUFBZSxDQUFDO0VBQ2QsSUFBSSxFQUFFLElBQUs7RUFDWCxRQUFRLEVBQUUsZ0JBQWlCO0VBQzNCLE9BQU8sRUFBRSxDQUFLLEdBQ2Y7O0FBQ0QsQUFBQSxrQkFBa0IsQ0FBQztFQUNqQixRQUFRLEVBQUUsZ0JBQWlCO0VBQzNCLFFBQVEsRUFBRSxJQUFLO0VBQ2YsZ0JBQWdCLEVBQU8sa0JBQUk7RUFDM0IsTUFBTSxFQUFFLE9BQVEsR0FDakI7O0FBRUQsQUFBQSxZQUFZLENBQUM7RUFDWCxnQkFBZ0IsRUFBRSxPQUFRO0VBQzFCLFNBQVMsRUFBRSxLQUFNO0VBQ2pCLFNBQVMsRUFBRSx3QkFBVztFQUN0QixVQUFVLEVBQUUscUJBQXNCO0VBQ2xDLFFBQVEsRUFBRSxRQUFTO0VBQ25CLE9BQU8sRUFBRSxDQUFLLEdBRWY7RUFEQyxBQVBGLElBT00sQUFBQSxlQUFlLENBUHJCLFlBQVksQ0FPWTtJQUFFLFNBQVMsRUFBRSxvQkFBVyxHQUFhOztBQUU3RCxBQUFBLG1CQUFtQixDQUFDO0VBRWxCLE9BQU8sRUM1Q3dCLEdBQVcsQ0FBWCxJQUFXLEdENkMzQzs7QUFDRCxBQUFBLGtCQUFrQixHQUFsQixrQkFBa0IsQ0FDVjtFQUFFLFVBQVUsRUFBRSxlQUFnQixHQUFJOztBQUUxQyxBQUFBLGtCQUFrQixDQUFDO0VBQ2pCLE9BQU8sRUFBRSxLQUFNO0VBQ2YsSUFBSSxFQUFFLElBQUs7RUFDWCxPQUFPLEVDcER3QixHQUFXO0VEcUQxQyxRQUFRLEVBQUUsUUFBUyxHQU9wQjtFQVhELEFBQUEsa0JBQWtCLEFBS2YsUUFBUSxDQUFDO0lBQ1IsT0FBTyxFOENpckNFLEtBQU87STlDaHJDaEIsSUFBSSxFQUFFLE1BQU87SUFDYixLQUFLLEVBQUUsQ0FBRTtJOENva0JYLFFBQVEsRUFBRSxRQUFTO0lBR2pCLEdBQUcsRUFBRSxHQUFJO0lBQ1QsVUFBVSxFQUFFLElBQUs7SUFDakIsYUFBYSxFQUFFLElBQUs7SUFxQnRCLGlCQUFpQixFQU5DLGdCQUFVO0lBTzVCLGFBQWEsRUFQSyxnQkFBVTtJQVE1QixTQUFTLEVBUlMsZ0JBQVUsRzlDdGxCM0I7O0FBRUgsQUFBQSxzQkFBc0IsQ0FBQztFRS9EckIsT0FBTyxFQUFFLGVBQWdCO0VBQUUsVUFBVSxFQUFFLE1BQU8sR0YrREYiLCJuYW1lcyI6W119 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.breadcrumbs {
  margin-bottom: 8px; }

@media (min-width: 768px) {
  .breadcrumbs {
    margin-top: -32px; float: left; } }
.breadcrumbs__cells {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.breadcrumbs__cells:after {
  content: "";
  display: table;
  clear: both; }

.breadcrumbs__cells > li {
  float: left; }

.breadcrumbs__cells > li + li:before {
  content: "/";
  display: inline-block;
  margin-left: 4px;
  margin-right: 4px; }

.breadcrumbs__link.current {
  pointer-events: none; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2JyZWFkY3J1bWJzLnNjc3MiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9jb21wb25lbnRzL19icmVhZGNydW1icy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19taXhpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fY2xhc3Nlcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvX3N1LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3V0aWxpdGllcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX2Zsb2F0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zaGFyZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19wcmVmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3JlbS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2luc3BlY3Quc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19vdXRwdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19kaXJlY3Rpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fZW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3JpZHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3V0dGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19nYWxsZXJ5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcm93cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmxlZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19icmVha3BvaW50LXBsdWdpbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3NjdXQvZGlzdC9fc2N1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy9fdG9vbGtpdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wbGFjZWhvbGRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ZvbnRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ludHJpbnNpYy1yYXRpby5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19uZXN0ZWQtY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wYXJhbGxheC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19ydGwuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdGFyZ2V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RyaWFuZ2xlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NlbnRlci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L192aWV3cG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L191bmRlcmxpbmUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fYXJ0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldC1tdWx0aXBsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19zY2FsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19mb250LnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLSB2ZW5kb3IgbWl4aW4gbGlicmFyaWVzIC0tLS1cbkBpbXBvcnQgXCJtaXhpbnNcIixcbiAgICAgICAgXCJjbGFzc2VzXCIsXG4gICAgICAgIFwifnN1c3lcIixcbiAgICAgICAgXCJ+c2N1dFwiLFxuICAgICAgICBcIn5zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdFwiO1xuXG4vLyAtLS0tIHZhcmlhYmxlcyBhbmQgY29uZmlnIC0tLS1cbkBpbXBvcnQgXCJzZXR0aW5ncy9zY2FsZVwiLFxuICAgICAgICBcInNldHRpbmdzL2dyaWRcIixcbiAgICAgICAgXCJzZXR0aW5ncy9jb2xvcnNcIixcbiAgICAgICAgXCJzZXR0aW5ncy9mb250XCI7LmJyZWFkY3J1bWJzIHtcbiAgbWFyZ2luLWJvdHRvbTogcigxKTtcbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7XG4gICAgbWFyZ2luLXRvcDogcigtNCk7XG4gIH1cbn1cbi5icmVhZGNydW1ic19fY2VsbHMge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgnLycsIHIoLjUpKTtcbn1cbi5icmVhZGNydW1ic19fbGluayB7XG4gICYuY3VycmVudCB7IHBvaW50ZXItZXZlbnRzOiBub25lOyB9XG59IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiQThDQUE7Ozs7O0VBS0U7QTlDTXNCLEFBQUEsWUFBWSxDQUFDO0VBQ25DLGFBQWEsRUNUa0IsR0FBVyxHRGEzQztFNkNrQ0csTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO0k3Q3ZDRyxBQUFBLFlBQVksQ0FBQztNQUdqQyxVQUFVLEVDWG1CLEtBQVcsR0RhM0M7O0FBQ0QsQUFBQSxtQkFBbUIsQ0FBQztFOENPbEIsZUFBZSxFQUFFLElBQUs7RUFDdEIsWUFBWSxFQUFFLENBQUU7RUFHZCxVQUFVLEVBQUUsQ0FBRTtFQUNkLGFBQWEsRUFBRSxDQUFFLEc5Q1ZwQjtFQUZELEFBQUEsbUJBQW1CLEE4Q1JoQixNQUFNLENBQUM7SUFDTixPQUFPLEVBQUUsRUFBRztJQUNaLE9BQU8sRUFBRSxLQUFNO0lBQ2YsS0FBSyxFQUFFLElBQUssR0FDYjtFOUNJSCxBOEMrQk0sbUI5Qy9CYSxHOEMrQmIsRUFBRSxDQUFDO0lBQ0wsS0FBSyxFQXFzQkQsSUFBSSxHQXBzQlQ7RTlDakNILEE4Q293QmEsbUI5Q3B3Qk0sRzhDb3dCYixFQUFFLEdBQUcsRUFBRSxBQUFBLE9BQU8sQ0FBbEI7SUFFSSxPQUFPLEU5Q3J3QmdCLEdBQUc7SThDc3dCMUIsT0FBTyxFQUFFLFlBQWE7SUFHeEIsV0FBVyxFN0N4eEJrQixHQUFXO0k2Q3l4QnhDLFlBQVksRTdDenhCaUIsR0FBVyxHNkMweEJ6Qzs7QTlDendCSCxBQUFBLGtCQUFrQixBQUNmLFFBQVEsQ0FBQztFQUFFLGNBQWMsRUFBRSxJQUFLLEdBQUkiLCJuYW1lcyI6W119 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.section-heading {
  margin-top: 0;
  position: relative;
  top: -6px;
  height: 40px; }

.section-heading::before {
  content: "";
  display: block;
  width: 100%;
  height: 22px;
  position: absolute;
  top: 50%;
  margin-top: auto;
  margin-bottom: auto;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
  left: 0; }

.section-heading--gray::before {
  background-color: #c1c1c1; }

.section-heading--light-blue::before {
  background-color: #5ec7f2; }

.section-heading--blue::before {
  background-color: #2d6ec6; }

.section-heading--red::before {
  background-color: #ce443e; }

.section-heading--green::before {
  background-color: #34a036; }

.section-heading--pink::before {
  background-color: #c51f7c; }

.section-heading__text {
  display: block;
  padding: 0 8px;
  font-size: 24px;
  background-color: #fff;
  position: absolute;
  top: 50%;
  margin-top: auto;
  margin-bottom: auto;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
  left: 8px;
  z-index: 1; }

.section-heading__news-toolbar {
  position: absolute;
  top: 50%;
  margin-top: auto;
  margin-bottom: auto;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%);
  right: 8px;
  z-index: 1; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX3NlY3Rpb24taGVhZGluZy5zY3NzIiwic291cmNlcyI6WyIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fc2VjdGlvbi1oZWFkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX21peGlucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19jbGFzc2VzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2N1dC9kaXN0L19zY3V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL190b29sa2l0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BsYWNlaG9sZGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fZm9udHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9faW50cmluc2ljLXJhdGlvLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX25lc3RlZC1jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BhcmFsbGF4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3J0bC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190YXJnZXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdHJpYW5nbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2VudGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3ZpZXdwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3VuZGVybGluZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19hcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0LW11bHRpcGxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3NjYWxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2ZvbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tIHZlbmRvciBtaXhpbiBsaWJyYXJpZXMgLS0tLVxuQGltcG9ydCBcIm1peGluc1wiLFxuICAgICAgICBcImNsYXNzZXNcIixcbiAgICAgICAgXCJ+c3VzeVwiLFxuICAgICAgICBcIn5zY3V0XCIsXG4gICAgICAgIFwifnNhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0XCI7XG5cbi8vIC0tLS0gdmFyaWFibGVzIGFuZCBjb25maWcgLS0tLVxuQGltcG9ydCBcInNldHRpbmdzL3NjYWxlXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZ3JpZFwiLFxuICAgICAgICBcInNldHRpbmdzL2NvbG9yc1wiLFxuICAgICAgICBcInNldHRpbmdzL2ZvbnRcIjskdGV4dC1zaXplOiAyNHB4O1xuJGJhci1zaXplOiAyMnB4O1xuXG4uc2VjdGlvbi1oZWFkaW5nIHtcbiAgbWFyZ2luOiAwIG4oKSBuKCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgdG9wOiAtICgkdGV4dC1zaXplKjEuNSAtICRiYXItc2l6ZSkvMiArIDFweDtcbiAgaGVpZ2h0OiByKDUpO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBzaXplOiAxMDAlICRiYXItc2l6ZTtcbiAgICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG4gICAgbGVmdDogMDtcbiAgfVxuXG4gICYtLWdyYXk6OmJlZm9yZSB7IGJhY2tncm91bmQtY29sb3I6ICNjMWMxYzE7IH1cbiAgJi0tbGlnaHQtYmx1ZTo6YmVmb3JlIHsgYmFja2dyb3VuZC1jb2xvcjogIzVlYzdmMjsgfVxuICAmLS1ibHVlOjpiZWZvcmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZTsgfVxuICAmLS1yZWQ6OmJlZm9yZSB7IGJhY2tncm91bmQtY29sb3I6ICRyZWQ7IH1cbiAgJi0tZ3JlZW46OmJlZm9yZSB7IGJhY2tncm91bmQtY29sb3I6ICMzNGEwMzY7IH1cbiAgJi0tcGluazo6YmVmb3JlIHsgYmFja2dyb3VuZC1jb2xvcjogJHBpbms7IH1cbn1cbi5zZWN0aW9uLWhlYWRpbmdfX3RleHQge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMCByKDEpO1xuICBmb250LXNpemU6ICR0ZXh0LXNpemU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbiAgbGVmdDogcigxKTtcbiAgei1pbmRleDogaW5kZXgoJGxheWVycywgYmFzZSk7XG59XG4uc2VjdGlvbi1oZWFkaW5nX19uZXdzLXRvb2xiYXIge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG4gIHJpZ2h0OiByKDEpO1xuICB6LWluZGV4OiBpbmRleCgkbGF5ZXJzLCBiYXNlKTtcbn1cbiIsIi8vIHt7U2FzcyBtaXhpbnMgLS0tLS0tLS19fVxuQGZ1bmN0aW9uIG4oKSB7IEByZXR1cm4gdW5xdW90ZShcIipcIik7IH1cblxuQGZ1bmN0aW9uIHIoJHRpbWVzOiAxKSB7IEByZXR1cm4gJHJoeXRobS1nYXAgKiAkdGltZXM7IH1cblxuQG1peGluIHN1c3koJG1hcCkge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkbWFwLCBxdWVyeSksIG1hcC1nZXQoJG1hcCwgbGF5b3V0KSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiByZXZlcnNlLWhpZGUtdmlzdWFsbHkoKSB7XG4gIGJvcmRlcjogMDtcbiAgY2xpcDogYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogYXV0bztcbn1cblxuQG1peGluIHNoYXJlLWJyZWFrcG9pbnRzKCRtYXAsICRjc3Nwcm9wOiBjb250ZW50KSB7XG4gICRkZXNjcmlwdGlvbjogJyc7XG5cbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgQGlmICRkZXNjcmlwdGlvbiAhPSAgJycge1xuICAgICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAnIHwgJztcbiAgICB9XG4gICAgXG4gICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAkcHJvcGVydHkgKyc6ICcrIGluc3BlY3QoJHZhbHVlKTtcbiAgfVxuXG4gIGRpc3BsYXk6IG5vbmU7XG4gICN7JGNzc3Byb3B9OiAgJGRlc2NyaXB0aW9uO1xufVxuXG5AbWl4aW4gdG9nZ2xlLWZhZGUoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIH1cbn1cblxuQG1peGluIHRvZ2dsZS1zaG93KCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IDA7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9ICBcbn1cblxuQG1peGluIHNob3coKSB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICBoZWlnaHQ6IGF1dG87ICBcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyKCkge1xuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCBcbiAgJjo6LW1vei1wbGFjZWhvbGRlcixcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxufVxuXG5AbWl4aW4gZGVidWcoJGNvbG9yOiAjZmZmIHJnYmEodG9tYXRvLCAuMykpIHtcbiAgY29sb3I6ICRjb2xvclxufVxuXG5AbWl4aW4gbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSk7XG4gID4gbGkgKyBsaTpiZWZvcmUgeyBtYXJnaW4tbGVmdDogJHNwYWNlICsgNHB4OyB9XG59XG4iLCJAbWl4aW4gSGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBTZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBwYWRkaW5nOiAwIHIoMikgMCByKDEpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAvLyBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIC8vIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gIC8vIGJhY2tncm91bmQ6IHVybChcImltYWdlcy9hcnJvdy1kb3duLnN2Z1wiKVxuICAvLyAgICAgICAgICAgOTIlIDUwJSAvIDhweCAxMHB4XG4gIC8vICAgICAgICAgICBuby1yZXBlYXRcbiAgLy8gICAgICAgICAgIHRyYW5zcGFyZW50O1xuICAubm8tY3NzLWFwcGVhcmFuY2UgJiB7XG4gICAgQGluY2x1ZGUgc2N1dC1wYWRkaW5nKG4gMCk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gTm9ybWFsaXplKCkge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmUgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDA7XG59IiwiLy8gU3VzeVxuLy8gPT09PVxuXG5AaW1wb3J0ICdzdXN5L2xhbmd1YWdlL3N1c3knO1xuIiwiLy8gU3VzeSBOZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4kc3VzeS12ZXJzaW9uOiAyLjE7XG5cbkBpbXBvcnQgXCIuLi9zdVwiO1xuQGltcG9ydCBcIi4uL291dHB1dC9mbG9hdFwiO1xuXG5AaW1wb3J0IFwic3VzeS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1c3kvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1c3kvZ3JpZHNcIjtcbkBpbXBvcnQgXCJzdXN5L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRleHRcIjtcbkBpbXBvcnQgXCJzdXN5L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInN1c3kvc3BhblwiO1xuQGltcG9ydCBcInN1c3kvZ3V0dGVyc1wiO1xuQGltcG9ydCBcInN1c3kvaXNvbGF0ZVwiO1xuQGltcG9ydCBcInN1c3kvZ2FsbGVyeVwiO1xuQGltcG9ydCBcInN1c3kvcm93c1wiO1xuQGltcG9ydCBcInN1c3kvbWFyZ2luc1wiO1xuQGltcG9ydCBcInN1c3kvcGFkZGluZ1wiO1xuQGltcG9ydCBcInN1c3kvYmxlZWRcIjtcbkBpbXBvcnQgXCJzdXN5L2JyZWFrcG9pbnQtcGx1Z2luXCI7XG4iLCIvLyBTdVxuLy8gPT1cblxuQGltcG9ydCBcInN1L3V0aWxpdGllc1wiO1xuQGltcG9ydCBcInN1L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3UvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1L2dyaWRcIjtcbiIsIi8vIE1hcCBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBUcnVuY2F0ZSBMaXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiBhIGxpc3QsIHRydW5jYXRlZCB0byBhIGdpdmVuIGxlbmd0aFxuQGZ1bmN0aW9uIF9zdXN5LXRydW5jYXRlLWxpc3QoXG4gICRsaXN0LFxuICAkbGVuZ3RoXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgJF9yZXR1cm46IGlmKCRpIDw9ICRsZW5ndGgsIGFwcGVuZCgkX3JldHVybiwgbnRoKCRsaXN0LCAkaSkpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgR2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1nZXQoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46ICRtYXA7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIHR5cGUtb2YoJF9yZXR1cm4pID09IG1hcCB7XG4gICAgICAkX3JldHVybjogbWFwLWdldCgkX3JldHVybiwgJGtleSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIFNldFxuLy8gLS0tLS0tLS1cbi8vIC0gU2V0IGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtc2V0KFxuICAkbWFwLFxuICAka2V5cy12YWx1ZS4uLlxuKSB7XG4gICRfdmFsdWU6IG50aCgka2V5cy12YWx1ZSwgLTEpO1xuICAkX2tleXM6IF9zdXN5LXRydW5jYXRlLWxpc3QoJGtleXMtdmFsdWUsIGxlbmd0aCgka2V5cy12YWx1ZSkgLSAxKTtcbiAgJF9sZW5ndGg6IGxlbmd0aCgkX2tleXMpO1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkX2xlbmd0aCB7XG4gICAgJF9uOiAwIC0gJGk7XG4gICAgJF9sZXZlbDogX3N1c3ktdHJ1bmNhdGUtbGlzdCgkX2tleXMsICRfbGVuZ3RoICsgJF9uKTtcbiAgICAkX2xldmVsOiBfc3VzeS1kZWVwLWdldCgkbWFwLCAkX2xldmVsLi4uKTtcbiAgICAkX21lcmdlOiBudGgoJF9rZXlzLCAkX24pO1xuICAgICRfbWVyZ2U6ICgkX21lcmdlOiAkX3ZhbHVlKTtcbiAgICAkX3JldHVybjogaWYoJF9sZXZlbCwgbWFwLW1lcmdlKCRfbGV2ZWwsICRfbWVyZ2UpLCAkX21lcmdlKTtcbiAgICAkX3ZhbHVlOiAkX3JldHVybjtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBNZXJnZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIDIgb2JqZWN0cyBvZiBhbnkgZGVwdGgsIG1lcmdlZFxuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtbWVyZ2UoXG4gICRtYXAxLFxuICAkbWFwMlxuKSB7XG5cbiAgQGlmIHR5cGUtb2YoJG1hcDEpICE9IG1hcCBvciB0eXBlLW9mKCRtYXAyKSAhPSBtYXAge1xuICAgICRtYXAxOiAkbWFwMjtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAyIHtcbiAgICAgICRfbmV3OiAoJGtleTogX3N1c3lfZGVlcC1tZXJnZShtYXAtZ2V0KCRtYXAxLCAka2V5KSwgJHZhbHVlKSk7XG4gICAgICAkbWFwMTogbWFwLW1lcmdlKCRtYXAxLCAkX25ldyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbWFwMTtcbn1cblxuXG4vLyBEZWVwIEhhcy1LZXlcbi8vIC0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gdHJ1ZSBpZiBhIGRlZXAga2V5IGV4aXN0c1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtaGFzLWtleShcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogbnVsbDtcbiAgJF9zdG9wOiBmYWxzZTtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgbm90KCRfc3RvcCkge1xuICAgICAgJF9yZXR1cm46IG1hcC1oYXMta2V5KCRtYXAsICRrZXkpO1xuICAgIH1cblxuICAgIEBpZiAkX3JldHVybiB7XG4gICAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9zdG9wOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTZXR0aW5nc1xuLy8gPT09PT09PT1cblxuLy8gVmVyc2lvblxuLy8gLS0tLS0tLVxuJHN1LXZlcnNpb246IDEuMTtcblxuXG4vLyBEZWZhdWx0IFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBUaGUgYmFzaWMgc2V0dGluZ3NcbiRzdXN5LWRlZmF1bHRzOiAoXG4gIGNvbHVtbnM6IDQsXG4gIGd1dHRlcnM6IC4yNSxcbik7XG5cblxuLy8gVXNlciBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBEZWZpbmUgdGhlICRzdXN5IHZhcmlhYmxlIHdpdGggYSBtYXAgb2YgeW91ciBvd24gc2V0dGluZ3MuXG4vLyAtIFNldCBFSVRIRVIgJGNvbHVtbi13aWR0aCBPUiAkY29udGFpbmVyXG4vLyAtIFVzZSAkY29sdW1uLXdpZHRoIGZvciBzdGF0aWMgbGF5b3V0c1xuJHN1c3k6ICgpICFkZWZhdWx0O1xuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IEFkZCBkZWZhdWx0cyB0byBTdXN5XG5AbWl4aW4gc3VzeS1kZWZhdWx0cyhcbiAgJGRlZmF1bHRzXG4pIHtcbiAgJHN1c3ktZGVmYXVsdHM6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJGRlZmF1bHRzKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgU2V0XG4vLyAtLS0tLS0tLVxuLy8gQ2hhbmdlIG9uZSBzZXR0aW5nXG4vLyAtICRrZXkgICA6IHNldHRpbmcgbmFtZVxuLy8gLSAkdmFsdWUgOiBzZXR0aW5nIHZhbHVlXG5AbWl4aW4gc3VzeS1zZXQoXG4gICRrZXktdmFsdWUuLi5cbikge1xuICAkc3VzeTogX3N1c3ktZGVlcC1zZXQoJHN1c3ksICRrZXktdmFsdWUuLi4pICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm4gb25lIHNldHRpbmcgZnJvbSBhIGdyaWRcbi8vIC0gJGtleSAgICAgOiA8a2V5d29yZD5cbi8vIC0gJGxheW91dCAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gc3VzeS1nZXQoXG4gICRrZXksXG4gICRsYXlvdXQ6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJHN1c3kpXG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF9vcHRpb25zOiAkbGF5b3V0ICRzdXN5ICRzdXN5LWRlZmF1bHRzO1xuICAkX2JyZWFrOiBmYWxzZTtcbiAgJF9yZXR1cm46IG51bGw7XG5cbiAgQGVhY2ggJG9wdCBpbiAkX29wdGlvbnMge1xuICAgIEBpZiB0eXBlLW9mKCRvcHQpID09IG1hcCBhbmQgbm90KCRfYnJlYWspIHtcbiAgICAgICRfa2V5c2V0OiBfc3VzeS1kZWVwLWhhcy1rZXkoJG9wdCwgJGtleS4uLik7XG4gICAgICBAaWYgJF9rZXlzZXQge1xuICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1nZXQoJG9wdCwgJGtleS4uLik7XG4gICAgICAgICRfYnJlYWs6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIE1hdGggVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09XG5cblxuLy8gVmFsaWQgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGNvbHVtbiBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRjb2x1bW5zKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkY29sdW1ucykge1xuICAgICRyZXR1cm46ICRjb2x1bW5zO1xuICB9IEBlbHNlIGlmICR0eXBlID09IGxpc3Qge1xuICAgICRmYWlsOiBudWxsO1xuICAgIEBlYWNoICRjb2wgaW4gJGNvbHVtbnMge1xuICAgICAgQGlmIHR5cGUtb2YoJGNvbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgJGZhaWw6ICRmYWlsIG9yIGlmKHVuaXRsZXNzKCRjb2wpLCBudWxsLCB0cnVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHJldHVybjogaWYoJGZhaWwsICRyZXR1cm4sICRjb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiAkcmV0dXJuICE9ICRjb2x1bW5zIGFuZCBub3QoJHNpbGVudCkge1xuICAgICRyZXR1cm46IG51bGw7XG4gICAgJHdhcm46ICckY29sdW1ucyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyIG9yIGxpc3Qgb2YgdW5pdGxlc3MgbnVtYmVycy4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGNvbHVtbnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG4vLyBWYWxpZCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgZ3V0dGVyIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtZ3V0dGVycyhcbiAgJGd1dHRlcnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXJzKSB7XG4gICAgJHJldHVybjogJGd1dHRlcnM7XG4gIH0gQGVsc2UgaWYgbm90KCRzaWxlbnQpIHtcbiAgICAkd2FybjogJyRndXR0ZXJzIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRndXR0ZXJzfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBDb2x1bW4gbWF0aFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBJcyBTeW1tZXRyaWNhbFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIGdyaWQgaXMgc3ltbWV0cmljYWwuXG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gaXMtc3ltbWV0cmljYWwoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpZih0eXBlLW9mKCRjb2x1bW5zKSA9PSBudW1iZXIsICRjb2x1bW5zLCBudWxsKTtcbn1cblxuXG4vLyBTdXN5IENvdW50XG4vLyAtLS0tLS0tLS0tXG4vLyBGaW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiBhIGdpdmVuIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktY291bnQoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykgb3IgbGVuZ3RoKCRjb2x1bW5zKTtcbn1cblxuXG4vLyBTdXN5IFN1bVxuLy8gLS0tLS0tLS1cbi8vIEZpbmQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5LXN1bShcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuXG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQgPT0gd2lkZSwgMCwgaWYoJHNwcmVhZCA9PSB3aWRlciwgMSwgLTEpKTtcbiAgJGd1dHRlci1zdW06IChzdXN5LWNvdW50KCRjb2x1bW5zKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICRjb2x1bW4tc3VtOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgQGlmIG5vdCgkY29sdW1uLXN1bSkge1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGNvbHVtbnMge1xuICAgICAgJGNvbHVtbi1zdW06ICgkY29sdW1uLXN1bSBvciAwKSArICRjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtO1xufVxuXG5cbi8vIFN1c3kgU2xpY2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBvZiBjb2x1bW5zIGF0IGEgZ2l2ZW4gbG9jYXRpb24uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkc3ViLWNvbHVtbnM6ICRzcGFuO1xuXG4gIEBpZiBub3QoaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpKSB7XG4gICAgJGxvY2F0aW9uOiAkbG9jYXRpb24gb3IgMTtcbiAgICAkc3ViLWNvbHVtbnM6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRzcGFuKSB7XG4gICAgICAkc3ViLWNvbHVtbnM6IGFwcGVuZCgkc3ViLWNvbHVtbnMsIG50aCgkY29sdW1ucywgJGkpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG4vLyBTdXN5XG4vLyAtLS0tXG4vLyBGaW5kIHRoZSBzdW0gb2YgYSBjb2x1bW4tc3Bhbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5KFxuICAkc3BhbixcbiAgJGxvY2F0aW9uICAgICA6IGZhbHNlLFxuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICAgICAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgICAgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG4gICRzcGFuOiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcblxuICBAcmV0dXJuIHN1c3ktc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCk7XG59XG4iLCIvLyBGbG9hdCBBUElcbi8vID09PT09PT09PVxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbkBpbXBvcnQgXCJmbG9hdC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJmbG9hdC9zcGFuXCI7XG5AaW1wb3J0IFwiZmxvYXQvZW5kXCI7XG5AaW1wb3J0IFwiZmxvYXQvaXNvbGF0ZVwiO1xuIiwiLy8gU2hhcmVkIEFQSVxuLy8gPT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydFwiO1xuXG5AaW1wb3J0IFwic2hhcmVkL2luc3BlY3RcIjtcbkBpbXBvcnQgXCJzaGFyZWQvb3V0cHV0XCI7XG5AaW1wb3J0IFwic2hhcmVkL2RpcmVjdGlvblwiO1xuQGltcG9ydCBcInNoYXJlZC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic2hhcmVkL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNoYXJlZC9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic2hhcmVkL3BhZGRpbmdcIjtcblxuXG5cbiIsIi8vIFN1c3kgQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydC9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9wcmVmaXhcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3JlbVwiO1xuQGltcG9ydCBcInN1cHBvcnQvY2xlYXJmaXhcIjtcbiIsIi8vIEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgU3VwcG9ydCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgYnJlYWtwb2ludDogdHJ1ZSxcbiAgICBib3gtc2l6aW5nOiB0cnVlLFxuICAgIHJlbTogdHJ1ZSxcbiAgKSxcbikpO1xuXG5cbi8vIFN1c3kgU3VwcG9ydCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VuZCBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0byB0aGUgcHJvcGVyIHN1cHBvcnQgbW9kdWxlcy5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXN1cHBvcnQoXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgLy8gQmFja2dyb3VuZCBTdXBwb3J0XG4gIEBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtaW1hZ2UoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1zaXplIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtc2l6ZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLW9yaWdpbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbigkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWNsaXAge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1jbGlwKCR2YWwpO1xuICB9XG5cbiAgLy8gQm94LVNpemluZyBTdXBwb3J0XG4gIEBlbHNlIGlmICRwcm9wID09IGJveC1zaXppbmcge1xuICAgIEBpbmNsdWRlIHN1c3ktYm94LXNpemluZygkdmFsKTtcbiAgfVxuXG4gIC8vIFJlbSBTdXBwb3J0XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cblxuXG4vLyBTdXN5IFN1cHBvcnQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBzdXBwb3J0IG9mIGEgZmVhdHVyZS5cbi8vIC0gJGZlYXR1cmUgICAgICAgOiA8c3RyaW5nPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nIFwicmVtXCIgb3IgXCJib3gtc2l6aW5nXCJcbi8vIC0gJHJlcXVpcmVtZW50cyAgOiA8bWFwPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nICh2YXJpYWJsZTogcmVtLXdpdGgtcHgtZmFsbGJhY2ssIG1peGluOiByZW0pXG4vLyAtICR3YXJuICAgICAgICAgIDogPGJvb2w+XG5AZnVuY3Rpb24gc3VzeS1zdXBwb3J0KFxuICAkZmVhdHVyZSxcbiAgJHJlcXVpcmVtZW50czogKCksXG4gICR3YXJuOiB0cnVlXG4pIHtcbiAgJF9zdXBwb3J0OiBzdXN5LWdldCh1c2UtY3VzdG9tICRmZWF0dXJlKTtcblxuICBAaWYgJF9zdXBwb3J0IHtcbiAgICAkX2ZhaWw6IGZhbHNlO1xuXG4gICAgQGVhY2ggJF90eXBlLCAkX3JlcSBpbiAkcmVxdWlyZW1lbnRzIHtcbiAgICAgIEBlYWNoICRfaSBpbiAkX3JlcSB7XG4gICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcblxuICAgICAgICBAaWYgbm90KCRfcGFzcykge1xuICAgICAgICAgICRfZmFpbDogdHJ1ZTtcbiAgICAgICAgICBAaWYgJHdhcm4ge1xuICAgICAgICAgICAgQHdhcm4gXCJZb3UgcmVxdWVzdGVkIGN1c3RvbSBzdXBwb3J0IG9mICN7JGZlYXR1cmV9LCBidXQgdGhlICN7JF9pfSAjeyRfdHlwZX0gaXMgbm90IGF2YWlsYWJsZS5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3N1cHBvcnQ6IGlmKCRfZmFpbCwgZmFsc2UsICRfc3VwcG9ydCk7XG4gIH1cblxuICBAcmV0dXJuICRfc3VwcG9ydDtcbn1cbiIsIi8vIFN1c3kgUHJlZml4XG4vLyA9PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IHNpbXBsZSBwcmVmaXhlZCBwcm9wZXJ0aWVzLlxuLy8gLSAkcHJvcCAgICAgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgICAgICA6IDxjc3MgdmFsdWU+XG4vLyAtIFskcHJlZml4XSAgOiA8YnJvd3NlciBwcmVmaXggbGlzdD5cbkBtaXhpbiBzdXN5LXByZWZpeChcbiAgJHByb3AsXG4gICR2YWwsXG4gICRwcmVmaXg6IG9mZmljaWFsXG4pIHtcbiAgQGVhY2ggJGZpeCBpbiAkcHJlZml4IHtcbiAgICAkZml4OiBpZigkZml4ID09IG9mZmljaWFsIG9yIG5vdCgkZml4KSwgJHByb3AsICctI3skZml4fS0jeyRwcm9wfScpO1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRmaXgsICR2YWwpO1xuICB9XG59XG4iLCIvLyBCYWNrZ3JvdW5kIFByb3BlcnRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEJhY2tncm91bmQgSW1hZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtaW1hZ2U+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2Vcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtaW1hZ2UsIChtaXhpbjogYmFja2dyb3VuZC1pbWFnZSksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLi4uKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBTaXplXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLXNpemU+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1zaXplKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgkc2l6ZSk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemU7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIE9yaWdpblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtb3JpZ2luPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oXG4gICRvcmlnaW5cbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLW9yaWdpbikpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRvcmlnaW47XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIENsaXBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1jbGlwPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1jbGlwKFxuICAkY2xpcFxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtY2xpcCkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNsaXAoJGNsaXApO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwO1xuICB9XG59XG4iLCIvLyBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09XG5cbi8vIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkbW9kZWw6IDxib3gtc2l6aW5nPlxuQG1peGluIHN1c3ktYm94LXNpemluZyhcbiAgJG1vZGVsOiBjb250ZW50LWJveFxuKSB7XG4gIEBpZiAkbW9kZWwge1xuICAgIEBpZiBzdXN5LXN1cHBvcnQoYm94LXNpemluZywgKG1peGluOiBib3gtc2l6aW5nKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKCRtb2RlbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJlZml4OiAobW96LCB3ZWJraXQsIG9mZmljaWFsKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktcHJlZml4KGJveC1zaXppbmcsICRtb2RlbCwgJHByZWZpeCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBEZWJ1Z2dpbmdcbi8vID09PT09PT09PVxuXG4vLyBTdXN5IEluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8gT3V0cHV0IGFyZ3VtZW50cyBwYXNzZWQgdG8gYSBpbnNwZWN0LlxuLy8gLSAkbWl4aW4gIDogPHN1c3kgbWl4aW4+XG4vLyAtICRpbnNwZWMgICA6IDxtaXhpbiBhcmd1bWVudHM+XG5cbkBtaXhpbiBzdXN5LWluc3BlY3QoXG4gICRtaXhpbixcbiAgJGluc3BlY3Rcbikge1xuICAkc2hvdzogZmFsc2U7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGluc3BlY3Qge1xuICAgIEBpZiBpbmRleCgkaXRlbSwgaW5zcGVjdCkge1xuICAgICAgJHNob3c6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzaG93IG9yIHN1c3ktZ2V0KGRlYnVnIGluc3BlY3QpIHtcbiAgICAtc3VzeS0jeyRtaXhpbn06IGluc3BlY3QoJGluc3BlY3QpO1xuICB9XG59XG4iLCIvLyBPdXRwdXRcbi8vID09PT09PVxuXG4vLyBPdXRwdXRcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IENTUyB3aXRoIHByb3BlciBicm93c2VyIHN1cHBvcnQuXG4vLyAtICRzdHlsZXMgIDogPG1hcCBvZiBjc3MgcHJvcGVydHktdmFsdWUgcGFpcnM+XG5AbWl4aW4gb3V0cHV0KFxuICAkc3R5bGVzXG4pIHtcbiAgQGVhY2ggJHByb3AsICR2YWwgaW4gJHN0eWxlcyB7XG4gICAgQGluY2x1ZGUgc3VzeS1zdXBwb3J0KCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gR3JpZCBCYWNrZ3JvdW5kIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuLy8gLSBTdWItcGl4ZWwgcm91bmRpbmcgY2FuIGxlYWQgdG8gc2V2ZXJhbCBwaXhlbHMgdmFyaWF0aW9uIGJldHdlZW4gYnJvd3NlcnMuXG5cbi8vIEdyaWQgQmFja2dyb3VuZCBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGltYWdlOiBiYWNrZ3JvdW5kLWltYWdlXG4vLyAtICRzaXplOiBiYWNrZ3JvdW5kLXNpemVcbi8vIC0gJGNsaXA6IGJhY2tncm91bmQtY2xpcFxuLy8gLSBbJGZsb3ddOiBsdHIgfCBydGxcbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0IChcbiAgJGltYWdlLFxuICAkc2l6ZTogbnVsbCxcbiAgJGNsaXA6IG51bGwsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2UsXG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZSxcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBmcm9tKCRmbG93KSB0b3AsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBNYXJnaW5zIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gTWFyZ2luIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBtYXJnaW4tb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUGFkZGluZyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIFBhZGRpbmcgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBwYWRkaW5nLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBDb250YWluZXJcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGZsb2F0LWNvbnRhaW5lcihcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gIEBpbmNsdWRlIHN1c3ktY2xlYXJmaXg7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1vdXRwdXQoJHdpZHRoLCAkanVzdGlmeSwgJHByb3BlcnR5KTtcbn1cbiIsIi8vIEZsb2F0IFNwYW4gQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBTcGFuIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHdpZHRoICAgICAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG9hdF0gICAgICAgICAgIDogZnJvbSB8IHRvXG4vLyAtIFskbWFyZ2luLWJlZm9yZV0gICA6IDxsZW5ndGg+XG4vLyAtIFskbWFyZ2luLWFmdGVyXSAgICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1iZWZvcmVdICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1hZnRlcl0gICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gICAgICAgICAgICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LXNwYW4tb3V0cHV0KFxuICAkd2lkdGgsXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbSxcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsLFxuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGwsXG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbCxcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsLFxuICAkZmxvdyAgICAgICAgICAgICA6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvICAgICA6IHRvKCRmbG93KTtcbiAgJGZyb20gICA6IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aDogJHdpZHRoLFxuICAgIGZsb2F0OiBpZigkZmxvYXQgPT0gdG8sICR0bywgbnVsbCkgb3IgaWYoJGZsb2F0ID09IGZyb20sICRmcm9tLCBudWxsKSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkcGFkZGluZy1hZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IElzb2xhdGlvbiBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gSXNvbGF0ZSBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRwdXNoICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBpc29sYXRlLW91dHB1dChcbiAgJHB1c2gsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiAkZnJvbSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRwdXNoLFxuICAgIG1hcmdpbi0jeyR0b306IC0xMDAlLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFN1c3kgU2V0dGluZ3Ncbi8vID09PT09PT09PT09PT1cblxuLy8gU3VzeSBMYW5ndWFnZSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBjZW50ZXIsXG4gIGd1dHRlci1wb3NpdGlvbjogYWZ0ZXIsXG4gIGdsb2JhbC1ib3gtc2l6aW5nOiBjb250ZW50LWJveCxcbiAgZGVidWc6IChcbiAgICBpbWFnZTogaGlkZSxcbiAgICBjb2xvcjogcmdiYSgjNjZmLCAuMjUpLFxuICAgIG91dHB1dDogYmFja2dyb3VuZCxcbiAgICB0b2dnbGU6IHRvcCByaWdodCxcbiAgKSxcbikpO1xuXG5cbi8vIFZhbGlkIEtleXdvcmQgVmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFOiBET05UJ1QgVE9VQ0hcbiRzdXN5LWtleXdvcmRzOiAoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogc3RhdGljIGZsdWlkLFxuICBvdXRwdXQ6IGlzb2xhdGUgZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogbGVmdCBjZW50ZXIgcmlnaHQsXG4gIGZsb3c6IGx0ciBydGwsXG4gIGd1dHRlci1wb3NpdGlvbjogYmVmb3JlIGFmdGVyIHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljLFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94IGNvbnRlbnQtYm94LFxuICBzcGFuOiBmdWxsLFxuICBlZGdlOiBmaXJzdCBhbHBoYSBsYXN0IG9tZWdhIGZ1bGwsXG4gIHNwcmVhZDogbmFycm93IHdpZGUgd2lkZXIsXG4gIGd1dHRlci1vdmVycmlkZTogbm8tZ3V0dGVycyBuby1ndXR0ZXIsXG4gIHJvbGU6IG5lc3QsXG4gIGNsZWFyOiBicmVhayBub2JyZWFrLFxuICBkZWJ1ZyBpbWFnZTogc2hvdyBoaWRlIHNob3ctY29sdW1ucyBzaG93LWJhc2VsaW5lLFxuICBkZWJ1ZyBvdXRwdXQ6IGJhY2tncm91bmQgb3ZlcmxheSxcbik7XG5cblxuLy8gUGFyc2UgU3VzeSBLZXl3b3JkcyBhbmQgTWFwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNldHRpbmdzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gc3RyaW5nc1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IHN0cmluZyB7XG4gICAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkc3VzeS1rZXl3b3JkcyB7XG4gICAgICAgICAgQGlmIGluZGV4KCR2YWx1ZSwgJGl0ZW0pIHtcbiAgICAgICAgICAgICRfa2V5LXZhbHVlOiBhcHBlbmQoJGtleSwgJGl0ZW0pO1xuICAgICAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtc2V0KCRfcmV0dXJuLCAkX2tleS12YWx1ZS4uLik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAvLyBtYXBzXG4gICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IG1hcCB7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIENvbHVtbnMgJiBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWxheW91dChcbiAgJHNob3J0XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuICAkX2NvbHVtbnM6ICgpO1xuICAkX2d1dHRlcnM6IG51bGw7XG5cbiAgQGlmIG5vdCh1bml0bGVzcyhudGgobnRoKCRzaG9ydCwgMSksIDEpKSkge1xuICAgICRfZ3V0dGVyczogbnRoKCRzaG9ydCwgMSk7XG4gIH0gQGVsc2Uge1xuICAgICRfY29sdW1uczogKGNvbHVtbnM6IG50aCgkc2hvcnQsIDEpKTtcbiAgICAkX2d1dHRlcnM6IGlmKGxlbmd0aCgkc2hvcnQpID4gMSwgbnRoKCRzaG9ydCwgMiksICRfZ3V0dGVycyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkX2d1dHRlcnMpID09IGxpc3QgYW5kIGxlbmd0aCgkX2d1dHRlcnMpID4gMCB7XG4gICAgJF9ndXR0ZXJzOiAoXG4gICAgICBndXR0ZXJzOiBudGgoJF9ndXR0ZXJzLCAyKSAvIG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICAgY29sdW1uLXdpZHRoOiBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlcnM6IGlmKCRfZ3V0dGVycywgKGd1dHRlcnM6ICRfZ3V0dGVycyksICgpKTtcbiAgfVxuXG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfY29sdW1ucyk7XG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfZ3V0dGVycyk7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHcmlkL0NvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWdyaWQoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogcGFyc2Utc2V0dGluZ3MoJHNob3J0KTtcbiAgJF9sYXlvdXQ6ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gbnVtYmVyIG9yIGxpc3RcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IG9yIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICAgJF9sYXlvdXQ6IGFwcGVuZCgkX2xheW91dCwgJGl0ZW0pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY29udGFpbmVyOiAkaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9sYXlvdXQ6IGlmKGxlbmd0aCgkX2xheW91dCkgPiAwLCBwYXJzZS1sYXlvdXQoJF9sYXlvdXQpLCAkX2xheW91dCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkX3JldHVybiwgJF9sYXlvdXQpO1xufVxuXG5cbi8vIFBhcnNlIFNwYW5cbi8vIC0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zcGFuKFxuICAkc2hvcnQsXG4gICRrZXk6IHNwYW5cbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgICRfYXQ6IGluZGV4KCRzaG9ydCwgYXQpO1xuXG4gICAgQGlmICRfYXQge1xuICAgICAgJF9sb2NpOiAkX2F0ICsgMTtcbiAgICAgICRfbG9jYXRpb246IG50aCgkc2hvcnQsICRfbG9jaSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAobG9jYXRpb246ICRfbG9jYXRpb24pKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfYXQsIG51bGwpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9sb2NpLCBudWxsKTtcbiAgICB9XG5cbiAgICAkX2k6IDE7XG4gICAgJF9zcGFuOiAoKTtcblxuICAgIEB3aGlsZSAkX2kgPD0gbGVuZ3RoKCRzaG9ydCkge1xuICAgICAgJF90aGlzOiBudGgoJHNob3J0LCAkX2kpO1xuXG4gICAgICBAaWYgdHlwZS1vZigkX3RoaXMpID09IG51bWJlciB7XG4gICAgICAgICRfc3BhbjogYXBwZW5kKCRfc3BhbiwgJF90aGlzKTtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgIH0gQGVsc2UgaWYgJF90aGlzID09IG9mIHtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgICAgJF9pOiBsZW5ndGgoJHNob3J0KSArIDE7XG4gICAgICB9XG5cbiAgICAgICRfaTogJF9pICsgMTtcbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCRfc3BhbikgPiAwIHtcbiAgICAgICRfc3BhbjogaWYobGVuZ3RoKCRfc3BhbikgPT0gMSwgbnRoKCRfc3BhbiwgMSksICRfc3Bhbik7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJGtleTogJF9zcGFuKSk7XG4gICAgfVxuXG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgcGFyc2UtZ3JpZCgkc2hvcnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWd1dHRlcnMoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX2d1dHRlcnM6IHBhcnNlLXNwYW4oJHNob3J0LCBndXR0ZXItb3ZlcnJpZGUpO1xuICAkX3NwYW46IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJF9ndXR0ZXJzKTtcblxuICBAaWYgJF9zcGFuIGFuZCBub3QobWFwLWdldCgkX2d1dHRlcnMsIGNvbHVtbnMpKSB7XG4gICAgJF9jb250ZXh0OiAoKTtcbiAgICAkX25ldzogKCk7XG5cbiAgICBAZWFjaCAkaXRlbSBpbiAkX3NwYW4ge1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgJF9jb250ZXh0OiBhcHBlbmQoJF9jb250ZXh0LCAkaXRlbSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJF9uZXc6IGFwcGVuZCgkX25ldywgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICRfY29udGV4dDogcGFyc2UtZ3JpZCgkX2NvbnRleHQpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDAsIG51bGwsICRfbmV3KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAxLCBudGgoJF9uZXcsIDEpLCAkX25ldyk7XG4gICAgJF9uZXc6IChndXR0ZXItb3ZlcnJpZGU6IGlmKCRfbmV3ICE9ICRfc3BhbiwgJF9uZXcsICRfc3BhbikpO1xuXG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX25ldyk7XG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX2NvbnRleHQpO1xuICB9XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG4iLCIvLyBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09XG5cblxuLy8gVmFsaWRhdGUgQ29sdW1uIE1hdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1uLW1hdGgoXG4gICRtYXRoLFxuICAkY29sdW1uLXdpZHRoXG4pIHtcbiAgQGlmICRtYXRoID09IHN0YXRpYyBhbmQgbm90KCRjb2x1bW4td2lkdGgpIHtcbiAgICBAZXJyb3IgJ1N0YXRpYyBtYXRoIHJlcXVpcmVzIGEgdmFsaWQgY29sdW1uLXdpZHRoIHNldHRpbmcuJztcbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi13aWR0aDtcbn1cbiIsIi8vIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBTZXQgYSBuZXcgbGF5b3V0IHVzaW5nIGEgc2hvcnRoYW5kXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXlvdXQsICRpbnNwZWN0KTtcbn1cblxuXG4vLyBVc2UgR3JpZFxuLy8gLS0tLS0tLS1cbi8vIFVzZSBhbiBhcmJpdHJhcnkgbGF5b3V0IGZvciBhIHNlY3Rpb24gb2YgY29kZVxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIHdpdGgtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJG9sZCAgICAgIDogJHN1c3k7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qod2l0aC1sYXlvdXQsICRpbnNwZWN0KTtcblxuICBAY29udGVudDtcblxuICAkc3VzeTogJG9sZCAhZ2xvYmFsO1xufVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gYSBwYXJzZWQgbGF5b3V0IG1hcCBiYXNlZCBvbiBzaG9ydGhhbmQgc3ludGF4XG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBsYXlvdXQoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgQHJldHVybiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xufVxuXG5cbi8vIEdldCBMYXlvdXRcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIG5ldyBsYXlvdXQgYmFzZWQgb24gY3VycmVudCBhbmQgZ2l2ZW4gc2V0dGluZ3Ncbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBmdW5jdGlvbiBfZ2V0LWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRsYXlvdXQ6IGxheW91dCgkbGF5b3V0KTtcbiAgQHJldHVybiBpZigkY2xlYW4sICRsYXlvdXQsIF9zdXN5LWRlZXAtbWVyZ2UoJHN1c3ksICRsYXlvdXQpKTtcbn1cbiIsIi8vIFN1c3kgQm94IFNpemluZ1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBib3ggbW9kZWwgZ2xvYmFsbHkgb24gYWxsIGVsZW1lbnRzLlxuLy8gLSBbJGJveF06IGJvcmRlci1ib3ggfCBjb250ZW50LWJveFxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBnbG9iYWwtYm94LXNpemluZyhcbiAgJGJveDogc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpLFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdDogJGJveDtcblxuICBAaWYgJGluaGVyaXQge1xuICAgIEBhdC1yb290IHtcbiAgICAgICBodG1sIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgICAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cbiAgICAgfVxuICB9IEBlbHNlIHtcbiAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2xvYmFsLWJveC1zaXppbmcsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgdXBkYXRlLWJveC1tb2RlbCgkYm94KTtcbn1cblxuLy8gQm9yZGVyIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBIGxlZ2FjeSBzaG9ydGN1dC4uLlxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBib3JkZXItYm94LXNpemluZyhcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCwgJGluaGVyaXQpO1xufVxuXG4vLyBVcGRhdGUgQm94IE1vZGVsXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBVcGRhdGVzIGdsb2JhbCBib3ggbW9kZWwgc2V0dGluZ1xuQG1peGluIHVwZGF0ZS1ib3gtbW9kZWwoXG4gICRib3hcbikge1xuICBAaWYgJGJveCAhPSBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykge1xuICBAaW5jbHVkZSBzdXN5LXNldChnbG9iYWwtYm94LXNpemluZywgJGJveCk7XG4gIH1cbn1cbiIsIi8vIENvbnRleHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBOZXN0ZWQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBncmlkIGZvciBuZXN0ZWQgY29udGV4dC5cbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuQGZ1bmN0aW9uIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkY29udGV4dCAgICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkc3BhbiAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRjb250ZXh0KTtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGNvbnRleHQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcblxuICBAcmV0dXJuIHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xufVxuXG4vLyBOZXN0ZWQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFVzZSBhIHN1YnNldCBncmlkIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbi8vIC0gQGNvbnRlbnQgICA6IDxjb250ZW50PlxuQG1peGluIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRvbGQgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpO1xuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiBuZXN0ZWQoJGNvbnRleHQpKSkgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobmVzdGVkLCAkaW5zcGVjdCk7XG4gIEBjb250ZW50O1xuXG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6ICRvbGQpKSAhZ2xvYmFsO1xufVxuIiwiLy8gQmFja2dyb3VuZCBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IGZhbHNlO1xuXG5cbi8vIFNob3cgR3JpZC9zXG4vLyAtLS0tLS0tLS0tLVxuLy8gU2hvdyBncmlkIG9uIGFueSBlbGVtZW50IHVzaW5nIGVpdGhlciBiYWNrZ3JvdW5kIG9yIG92ZXJsYXkuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIHNob3ctZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3Q6ICRncmlkO1xuICAkX291dHB1dDogZGVidWctZ2V0KG91dHB1dCwgJGdyaWQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzaG93LWdyaWQsICRpbnNwZWN0KTtcbiAgQGlmICRfb3V0cHV0ID09IG92ZXJsYXkgYW5kIHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCkgIT0gaGlkZSB7XG4gICAgQGluY2x1ZGUgb3ZlcmxheS1ncmlkKCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvdy1ncmlkcyhcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRncmlkKTtcbn1cblxuLy8gQmFja2dyb3VuZCBHcmlkXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNob3cgYSBncmlkIGJhY2tncm91bmQgb24gYW55IGVsZW1lbnQuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIGJhY2tncm91bmQtZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGdyaWQ7XG4gICRfb3V0cHV0ICA6IGdldC1iYWNrZ3JvdW5kKCRncmlkKTtcblxuICBAaWYgbGVuZ3RoKCRfb3V0cHV0KSA+IDAge1xuICAgICRfZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpO1xuXG4gICAgJF9pbWFnZTogKCk7XG4gICAgQGVhY2ggJG5hbWUsICRsYXllciBpbiBtYXAtZ2V0KCRfb3V0cHV0LCBpbWFnZSkge1xuICAgICAgJF9kaXJlY3Rpb246IGlmKCRuYW1lID09IGJhc2VsaW5lLCB0byBib3R0b20sIHRvIHRvKCRfZmxvdykpO1xuICAgICAgJF9pbWFnZTogYXBwZW5kKCRfaW1hZ2UsIGxpbmVhci1ncmFkaWVudCgkX2RpcmVjdGlvbiwgJGxheWVyKSwgY29tbWEpO1xuICAgIH1cbiAgICAkX291dHB1dDogbWFwLW1lcmdlKCRfb3V0cHV0LCAoaW1hZ2U6ICRfaW1hZ2UpKTtcblxuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICAgIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChiYWNrZ3JvdW5kLWdyaWQsICRpbnNwZWN0KTtcbiAgfVxufVxuXG5cbi8vIE92ZXJsYXkgR3JpZFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBHZW5lcmF0ZSBhbiBpY29uIHRvIHRyaWdnZXIgZ3JpZC1vdmVybGF5cyBvbiBhbnkgZ2l2ZW4gZWxlbWVudHMuXG4vLyAkZ3JpZHMuLi4gIDogPHNlbGVjdG9yPiBbPHNldHRpbmdzPl0gWywgPHNlbGVjdG9yPl0qXG5AbWl4aW4gb3ZlcmxheS1ncmlkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGlmIG5vdCgkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHMpIHtcbiAgICBAYXQtcm9vdCBoZWFkIHsgQGluY2x1ZGUgb3ZlcmxheS1oZWFkKCRncmlkKTsgfVxuICAgIEBhdC1yb290IGhlYWQ6YmVmb3JlIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpob3ZlciB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlci1ob3ZlcjsgfVxuICAgICRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgaGVhZDpob3ZlciB+ICYsXG4gIGhlYWQ6aG92ZXIgfiBib2R5ICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLW92ZXJsYXktYmFzZTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlciB7XG4gIGNvbnRlbnQ6IFwifHx8XCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udDoge1xuICAgIGZhbWlseTogc2Fucy1zZXJpZjtcbiAgICBzaXplOiAxNnB4O1xuICAgIHdlaWdodDogYm9sZDtcbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXIgSG92ZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXItaG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuNSk7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgSGVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGhlYWQ+IHN0eWxlcyB0byBjcmVhdGUgZ3JpZCBvdmVybGF5IHRvZ2dsZVxuQG1peGluIG92ZXJsYXktaGVhZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRfdG9nZ2xlOiBkZWJ1Zy1nZXQodG9nZ2xlLCAkZ3JpZCk7XG4gICRfaG9yejogbnVsbDtcbiAgJF92ZXJ0OiBudWxsO1xuXG4gIEBlYWNoICRzaWRlIGluICRfdG9nZ2xlIHtcbiAgICAkX2hvcno6IGlmKCRzaWRlID09IGxlZnQgb3IgJHNpZGUgPT0gcmlnaHQsICRzaWRlLCAkX2hvcnopO1xuICAgICRfdmVydDogaWYoJHNpZGUgPT0gdG9wIG9yICRzaWRlID09IGJvdHRvbSwgJHNpZGUsICRfdmVydCk7XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICAjeyRfaG9yen06IDEwcHg7XG4gICN7JF92ZXJ0fTogMTBweDtcbiAgei1pbmRleDogOTk5O1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjI1KTtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gR3JpZCBPdmVybGF5IEJhc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmFzZSBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIG92ZXJsYXlcbkBtaXhpbiBncmlkLW92ZXJsYXktYmFzZSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICB6LWluZGV4OiA5OTg7XG59XG5cblxuLy8gR2V0IFN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLXN5bShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgICAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9ndXR0ZXJzICAgICAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGdyaWQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRncmlkKTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGdyaWQpO1xuXG4gICRfY29sb3IgICAgICAgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfdHJhbnMgICAgICAgICA6IHRyYW5zcGFyZW50O1xuICAkX2xpZ2h0ICAgICAgICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG5cbiAgJF9lbmQgICAgICAgICAgIDogMSArICRfZ3V0dGVycztcbiAgJF9hZnRlciAgICAgICAgIDogcGVyY2VudGFnZSgxLyRfZW5kKTtcbiAgJF9zdG9wcyAgICAgICAgIDogKCk7XG4gICRfc2l6ZSAgICAgICAgICA6IHNwYW4oMSAkZ3JpZCB3aWRlKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodDtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3BsaXQ6ICRfZ3V0dGVycy8yO1xuICAgICRfYmVmb3JlOiBwZXJjZW50YWdlKCRfc3BsaXQvJF9lbmQpO1xuICAgICRfYWZ0ZXI6IHBlcmNlbnRhZ2UoKDEgKyAkX3NwbGl0KS8kX2VuZCk7XG4gICAgJF9zdG9wczogJF90cmFucyAkX2JlZm9yZSwgJF9jb2xvciAkX2JlZm9yZSwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9XG5cbiAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICRfc2l6ZTogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkgKiAkX2VuZDtcbiAgfVxuXG4gICRfb3V0cHV0OiAoXG4gICAgaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSxcbiAgICBzaXplOiAkX3NpemUsXG4gICk7XG5cbiAgQHJldHVybiAkX291dHB1dDtcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEluc2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1pbnNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgU3BsaXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1zcGxpdChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRzdGFydCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuXG4gICAgJF9lbmQ6ICRzdGFydCArIHNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRfZW5kLCBjb21tYSk7XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIE91dHNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLW91dHNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfdHJhbnMgICA6IHRyYW5zcGFyZW50O1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGd1dHRlcjogZ2V0LXNwYW4td2lkdGgoZmlyc3QgJGxvY2F0aW9uICRncmlkKTtcblxuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuXG4gICAgICAkZ3V0dGVyOiAkX2xpZ2h0ICRndXR0ZXIsICRfdHJhbnMgJGd1dHRlciwgJF90cmFucyAkX2VuZDtcbiAgICAgICR0aGlzLXN0b3A6IGpvaW4oJHRoaXMtc3RvcCwgJGd1dHRlciwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtYXN5bShcbiAgJGdyaWRcbikge1xuICAkX3N0b3BzOiAoKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0taW5zaWRlKCRncmlkKTtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLXNwbGl0KCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tb3V0c2lkZSgkZ3JpZCk7XG4gIH1cblxuICBAcmV0dXJuIChpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpKTtcbn1cblxuXG4vLyBHZXQgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9zaG93ICAgIDogc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKTtcbiAgJF9yZXR1cm4gIDogKCk7XG5cbiAgQGlmICRfc2hvdyBhbmQgJF9zaG93ICE9ICdoaWRlJyB7XG4gICAgJF9jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICAkX3N5bTogaXMtc3ltbWV0cmljYWwoJF9jb2x1bW5zKTtcbiAgICAgICRfcmV0dXJuOiBpZigkX3N5bSwgZ2V0LWJhY2tncm91bmQtc3ltKCRncmlkKSwgZ2V0LWJhY2tncm91bmQtYXN5bSgkZ3JpZCkpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGNvbnRlbnQtYm94KSk7XG4gICAgfVxuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1jb2x1bW5zJ1xuICAgICAgYW5kIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoYmFzZS1saW5lLWhlaWdodClcbiAgICAgIGFuZCB0eXBlLW9mKCRiYXNlLWxpbmUtaGVpZ2h0KSA9PSAnbnVtYmVyJ1xuICAgICAgYW5kIG5vdCB1bml0bGVzcygkYmFzZS1saW5lLWhlaWdodCkge1xuICAgICAgJF9jb2xvcjogdmFyaWFibGUtZXhpc3RzKCdncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3InKTtcbiAgICAgICRfY29sb3I6IGlmKCRfY29sb3IsICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICMwMDApO1xuXG4gICAgICAkX2ltYWdlOiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSk7XG4gICAgICAkX3NpemU6IG1hcC1nZXQoJF9yZXR1cm4sIHNpemUpO1xuICAgICAgJF9iYXNlbGluZTogKGJhc2VsaW5lOiAoJF9jb2xvciAxcHgsIHRyYW5zcGFyZW50IDFweCkpO1xuICAgICAgJF9iYXNlbGluZS1zaXplOiAxMDAlICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoXG4gICAgICAgIGltYWdlOiBpZigkX2ltYWdlLCBtYXAtbWVyZ2UoJF9pbWFnZSwgJF9iYXNlbGluZSksICRfYmFzZWxpbmUpLFxuICAgICAgICBzaXplOiBpZigkX3NpemUsICgkX3NpemUsICRfYmFzZWxpbmUtc2l6ZSksICRfYmFzZWxpbmUtc2l6ZSksXG4gICAgICApKTtcblxuICAgICAgQGlmICRfc2hvdyA9PSAnc2hvdycge1xuICAgICAgICAkX2NsaXA6IG1hcC1nZXQoJF9yZXR1cm4sIGNsaXApO1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogam9pbigkX2NsaXAsIGJvcmRlci1ib3gsIGNvbW1hKSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJF9zaG93ID09ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICBAd2FybiAnUGxlYXNlIHByb3ZpZGUgYSAkYmFzZS1saW5lLWhlaWdodCB3aXRoIHRoZSBkZXNpcmVkIGhlaWdodCBhbmQgdW5pdHMnO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSkge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChmbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gR2V0IERlYnVnXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgdmFsdWUgb2YgYSBkZWJ1ZyBzZXR0aW5nXG4vLyAtICRrZXk6IDxzZXR0aW5nPlxuQGZ1bmN0aW9uIGRlYnVnLWdldChcbiAgJGtleSxcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGtleTogam9pbihkZWJ1ZywgJGtleSwgc3BhY2UpO1xuICBAcmV0dXJuIHN1c3ktZ2V0KCRrZXksICRncmlkKTtcbn1cbiIsIi8vIENvbnRhaW5lciBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBjb250YWluZXIgZWxlbWVudFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQG1peGluIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgICA6ICRsYXlvdXQ7XG4gICRsYXlvdXQgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcblxuICAkX3dpZHRoICAgICA6IGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG4gICRfanVzdGlmeSAgIDogcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKHN1c3ktZ2V0KGNvbnRhaW5lci1wb3NpdGlvbiwgJGxheW91dCkpO1xuICAkX3Byb3BlcnR5ICA6IGlmKHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpID09IHN0YXRpYywgd2lkdGgsIG1heC13aWR0aCk7XG5cbiAgJF9ib3ggICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkbGF5b3V0KTtcblxuICBAaWYgJF9ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJF9ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChjb250YWluZXIsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgZmxvYXQtY29udGFpbmVyKCRfd2lkdGgsICRfanVzdGlmeSwgJF9wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0KTtcbn1cblxuLy8gQ29udGFpbmVyIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gIEByZXR1cm4gZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbn1cblxuLy8gR2V0IENvbnRhaW5lciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIHRoZSBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWNvbnRhaW5lci13aWR0aChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0ICAgICAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX3dpZHRoICAgICAgICAgOiBzdXN5LWdldChjb250YWluZXIsICRsYXlvdXQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRsYXlvdXQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkbGF5b3V0KTtcblxuICBAaWYgbm90KCRfd2lkdGgpIG9yICRfd2lkdGggPT0gYXV0byB7XG4gICAgQGlmIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpIHtcbiAgICAgICRfY29sdW1ucyAgIDogc3VzeS1nZXQoY29sdW1ucywgJGxheW91dCk7XG4gICAgICAkX2d1dHRlcnMgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRsYXlvdXQpO1xuICAgICAgJF9zcHJlYWQgICAgOiBpZihpcy1zcGxpdCgkbGF5b3V0KSwgd2lkZSwgbmFycm93KTtcbiAgICAgICRfd2lkdGggICAgIDogc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSAqICRfY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF93aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfd2lkdGg7XG59XG5cbi8vIFBhcnNlIENvbnRhaW5lciBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZSB0aGUgJGNvbnRhaW5lci1wb3NpdGlvbiBpbnRvIG1hcmdpbiB2YWx1ZXMuXG4vLyAtIFskanVzdGlmeV0gICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IDxsZW5ndGg+IFs8bGVuZ3RoPl1cbkBmdW5jdGlvbiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oXG4gICRqdXN0aWZ5OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBjb250YWluZXItcG9zaXRpb24pXG4pIHtcbiAgJF9yZXR1cm46IGlmKCRqdXN0aWZ5ID09IGxlZnQsIDAsIGF1dG8pIGlmKCRqdXN0aWZ5ID09IHJpZ2h0LCAwLCBhdXRvKTtcblxuICBAaWYgbm90KGluZGV4KGxlZnQgcmlnaHQgY2VudGVyLCAkanVzdGlmeSkpIHtcbiAgICAkX3JldHVybjogbnRoKCRqdXN0aWZ5LCAxKTtcbiAgICAkX3JldHVybjogJF9yZXR1cm4gaWYobGVuZ3RoKCRqdXN0aWZ5KSA+IDEsIG50aCgkanVzdGlmeSwgMiksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIElzb2xhdGlvbiBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuXG4vLyBJc29sYXRlIFtNaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGlzb2xhdGlvbiBhcyBhbiBvdmVycmlkZS5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBtaXhpbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpbnNwZWN0OiAkaXNvbGF0ZTtcblxuICAkb3V0cHV0OiAoXG4gICAgcHVzaDogaXNvbGF0ZSgkaXNvbGF0ZSksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGlzb2xhdGUpLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChpc29sYXRlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGlzb2xhdGUtb3V0cHV0KCRvdXRwdXQuLi4pO1xufVxuXG5cbi8vIElzb2xhdGUgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYW4gaXNvbGF0aW9uIG9mZnNldCB3aWR0aC5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBmdW5jdGlvbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpc29sYXRlOiBwYXJzZS1zcGFuKCRpc29sYXRlKTtcbiAgJGlzb2xhdGlvbjogc3VzeS1nZXQoc3BhbiwgJGlzb2xhdGUpO1xuXG4gIEBpZiAkaXNvbGF0aW9uIGFuZCBub3QoZ2V0LWxvY2F0aW9uKCRpc29sYXRlKSkge1xuICAgICRuZXc6IChcbiAgICAgIHNwYW46IG51bGwsXG4gICAgICBsb2NhdGlvbjogJGlzb2xhdGlvbixcbiAgICApO1xuICAgICRpc29sYXRlOiBtYXAtbWVyZ2UoJGlzb2xhdGUsICRuZXcpO1xuICB9XG5cbiAgQHJldHVybiBnZXQtaXNvbGF0aW9uKCRpc29sYXRlKTtcbn1cblxuXG4vLyBHZXQgSXNvbGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGhcbi8vIC0gJGlucHV0OiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1pc29sYXRpb24oXG4gICRpbnB1dFxuKSB7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRpbnB1dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGlucHV0KTtcbiAgJHdpZHRoICAgICAgOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyIGFuZCBub3QodW5pdGxlc3MoJGxvY2F0aW9uKSkge1xuICAgICR3aWR0aDogJGxvY2F0aW9uO1xuICB9IEBlbHNlIGlmICRsb2NhdGlvbiB7XG4gICAgJHB1c2g6ICRsb2NhdGlvbiAtIDE7XG4gICAgQGlmICRwdXNoID4gMCB7XG4gICAgICAkcHVzaDogbWFwLW1lcmdlKCRpbnB1dCwgKFxuICAgICAgICBzcGFuOiAkcHVzaCxcbiAgICAgICAgbG9jYXRpb246IDEsXG4gICAgICAgIHNwcmVhZDogd2lkZSxcbiAgICAgICkpO1xuICAgICAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkcHVzaCk7XG4gICAgfVxuICB9XG5cbiAgQGlmIHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGlucHV0KSA9PSBzcGxpdFxuICAgICAgYW5kIHN1c3ktZ2V0KGd1dHRlcnMsICRpbnB1dCkgPiAwIHtcbiAgICAkd2lkdGg6IGlmKCR3aWR0aCA9PSBudWxsLCBndXR0ZXJzKCRpbnB1dCksICR3aWR0aCArIGd1dHRlcnMoJGlucHV0KSk7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aCBvciAwO1xufVxuIiwiLy8gR2FsbGVyeSBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIEdhbGxlcnlcbi8vIC0tLS0tLS1cbi8vIENyZWF0ZSBhbiBpc29sYXRlZCBnYWxsZXJ5XG4vLyAtICRzcGFuICAgICAgICA6IDxzcGFuPlxuLy8gLSBbJHNlbGVjdG9yXSAgOiBjaGlsZCB8IG9mLXR5cGVcbkBtaXhpbiBnYWxsZXJ5KFxuICAkc3BhbixcbiAgJHNlbGVjdG9yOiBjaGlsZFxuKSB7XG4gICRpbnNwZWN0ICAgIDogJHNwYW47XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRzcGFuICAgICAgIDogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246IDEpKTtcblxuICAkbiAgICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkY29udGV4dCAgICAgIDogc3VzeS1jb3VudCgkY29sdW1ucyk7XG4gICRmbG93ICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG5cbiAgJGluc2lkZSAgICAgICA6IGlzLWluc2lkZSgkc3Bhbik7XG4gICRmcm9tICAgICAgICAgOiBmcm9tKCRmbG93KTtcbiAgJGxpbmUgICAgICAgICA6IGZsb29yKCRjb250ZXh0IC8gJG4pO1xuICAkc3ltbWV0cmljYWwgIDogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aCAgICAgICAgICAgICA6IG51bGwsXG4gICAgZmxvYXQgICAgICAgICAgICAgOiBmcm9tLFxuICAgIG1hcmdpbi1iZWZvcmUgICAgIDogbnVsbCxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IG51bGwsXG4gICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICApO1xuXG4gIEBpZiAkaW5zaWRlIHtcbiAgICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAoXG4gICAgICBwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKSxcbiAgICAgIHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKSxcbiAgICApKTtcbiAgfVxuXG4gIEBpZiAkc3ltbWV0cmljYWwge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAod2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKSkpO1xuICB9XG5cbiAgJGJveCAgICAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGdsb2JhbC1ib3ggICA6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSA9PSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2FsbGVyeSwgJGluc3BlY3QpO1xuXG4gIC8vIENvbGxlY3RpdmUgT3V0cHV0XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggb3IgKCRpbnNpZGUgYW5kIG5vdCgkYm94KSBhbmQgbm90KCRnbG9iYWwtYm94KSkge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogYm9yZGVyLWJveCkpO1xuICB9IEBlbHNlIGlmICRib3ggPT0gY29udGVudC1ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogY29udGVudC1ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIC8vIEluZGl2aWR1YWwgTG9vcFxuICBAZm9yICRpdGVtIGZyb20gMSB0aHJvdWdoICRsaW5lIHtcbiAgICAkbnRoOiAnI3skbGluZX1uICsgI3skaXRlbX0nO1xuICAgICY6bnRoLSN7JHNlbGVjdG9yfSgjeyRudGh9KSB7XG4gICAgICAvLyBJbmRpdmlkdWFsIFByZXBcbiAgICAgICRvdXRwdXQ6IChcbiAgICAgICAgd2lkdGggICAgICAgICAgICAgOiBpZigkc3ltbWV0cmljYWwsIG51bGwsIGdldC1zcGFuLXdpZHRoKCRzcGFuKSksXG4gICAgICAgIGZsb2F0ICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgbWFyZ2luLWJlZm9yZSAgICAgOiBnZXQtaXNvbGF0aW9uKCRzcGFuKSxcbiAgICAgICAgbWFyZ2luLWFmdGVyICAgICAgOiAtMTAwJSxcbiAgICAgICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgICAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICAgICApO1xuXG4gICAgICAvLyBJbmRpdmlkdWFsIE91dHB1dFxuICAgICAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgICAgIEBpZiBnZXQtZWRnZSgkc3BhbikgPT0gZmlyc3Qge1xuICAgICAgICBAaW5jbHVkZSBicmVhaztcbiAgICAgICAgQGluY2x1ZGUgZmlyc3QoJHNwYW4pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgTG9jYXRpb24gSW5jcmVtZW50XG4gICAgICAkbG9jYXRpb246IGdldC1sb2NhdGlvbigkc3BhbikgKyAkbjtcbiAgICAgICRsb2NhdGlvbjogaWYoJGxvY2F0aW9uID4gJGNvbnRleHQsIDEsICRsb2NhdGlvbik7XG4gICAgICAkc3BhbjogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246ICRsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZ3V0dGVyIDogZ3V0dGVyKCRzcGFuKTtcbiAgJHNwYW4gICA6IHNwYW4oJHNwYW4pO1xuICAkd2lkdGggIDogaWYoJHNwbGl0IGFuZCAkZ3V0dGVyLCAkc3BhbiArICRndXR0ZXIsICRzcGFuKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNxdWlzaCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmUoJHByZSk7XG4gIEBpbmNsdWRlIHBvc3QoJHBvc3QpO1xufVxuIiwiLy8gUGFkZGluZyBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmVmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFN1ZmZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzdWZmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHN1ZmZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUGFkXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBwYWQoXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocGFkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZWZpeCgkcHJlKTtcbiAgQGluY2x1ZGUgc3VmZml4KCRwb3N0KTtcblxufVxuIiwiLy8gQmxlZWQgU3ludGF4XG4vLyA9PT09PT09PT09PT1cblxuLy8gQmxlZWRcbi8vIC0tLS0tXG4vLyBBZGQgbmVnYXRpdmUgbWFyZ2lucywgYW5kIGVxdWFsIHBvc2l0aXZlIHBhZGRpbmcgdG8gY3JlYXRlIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQoXG4gICRibGVlZDogMCBndXR0ZXIoKVxuKSB7XG4gICRpbnNwZWN0ICA6ICRibGVlZDtcbiAgJG91dHB1dCAgIDogZ2V0LWJsZWVkKCRibGVlZCk7XG5cbiAgQGlmIHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSBjb250ZW50LWJveCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKChib3gtc2l6aW5nOiBjb250ZW50LWJveCksICRvdXRwdXQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJsZWVkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuXG4vLyBCbGVlZC14XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgaG9yaXpvbnRhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXgoXG4gICRibGVlZDogZ3V0dGVyKClcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAyKSAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXggb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEJsZWVkLXlcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciB2ZXJ0aWNhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXkoXG4gICRibGVlZDogaWYoZnVuY3Rpb24tZXhpc3RzKHJoeXRobSksIHJoeXRobSgxKSwgMWVtKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwIG50aCgkdHJibCwgMikgMCkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteSBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gR2V0IEJsZWVkXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBibGVlZCBvdXRwdXQgdmFsdWVzXG4vLyAtICRibGVlZDogPHNwYW4+XG5AZnVuY3Rpb24gZ2V0LWJsZWVkKFxuICAkYmxlZWRcbikge1xuICAkYmxlZWQgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJGJsZWVkKSk7XG4gICR0cmJsICAgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG4gICRzaG9ydCAgICA6IG51bGw7XG4gICRvdXRwdXQgICA6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR0cmJsKSB7XG4gICAgJHRoaXM6IG50aCgkdHJibCwgJGkpO1xuICAgICRuZXc6ICgpO1xuICAgICRtYXJnaW46IG51bGw7XG4gICAgJHBhZGRpbmc6IG51bGw7XG4gICAgJHBhZGRpbmcteDogbnVsbDtcblxuICAgIEBpZiAkdGhpcyA+IDAge1xuICAgICAgJHRoaXM6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAkdGhpcykpO1xuICAgICAgJG1hcmdpbjogc3BhbigkdGhpcyk7XG4gICAgICAkcGFkZGluZzogJG1hcmdpbjtcbiAgICAgICRwYWRkaW5nLXg6ICRwYWRkaW5nO1xuICAgIH1cblxuICAgIEBpZiAkbWFyZ2luIGFuZCAkbWFyZ2luID4gMCB7XG4gICAgICAkbWFyZ2luOiAtICRtYXJnaW47XG5cbiAgICAgIEBpZiBpcy1pbnNpZGUoJHRoaXMpIHtcbiAgICAgICAgJGd1dHRlcjogZ3V0dGVyKCR0aGlzKTtcbiAgICAgICAgJGpvaW46IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHBhZGRpbmcsICRndXR0ZXIpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICRwYWRkaW5nLXg6IGlmKCRqb2luIGFuZCAkcGFkZGluZyA+IDAsICRwYWRkaW5nICsgJGd1dHRlciwgJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAyIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDMge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gNCB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAkbmV3KTtcbiAgfVxuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG91dHB1dCB7XG4gICAgJG91dHB1dDogaWYoJHZhbHVlID09IDAsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJHByb3A6IG51bGwpKSwgJG91dHB1dCk7XG4gIH1cblxuICBAcmV0dXJuIGJsZWVkLXNob3J0aGFuZCgkb3V0cHV0KTtcbn1cblxuLy8gQmxlZWQgU2hvcnRoYW5kXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENvbnZlcnQgYmxlZWQgb3V0cHV0IGludG8gc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuXG4vLyAtICRibGVlZDogPG91dHB1dCBtYXA+XG5AZnVuY3Rpb24gYmxlZWQtc2hvcnRoYW5kKFxuICAkYmxlZWRcbikge1xuICAkbWFyZ2luOiAoKTtcbiAgJHBhZGRpbmc6ICgpO1xuICAkcmV0dXJuOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJsZWVkIHtcbiAgICBAaWYgc3RyLWluZGV4KCRrZXksIG1hcmdpbikge1xuICAgICAgJG1hcmdpbjogbWFwLW1lcmdlKCRtYXJnaW4sICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIGlmIHN0ci1pbmRleCgka2V5LCBwYWRkaW5nKSA+IDAge1xuICAgICAgJHBhZGRpbmc6IG1hcC1tZXJnZSgkcGFkZGluZywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICRwcm9wczogKFxuICAgIG1hcmdpbjogJG1hcmdpbixcbiAgICBwYWRkaW5nOiAkcGFkZGluZyxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJG1hcCBpbiAkcHJvcHMge1xuICAgICRmb3VyOiBpZihsZW5ndGgobWFwLWtleXMoJG1hcCkpID09IDQsIHRydWUsIGZhbHNlKTtcbiAgICAkbnVsbDogaWYoaW5kZXgobWFwLXZhbHVlcygkbWFwKSwgbnVsbCksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkZm91ciBhbmQgbm90KCRudWxsKSB7XG4gICAgICAkdG9wOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS10b3AnKTtcbiAgICAgICRyaWdodDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tcmlnaHQnKTtcbiAgICAgICRib3R0b206IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWJvdHRvbScpO1xuICAgICAgJGxlZnQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWxlZnQnKTtcblxuICAgICAgJHRiOiBpZigkdG9wID09ICRib3R0b20sICR0b3AsIG51bGwpO1xuICAgICAgJHJsOiBpZigkcmlnaHQgPT0gJGxlZnQsICRyaWdodCwgbnVsbCk7XG4gICAgICAkYWxsOiBpZigkdGIgPT0gJHJsLCAkdGIsIG51bGwpO1xuXG4gICAgICAkbmV3OiBpZigkYWxsLCAkYWxsLCBudWxsKTtcblxuICAgICAgQGlmIG5vdCgkbmV3KSB7XG4gICAgICAgIEBpZiAkdGIgYW5kICRybCB7XG4gICAgICAgICAgJG5ldzogJHRiICRybDtcbiAgICAgICAgfSBAZWxzZSBpZiAkcmwge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJsICRib3R0b207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJpZ2h0ICRib3R0b20gJGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmFtZTogJG5ldykpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICRtYXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cbiIsIi8qXG4qIFNjdXQsIGEgY29sbGVjdGlvbiBvZiBTYXNzIHV0aWxpdGllc1xuKiB0byBlYXNlIGFuZCBpbXByb3ZlIG91ciBpbXBsZW1lbnRhdGlvbnMgb2YgY29tbW9uIHN0eWxlLWNvZGUgcGF0dGVybnMuXG4qIHYxLjQuMFxuKiBEb2NzIGF0IGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0XG4qL1xuXG5AbWl4aW4gc2N1dC1jbGVhcmZpeCB7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNsZWFyZml4IHtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtdW5zdHlsZWQoXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCk7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1mbG9hdGVkIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJGRpcjogbGVmdCxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xuXG4gICYgPiBsaSB7XG4gICAgZmxvYXQ6ICRkaXI7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tI3skZGlyfTogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtZmxvYXRlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkO1xufVxuXG5AZnVuY3Rpb24gc2N1dC1hdXRvT3JWYWx1ZSAoJHZhbCkge1xuICBAaWYgJHZhbCA9PSBhIG9yICR2YWwgPT0gYXV0byB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtY29vcmRzIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICAkdG9wOiBudGgoJGNvb3JkaW5hdGVzLCAxKTtcbiAgJHJpZ2h0OiBudGgoJGNvb3JkaW5hdGVzLCAyKTtcbiAgJGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyk7XG4gICRsZWZ0OiBudGgoJGNvb3JkaW5hdGVzLCA0KTtcblxuICBAaWYgJHRvcCAhPSBuIHtcbiAgICB0b3A6IHNjdXQtYXV0b09yVmFsdWUoJHRvcCk7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBuIHtcbiAgICByaWdodDogc2N1dC1hdXRvT3JWYWx1ZSgkcmlnaHQpO1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG4ge1xuICAgIGJvdHRvbTogc2N1dC1hdXRvT3JWYWx1ZSgkYm90dG9tKTtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbiB7XG4gICAgbGVmdDogc2N1dC1hdXRvT3JWYWx1ZSgkbGVmdCk7XG4gIH1cblxufVxuQGZ1bmN0aW9uIHNjdXQtc3RyaXAtdW5pdCAoXG4gICRudW1cbikge1xuXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1lbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtZW0gKFxuICAkcGl4ZWxzLFxuICAkYmFzZTogJHNjdXQtZW0tYmFzZVxuKSB7XG5cbiAgLy8gJGJhc2UgY291bGQgYmUgaW4gZW0gb3IgcHggKG5vIHVuaXQgPSBweCkuXG4gIC8vIEFkanVzdCBhY2NvcmRpbmdseSB0byBjcmVhdGUgYSAkZGl2aXNvciB0aGF0XG4gIC8vIHNlcnZlcyBhcyBjb250ZXh0IGZvciAkcGl4ZWxzLlxuICAkbXVsdGlwbGllcjogaWYodW5pdCgkYmFzZSkgPT0gZW0sIDE2LCAxKTtcbiAgJGRpdmlzb3I6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZSkgKiAkbXVsdGlwbGllcjtcblxuICAkZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1lbXM6IChzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkZGl2aXNvcikgKiAxZW07XG4gICAgJGVtLXZhbHM6IGFwcGVuZCgkZW0tdmFscywgJHZhbC1pbi1lbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZW0tdmFscztcbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1yZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LXJlbSAoXG4gICRwaXhlbHNcbikge1xuXG4gICRyZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1yZW1zOiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkc2N1dC1yZW0tYmFzZSAqIDFyZW07XG4gICAgJHJlbS12YWxzOiBhcHBlbmQoJHJlbS12YWxzLCAkdmFsLWluLXJlbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcmVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkcmVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRyZW0tdmFscztcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1ib3JkZXIgKFxuICAkc3R5bGUsXG4gICRzaWRlczogbiB5XG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaWRlcykgPT0gMiB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaWRlcykgPT0gNCB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDMpICE9IG4ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgNCkgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlNjdXQtYm9yZGVyIHJlcXVpcmVzIGEgJHNpZGVzIGFyZ3VtZW50IG9mIDIgb3IgNCB2YWx1ZXMuXCJcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jaXJjbGUgKFxuICAkc2l6ZSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBAaWYgJGNvbG9yID09IGluaGVyaXQge1xuICAgIC8vIElmIHVzZXIgd2FudHMgdG8gaW5oZXJpdCB0aGUgY29sb3IsXG4gICAgLy8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBib3JkZXJcbiAgICAvLyBjb2xvciBkZWZhdWx0cyB0byB0aGUgdGV4dCBjb2xvciBvZiB0aGUgZWxlbWVudC5cbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGhlaWdodDogMDtcbiAgICB3aWR0aDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHVzZSBiYWNrZ3JvdW5kLWNvbG9yLlxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jb2xvci1zd2FwIChcbiAgJG9mZixcbiAgJG9uLFxuICAkZHVyYXRpb246IDAsXG4gICRiZzogZmFsc2Vcbikge1xuXG4gICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IG51bGw7XG4gICRvZmYtaXMtbGlzdDogdHlwZS1vZigkb2ZmKSA9PSBsaXN0O1xuICAkb24taXMtbGlzdDogdHlwZS1vZigkb24pID09IGxpc3Q7XG5cbiAgLy8gSWYgJG9mZiBJUyBhIGxpc3QsXG4gIC8vIGFzc2lnbiBjb2xvciBhbmQgYmFja2dyb3VuZC1jb2xvci5cbiAgQGlmICRvZmYtaXMtbGlzdCB7XG4gICAgY29sb3I6IG50aCgkb2ZmLCAxKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9mZiwgMik7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvciwgY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBUUlVFLFxuICAvLyBhc3NpZ24gYmFja2dyb3VuZC1jb2xvci5cbiAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9mZi1pcy1saXN0KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgRkFMU0UsXG4gIC8vIGFzc2lnbiBjb2xvci5cbiAgQGVsc2Uge1xuICAgIGNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGNvbG9yO1xuICB9XG5cbiAgLy8gT25seSBzZXQtdXAgdHJhbnNpdGlvbiBpZiAkZHVyYXRpb24gIT0gMC5cbiAgQGlmICRkdXJhdGlvbiAhPSAwIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzO1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuXG4gICAgLy8gJG9uIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgJG9mZiwgYWJvdmUuXG4gICAgQGlmICRvbi1pcy1saXN0IHtcbiAgICAgIGNvbG9yOiBudGgoJG9uLCAxKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb24sIDIpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvbi1pcy1saXN0KSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb247XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgY29sb3I6ICRvbjtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtaGQtYnAgKFxuICAkcmF0aW86IDEuM1xuKSB7XG5cbiAgQG1lZGlhICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAoJHJhdGlvIC8gMSkpLFxuICAgICAgICAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgICAgICAgIChtaW4tcmVzb2x1dGlvbjogKHJvdW5kKDk2ICogJHJhdGlvKSAqIDFkcGkpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oaWRlLXZpc3VhbGx5IHtcblxuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcblxufVxuXG4lc2N1dC1oaWRlLXZpc3VhbGx5IHtcbiAgQGluY2x1ZGUgc2N1dC1oaWRlLXZpc3VhbGx5O1xufVxuQG1peGluIHNjdXQtaW1hZ2UtcmVwbGFjZSB7XG5cbiAgdGV4dC1pbmRlbnQ6IDEwMiU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG5cbn1cblxuJXNjdXQtaW1hZ2UtcmVwbGFjZSB7XG4gIEBpbmNsdWRlIHNjdXQtaW1hZ2UtcmVwbGFjZTtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LXJlbSBhbmQgc2N1dC1zdHJpcC11bml0XG5cbkBtaXhpbiBzY3V0LXJlbS1mYWxsYmFjayAoXG4gICRwaXhlbHMsXG4gICRwcm9wZXJ0eTogZm9udC1zaXplXG4pIHtcblxuICAkcHgtdmFsczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXB4OiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgKiAxcHg7XG4gICAgJHB4LXZhbHM6IGFwcGVuZCgkcHgtdmFscywgJHZhbC1pbi1weCk7XG4gIH1cbiAgJHJlbS12YWxzOiBzY3V0LXJlbSgkcGl4ZWxzKTtcblxuICAjeyRwcm9wZXJ0eX06ICRweC12YWxzO1xuICAjeyRwcm9wZXJ0eX06ICRyZW0tdmFscztcblxufVxuQG1peGluIHNjdXQtcmVzZXQtYm9yZGVyLWJveCB7XG4gIC8vIE1ha2UgZXZlcnl0aGluZyBhIGJvcmRlci1ib3gsIGJlY2F1c2Ugd2h5IG5vdD9cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1hbnRpYWxpYXMge1xuICAvLyBBbnRpYWxpYXMhXG4gIGJvZHkge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXNlbWFudGljaXplIHtcbiAgLy8gTWFrZSBoZWFkZXJzIGFuZCA8Yj4gc2VtYW50aWMsIG5vdCBwcmVzZW50YXRpb25hbC5cbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wb2ludGVyIHtcbiAgLy8gQ2xpY2thYmxlIGZvcm0gZWxlbWVudHMgc2hvdWxkIGhhdmUgYSBwb2ludGVyLlxuICBsYWJlbCxcbiAgc2VsZWN0LFxuICBvcHRpb24sXG4gIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZvcm0ge1xuICBmaWVsZHNldCB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWJ1dHRvbiB7XG4gIC8vIFJlc2V0IGRlZmF1bHQgYnV0dG9uIHN0eWxlcywgd2hpY2ggYXJlIG5ldmVyIHVzZWQuXG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdLFxuICBbdHlwZT1cInJlc2V0XCJdIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogYXV0bztcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBhcmFncmFwaCB7XG4gIC8vIFNvbWUgcGFyYWdyYXBoIG1hcmdpbnMganVzdCBnZXQgaW4gdGhlIHdheS5cbiAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LW1lZGlhIHtcbiAgLy8gWW91IHdhbnQgdGhlc2UgZWxlbWVudHMgZmx1aWQsIHByb2JhYmx5LlxuICBpbWcsXG4gIHZpZGVvIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZpZ3VyZSB7XG4gIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbnMuXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8vIENhbGwgdGhlbSBhbGwsIG1pbnVzIGV4Y2x1c2lvbnMhXG5AbWl4aW4gc2N1dC1yZXNldCAoJGV4Y2x1ZGU6IGZhbHNlKSB7XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJvcmRlci1ib3gpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1ib3JkZXItYm94O1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGFudGlhbGlhcykpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWFudGlhbGlhcztcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBzZW1hbnRpY2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXNlbWFudGljaXplO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBvaW50ZXIpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wb2ludGVyO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZvcm0pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1mb3JtO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJ1dHRvbikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJ1dHRvbjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwYXJhZ3JhcGgpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wYXJhZ3JhcGg7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgbWVkaWEpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1tZWRpYTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmaWd1cmUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1maWd1cmU7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtc2VsZWN0ZWQgKFxuICAkYWN0aXZlOiBmYWxzZVxuKSB7XG5cbiAgQGlmICRhY3RpdmUge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtdHJpYW5nbGUgKFxuICAkZGlyZWN0aW9uOiByaWdodCxcbiAgJHNpemU6IDAuNzVlbSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIC8vIEZvciBpbXByb3ZlZCBhcHBlYXJhbmNlIGluIHNvbWUgV2Via2l0IGJyb3dzZXJzXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcblxuICAvLyBTZXQgdXAgc29tZSB2YXJpYWJsZXNcbiAgJHdpZHRoOiBudWxsO1xuICAkaGVpZ2h0OiBudWxsO1xuICAkYm9yZGVyLXdpZHRoczogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gbGlzdCB7XG4gICAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR3aWR0aDogJHNpemU7XG4gICAgJGhlaWdodDogJHNpemU7XG4gIH1cblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICAvLyBGb3IgdXAgYW5kIGRvd24sIHdpZHRoIGdldHMgdHdvIGJvcmRlcnMgYnV0IGhlaWdodCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgc2Vjb25kIGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICRoZWlnaHQgKCR3aWR0aCAvIDIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgLy8gRm9yIHJpZ2h0IGFuZCBsZWZ0LCBoZWlnaHQgZ2V0cyB0d28gYm9yZGVycyBidXQgd2lkdGggb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIGZpcnN0IGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgJHdpZHRoO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBGb3IgcmlnaHQgdHJpYW5nbGVzICh0aGUgcmVzdCksIGJvdGggc2lkZXMgZ2V0IHR3byBib3JkZXJzLFxuICAgIC8vIHNvIGRpdmlkZSBib3RoIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAoJHdpZHRoIC8gMik7XG4gIH1cblxuICBib3JkZXItd2lkdGg6ICRib3JkZXItd2lkdGhzO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG5cbiAgLy8gU1RBTkRBUkQgVFJJQU5HTEVTXG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cblxuICAvLyBDT1JORVIgVFJJQU5HTEVTXG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdG9wLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdHJpYW5nbGUge1xuICBAaW5jbHVkZSBzY3V0LXRyaWFuZ2xlO1xufVxuQG1peGluIHNjdXQtY2VudGVyLWFic29sdXRlbHkgKFxuICAkZGltZW5zaW9uc1xuKSB7XG5cbiAgJHdpZHRoOiBudGgoJGRpbWVuc2lvbnMsIDEpO1xuICAkaGVpZ2h0OiBudGgoJGRpbWVuc2lvbnMsIDIpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJHdpZHRoICE9IG4ge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAoLSR3aWR0aCAvIDIpO1xuICB9XG5cbiAgQGlmICRoZWlnaHQgIT0gbiB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6ICgtJGhlaWdodCAvIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1ibG9jayAoXG4gICRtYXgtd2lkdGg6IGZhbHNlXG4pIHtcblxuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBAaWYgJG1heC13aWR0aCB7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICB9XG5cbn1cblxuJXNjdXQtY2VudGVyLWJsb2NrIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItYmxvY2s7XG59XG5cbkBtaXhpbiBzY3V0LWNlbnRlci10cmFuc2Zvcm0gKFxuICAkYXhpczogZmFsc2UgLy8gb3IgeCBvciB5XG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICRheGlzICE9IHgge1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgfVxuXG4gIEBpZiAkYXhpcyAhPSB5IHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgJHRyYW5zbGF0ZS12YWw6IG51bGw7XG5cbiAgQGlmIG5vdCgkYXhpcykge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geCB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIC1tcy10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICB0cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXgge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeCk7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuQG1peGluIHNjdXQtZmlsbCAoXG4gICR3aWR0aC1oZWlnaHQ6IGZhbHNlXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgQGlmICR3aWR0aC1oZWlnaHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtZmlsbCB7XG4gIEBpbmNsdWRlIHNjdXQtZmlsbDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtY3VzdG9tIChcbiAgJGNvbnRlbnQ6IFwiXFwyMDIyXCIsXG4gICRtYXJrZXItd2lkdGg6IDAuNzVlbSxcbiAgJHBhZDogMCxcbiAgJG5vLW1hcmdpbjogZmFsc2Vcbikge1xuXG4gICRjb250ZW50LXZhbDogbnVsbDtcbiAgJGNvdW50ZXI6IGluZGV4KCRjb250ZW50LCBjb3VudCk7XG4gIEBpZiAkY291bnRlciB7XG4gICAgQGlmIGxlbmd0aCgkY29udGVudCkgPT0gMyB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyLCBudGgoJGNvbnRlbnQsIDMpKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAyIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICRjb250ZW50LXZhbDogJGNvbnRlbnQ7XG4gIH1cblxuICBwYWRkaW5nLWxlZnQ6ICRtYXJrZXItd2lkdGggKyAkcGFkO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gICYgPiBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiAkY291bnRlciB7XG4gICAgICBjb3VudGVyLWluY3JlbWVudDogc2N1dGxpc3Rjb3VudGVyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkY29udGVudC12YWw7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IC0kbWFya2VyLXdpZHRoO1xuICAgICAgd2lkdGg6ICRtYXJrZXItd2lkdGg7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC1mbG9hdGVkYCwgd2hpY2ggZGVwZW5kcyBpbiB0dXJuIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1kaXZpZGVkIChcbiAgJGRpdmlkZXI6IFwifFwiLFxuICAkc3BhY2U6IDAuNWVtLFxuICAkZGlyOiBsZWZ0LFxuICAkaGVpZ2h0OiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQoJGRpcjogJGRpciwgJG5vLW1hcmdpbjogJG5vLW1hcmdpbik7XG5cbiAgJHBzZXVkbzogaWYoJGRpciA9PSBsZWZ0LCAnYmVmb3JlJywgJ2FmdGVyJyk7XG5cbiAgLy8gSWYgYW4gZXhwbGljaXQgaGVpZ2h0IGlzIHBhc3NlZCxcbiAgLy8gdGhpbmdzIGFyZSBkaWZmZXJlbnQ6IEFsbCA8bGk+c1xuICAvLyBuZWVkIHRoZSBwc2V1ZG8tZWxlbWVudCAodG8gZm9yY2UgaGVpZ2h0KSxcbiAgLy8gYnV0IHRoZSBmaXJzdCdzIG11c3QgYmUgaGlkZGVuLlxuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICAmID4gbGkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICAmID4gbGk6I3skcHNldWRvfSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgJiA+IGxpOmZpcnN0LWNoaWxkOiN7JHBzZXVkb30ge1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gICYgPiBsaSArIGxpOiN7JHBzZXVkb30ge1xuICAgIEBpZiBub3QoJGhlaWdodCkge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjZTtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtYmFyIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQ7XG59XG5cbiVzY3V0LWxpc3QtYnJlYWRjcnVtYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKFwiL1wiKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWlubGluZSAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtaW5saW5lO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtcHVuY3R1YXRlZCAoXG4gICRkaXZpZGVyOiBcIiwgXCIsXG4gICRkaXNwbGF5OiBpbmxpbmUsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6ICRkaXNwbGF5O1xuICAgICY6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWNvbW1hIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXB1bmN0dWF0ZWQ7XG59XG5AbWl4aW4gc2N1dC1tYXJnaW4gKFxuICAkbWFyZ2luXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDEgYW5kICRtYXJnaW4gIT0gbiB7XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMiB7XG4gICAgJG1hcmdpbi15OiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgQGlmICRtYXJnaW4teSAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDMge1xuICAgICRtYXJnaW4teS10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLXktYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgQGlmICRtYXJnaW4teS10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi15LWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSA0IHtcbiAgICAkbWFyZ2luLXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4tcmlnaHQ6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgICRtYXJnaW4tbGVmdDogbnRoKCRtYXJnaW4sIDQpO1xuICAgIEBpZiAkbWFyZ2luLXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1yaWdodCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi1yaWdodDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWxlZnQgIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi1sZWZ0O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1wYWRkaW5nIChcbiAgJHBhZGRpbmdcbikge1xuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDEgYW5kICRwYWRkaW5nICE9IG4ge1xuICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDIge1xuICAgICRwYWRkaW5nLXk6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICBAaWYgJHBhZGRpbmcteSAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15O1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXk7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAzIHtcbiAgICAkcGFkZGluZy15LXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLXktYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgIEBpZiAkcGFkZGluZy15LXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15LXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteS1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gNCB7XG4gICAgJHBhZGRpbmctdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXJpZ2h0OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICAkcGFkZGluZy1sZWZ0OiBudGgoJHBhZGRpbmcsIDQpO1xuICAgIEBpZiAkcGFkZGluZy10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmctdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctcmlnaHQgIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy1yaWdodDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1sZWZ0ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy1sZWZ0O1xuICAgIH1cbiAgfVxufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1hYnNvbHV0ZSAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWFic29sdXRlIHtcbiAgQGluY2x1ZGUgc2N1dC1hYnNvbHV0ZTtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtZml4ZWQgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1maXhlZCB7XG4gIEBpbmNsdWRlIHNjdXQtZml4ZWQ7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LXJlbGF0aXZlIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cbkBtaXhpbiBzY3V0LXJhdGlvLWJveCAoXG4gICRyYXRpbzogMS8xXG4pIHtcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVGhlIGNvbnRhaW5lcidzIGhlaWdodCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZVxuICAvLyBjb250YWluZXIncyB3aWR0aCwgaXMgc2V0IGJ5IGFzc2lnbmluZ1xuICAvLyBwYWRkaW5nLXRvcCB0byBhIHBzZXVkby1lbGVtZW50LlxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgcGFkZGluZy10b3A6ICgxIC8gJHJhdGlvKSAqIDEwMCU7XG4gIH1cblxufVxuXG4lc2N1dC1yYXRpby1ib3gge1xuICBAaW5jbHVkZSBzY3V0LXJhdGlvLWJveDtcbn1cbkBtaXhpbiBzY3V0LXNpemUoXG4gICRzaXplXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAxIHtcbiAgICB3aWR0aDogICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICB3aWR0aDogIG50aCgkc2l6ZSwgMSk7XG4gICAgaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAtJGhlaWdodDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAjeyR3cmFwcGVyfTphZnRlcixcbiAgI3skZm9vdGVyfSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG5cbn1cblxuLy8gZGVwcmVjYXRlZFxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3RlciAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbil7XG4gIEBpbmNsdWRlIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCgkaGVpZ2h0LCAkd3JhcHBlciwgJGZvb3Rlcik7XG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZsdWlkIChcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICN7JGZvb3Rlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcbiAgICBoZWlnaHQ6IDFweDtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLWliIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICAvLyBUaGUgaW5uZXIgZWxlbWVudCBpcyB2ZXJ0aWNhbGx5IGNlbnRlcmVkXG4gIC8vIGJ5IG1pZGRsZS1hbGlnbmluZyBpdCB3aXRoIGFuIGlubGluZSBwc2V1ZG8tZWxlbWVudFxuICAvLyB3aG9zZSBoZWlnaHQgaXMgMTAwJS5cblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgLy8gQSBzbWFsbCBuZWdhdGl2ZSByaWdodCBtYXJnaW4gaXMgc2V0XG4gICAgLy8gdG8gYWNjb3VudCBmb3IgdGhlIGRlZmF1bHRcbiAgICAvLyB3b3JkLXNwYWNpbmcgb2YgaW5saW5lLWJsb2NrLlxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVlbTtcbiAgfVxuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC12Y2VudGVyLWliIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLWliO1xufVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLWxoIChcbiAgJGhlaWdodFxuKSB7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJGhlaWdodDtcblxufVxuQG1peGluIHNjdXQtdmNlbnRlci10ZCAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgZGlzcGxheTogdGFibGU7XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG5cbiVzY3V0LXZjZW50ZXItdGQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdGQ7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1jZW50ZXItdHJhbnNmb3JtXG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItdHQgKCkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbiVzY3V0LXZjZW50ZXItdHQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdHQ7XG59XG4vLyBzcGFjZVxuJHNjdXQtc3BhY2U6IFwiXFwwMDIwXCI7XG4vLyBub24tYnJlYWtpbmcgc3BhY2VcbiRzY3V0LW5ic3A6IFwiXFwwMGEwXCI7XG5cbi8vIHF1b3RhdGlvbiBtYXJrXG4kc2N1dC1xdW90OiBcIlxcMDAyMlwiO1xuLy8gbGVmdCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LWxzcXVvOiBcIlxcMjAxOFwiO1xuLy8gcmlnaHQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1yc3F1bzogXCJcXDIwMTlcIjtcbi8vIGxlZnQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1sZHF1bzogXCJcXDIwMUNcIjtcbi8vIHJpZ2h0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtcmRxdW86IFwiXFwyMDFEXCI7XG4vLyBsZWZ0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbHNhcXVvOiBcIlxcMjAzOVwiO1xuLy8gcmlnaHQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yc2FxdW86IFwiXFwyMDNBXCI7XG4vLyBsZWZ0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbGFxdW86IFwiXFwwMGFiXCI7XG4vLyByaWdodCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJhcXVvOiBcIlxcMDBiYlwiO1xuXG4vLyBlbSBkYXNoIChtdXR0b24pXG4kc2N1dC1tZGFzaDogXCJcXDIwMTRcIjtcbi8vIGVuIGRhc2ggKG51dClcbiRzY3V0LW5kYXNoOiBcIlxcMjAxM1wiO1xuLy8gaHlwaGVuXG4kc2N1dC1oeXBoZW46IFwiXFwyMDEwXCI7XG5cbi8vIGFtcGVyc2FuZFxuJHNjdXQtYW1wOiBcIlxcMDAyNlwiO1xuLy8gZ3JlYXRlciB0aGFuXG4kc2N1dC1ndDogXCJcXDAwM2VcIjtcbi8vIGxlc3MgdGhhblxuJHNjdXQtbHQ6IFwiXFwwMDNjXCI7XG4vLyB0aW1lc1xuJHNjdXQtdGltZXM6IFwiXFwwMEQ3XCI7XG4vLyBiaWcgdGltZXNcbiRzY3V0LWJpZ3RpbWVzOiBcIlxcMjcxNVwiO1xuLy8gY2hlY2ttYXJrXG4kc2N1dC1jaGVja21hcms6IFwiXFwyNzEzXCI7XG5cbi8vIHNlY3Rpb24gc2lnbiAoZG91YmxlIFMsIGh1cnJpY2FuZSwgc2VjdGlvbmFsIHN5bWJvbCwgdGhlIGxlZ2FsIGRvdWdobnV0LCBzaWdudW0gc2VjdGlvbmlzKVxuJHNjdXQtc2VjdDogXCJcXDAwYTdcIjtcbi8vIHBhcmFncmFwaCBzeW1ib2wgKHBpbGNyb3cpXG4kc2N1dC1wYXJhOiBcIlxcMDBiNlwiO1xuXG4vLyBtaWRkb3QgKGludGVycHVuY3QsIGludGVycG9pbnQpXG4kc2N1dC1taWRkb3Q6IFwiXFwwMGI3XCI7XG4vLyBvLXNsYXNoIChzbGFzaGVkIG8pXG4kc2N1dC1vc2xhc2g6IFwiXFwwMGY4XCI7XG4vLyBidWxsZXRcbiRzY3V0LWJ1bGw6IFwiXFwyMDIyXCI7XG4vLyB3aGl0ZSBidWxsZXRcbiRzY3V0LXdoaWJ1bGw6IFwiXFwyNUU2XCI7XG4vLyBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1oZWxsaXA6IFwiXFwyMDI2XCI7XG4vLyB2ZXJ0aWNhbCBlbGxpcHNpc1xuJHNjdXQtdmVsbGlwOiBcIlxcMjJFRVwiO1xuLy8gbWlkbGluZSBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1taWRoZWxsaXA6IFwiXFwyMkVGXCI7XG5cbi8vIHVwLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC11dHJpOiBcIlxcMjViMlwiO1xuLy8gZG93bi1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtZHRyaTogXCJcXDI1YmNcIjtcbi8vIGxlZnQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWx0cmk6IFwiXFwyNWMwXCI7XG4vLyByaWdodC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtcnRyaTogXCJcXDI1YjZcIjtcbi8vIHVwLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC11c3RyaTogXCJcXDI1YjRcIjtcbi8vIGRvd24tcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWRzdHJpOiBcIlxcMjViZVwiO1xuLy8gbGVmdC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtbHN0cmk6IFwiXFwyNWMyXCI7XG4vLyByaWdodC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtcnN0cmk6IFwiXFwyNWI4XCI7XG4vLyBkaWFtb25kXG4kc2N1dC1kaWFtb25kOiBcIlxcMjVjNlwiO1xuLy8gZmlzaGV5ZVxuJHNjdXQtZmlzaGV5ZTogXCJcXDI1YzlcIjtcbi8vIGJ1bGxzZXllXG4kc2N1dC1idWxsc2V5ZTogXCJcXDI1Y2VcIjtcbi8vIGNpcmNsZVxuJHNjdXQtY2lyY2xlOiBcIlxcMjVjZlwiO1xuLy8gd2hpdGUgY2lyY2xlXG4kc2N1dC13aGl0ZWNpcmNsZTogXCJcXDI1Y2JcIjtcbi8vIHNxdWFyZVxuJHNjdXQtc3F1YXJlOiBcIlxcMjVhMFwiO1xuLy8gd2hpdGUgc3F1YXJlXG4kc2N1dC13aGl0ZXNxdWFyZTogXCJcXDI1YTFcIjtcbi8vIHNtYWxsIHNxdWFyZVxuJHNjdXQtc3NxdWFyZTogXCJcXDI1YWFcIjtcbi8vIHNtYWxsIHdoaXRlIHNxdWFyZVxuJHNjdXQtc3doaXRlc3F1YXJlOiBcIlxcMjVhYlwiO1xuXG4vLyBnZW5lcmFsIGN1cnJlbmN5XG4kc2N1dC1jdXJyZW5jeTogXCJcXDAwYTRcIjtcbi8vIGNlbnRcbiRzY3V0LWNlbnQ6IFwiXFwwMGEyXCI7XG4vLyBkb2xsYXJcbiRzY3V0LWRvbGxhcjogXCJcXDAwMjRcIjtcbi8vIHBvdW5kXG4kc2N1dC1wb3VuZDogXCJcXDAwYTNcIjtcbi8vIGV1cm9cbiRzY3V0LWV1cm86IFwiXFwyMGFjXCI7XG4vLyB5ZW5cbiRzY3V0LXllbjogXCJcXDAwYTVcIjtcbi8vIHJ1cGVlXG4kc2N1dC1ydXBlZTogXCJcXDIwQjlcIjtcbkBmdW5jdGlvbiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KSB7XG4gIC8vIFJldHVybiB0aGUgbGlzdCBvZiBgc3JjYCB2YWx1ZXMsIGluIG9yZGVyLCB0aGF0XG4gIC8vIGEgZ29vZCBgQGZvbnQtZmFjZWAgd2lsbCBuZWVkLCBpbmNsdWRpbmcgb25seVxuICAvLyB0aG9zZSBmb3JtYXRzIHNwZWNpZmllZCBpbiB0aGUgbGlzdCBgJGZvcm1hdHNgLlxuICAkcmVzdWx0OiAoKTtcbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAkZW90LXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRlb3QtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmMikge1xuICAgICR3b2ZmMi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYyLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZikge1xuICAgICR3b2ZmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB0dGYpIHtcbiAgICAkdHRmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHR0Zi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHN2Zykge1xuICAgICRzdmctdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fScpIGZvcm1hdCgnc3ZnJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRzdmctdmFsLCBjb21tYSk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AbWl4aW4gc2N1dC1mb250LWZhY2UgKFxuICAkZm9udC1mYW1pbHksXG4gICRmaWxlLXBhdGgsXG4gICR3ZWlnaHQ6IG5vcm1hbCxcbiAgJHN0eWxlOiBub3JtYWwsXG4gICRmb3JtYXRzOiBlb3Qgd29mZjIgd29mZiB0dGYgc3ZnXG4pIHtcblxuICBAaWYgaW5kZXgoJ2l0YWxpYycgJ29ibGlxdWUnLCAkd2VpZ2h0KSB7XG4gICAgJHN0eWxlOiAkd2VpZ2h0O1xuICAgICR3ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuXG4gICAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAgIHNyYzogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgIH1cbiAgICBzcmM6IG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpO1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGFuZ2luZy1pbmRlbnQgKFxuICAkaW5kZW50OiAxZW1cbikge1xuXG4gIC8vIHBhZGRpbmctbGVmdCBjcmVhdGVzIHRoZSBpbmRlbnQsXG4gIC8vIHdoaWxlIHRleHQtaW5kZW50IHB1bGxzIHRoZSBmaXJzdCBsaW5lXG4gIC8vIGJhY2sgdG8gdGhlIGVkZ2UuXG5cbiAgcGFkZGluZy1sZWZ0OiAkaW5kZW50O1xuICB0ZXh0LWluZGVudDogLSRpbmRlbnQ7XG5cbn1cblxuJXNjdXQtaGFuZ2luZy1pbmRlbnQge1xuICBAaW5jbHVkZSBzY3V0LWhhbmdpbmctaW5kZW50O1xufVxuQG1peGluIHNjdXQtaW5kZW50ZWQtcHMgKFxuICAkaW5kZW50OiAxLjVlbSxcbiAgJG5vLWZpcnN0LWluZGVudDogdHJ1ZVxuKSB7XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtaW5kZW50OiAkaW5kZW50O1xuICB9XG5cbiAgQGlmICRuby1maXJzdC1pbmRlbnQge1xuICAgIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB0ZXh0LWluZGVudDogMDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1pbmRlbnRlZC1wcyB7XG4gIEBpbmNsdWRlIHNjdXQtaW5kZW50ZWQtcHM7XG59XG5AbWl4aW4gc2N1dC1rZXktdmFsIChcbiAgJGRpdmlkZXI6IFwiOlwiLFxuICAkcGFkOiAwLjI1ZW0sXG4gICRpbmRlbnQ6IDFlbSxcbiAgJHNwYWNpbmc6IDAsXG4gICRwYWQtbGVmdDogMFxuKSB7XG5cbiAgJiA+IGR0IHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkcGFkO1xuICAgICAgQGlmICRwYWQtbGVmdCAhPSAwIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRwYWQtbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmID4gZGQge1xuICAgIG1hcmdpbi1sZWZ0OiAkaW5kZW50O1xuICAgIEBpZiAkc3BhY2luZyAhPSAwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWtleS12YWwge1xuICBAaW5jbHVkZSBzY3V0LWtleS12YWw7XG59XG5AbWl4aW4gc2N1dC1saW5rLWJiIChcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkd2lkdGg6IDFweFxuKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gIGJvcmRlci1ib3R0b20td2lkdGg6ICR3aWR0aDtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgfVxuXG59XG5cbiVzY3V0LWxpbmstYmIge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstYmI7XG59XG4vLyBTQ1VUIExJTksgVU5TVFlMRURcbi8vIGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0LyNsaW5rLXVuc3R5bGVkXG5cbkBtaXhpbiBzY3V0LWxpbmstdW5zdHlsZWQoKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcblxufVxuXG4lc2N1dC1saW5rLXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLXVuc3R5bGVkKCk7XG59XG5cbkBtaXhpbiBzY3V0LXJldmVyc2UtaXRhbGljcyAoXG4gICRlbGVtZW50czogbnVsbFxuKSB7XG5cbiAgJGVsZW1lbnQtbGlzdDogZW0sIGNpdGUsIGk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgI3tqb2luKCRlbGVtZW50LWxpc3QsICRlbGVtZW50cyl9IHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cblxufVxuXG4lc2N1dC1yZXZlcnNlLWl0YWxpY3Mge1xuICBAaW5jbHVkZSBzY3V0LXJldmVyc2UtaXRhbGljcztcbn1cblxuQG1peGluIHNjdXQtc2lkZS1saW5lZCAoXG4gICRoZWlnaHQ6IDFweCxcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkdi1hZGp1c3Q6IGZhbHNlLFxuICAkZG91YmxlOiBmYWxzZVxuKSB7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDUwJTtcblxuICAgIGJvcmRlci10b3Atc3R5bGU6ICRzdHlsZTtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAkaGVpZ2h0O1xuXG4gICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgJHYtYWRqdXN0ICE9IGZhbHNlIHtcbiAgICAgIGJvdHRvbTogJHYtYWRqdXN0O1xuICAgIH1cblxuICAgIEBpZiAkZG91YmxlICE9IGZhbHNlIHtcbiAgICAgIGhlaWdodDogJGRvdWJsZTtcbiAgICAgIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6ICRoZWlnaHQ7XG4gICAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0OiAkc3BhY2U7XG4gICAgbWFyZ2luLWxlZnQ6IC01MCU7XG4gIH1cbiAgJjphZnRlciB7XG4gICAgbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXNpZGUtbGluZWQge1xuICBAaW5jbHVkZSBzY3V0LXNpZGUtbGluZWQ7XG59XG5AbWl4aW4gc2N1dC10cnVuY2F0ZSB7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbn1cblxuJXNjdXQtdHJ1bmNhdGUge1xuICBAaW5jbHVkZSBzY3V0LXRydW5jYXRlO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInRvb2xraXQvcGxhY2Vob2xkZXJzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcInRvb2xraXQvY29sb3JzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9mb250c1wiO1xuQGltcG9ydCBcInRvb2xraXQvaW50cmluc2ljLXJhdGlvXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9uZXN0ZWQtY29udGV4dFwiO1xuQGltcG9ydCBcInRvb2xraXQvcGFyYWxsYXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3J0bFwiO1xuQGltcG9ydCBcInRvb2xraXQvdGFyZ2V0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC90cmlhbmdsZVwiO1xuQGltcG9ydCBcInRvb2xraXQvY2VudGVyXCI7XG5AaW1wb3J0IFwidG9vbGtpdC92aWV3cG9ydFwiO1xuQGltcG9ydCBcInRvb2xraXQvdW5kZXJsaW5lXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9hcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3NldC1tdWx0aXBsZVwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRUb29sa2l0LVNldHRpbmdzOiAoXG4gICdjbGVhcmZpeCBleHRlbmQnOiBmYWxzZSxcbiAgJ2NvbG9yIHN0YWNrIGFtb3VudHMnOiAyNSUgNTAlIDc1JSA4NSUgOTAlLFxuICAndGludCBzaGFkZSBhbW91bnRzJzogNzUlIDUwJSAyNSUsXG4gICd0aW50IGNvbG9yJzogI2ZmZixcbiAgJ3NoYWRlIGNvbG9yJzogIzAwMCxcbiAgJ2NvbG9yIHNjYWxlIHN0ZXBzJzogNixcbiAgJ2xpZ2F0dXJlIGV4dGVuZCc6IGZhbHNlLFxuICAnZm9udCBmYWNlIHdlaWdodCc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBzdHlsZSc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZic6IGZhbHNlLFxuICAnaWNvbiBmb250IGV4dGVuZCc6IGZhbHNlLFxuICAnaWNvbiBmb250IHNwZWFrJzogZmFsc2UsXG4gICdmYWRlIGluIGR1cmF0aW9uJzogMXMsXG4gICdmYWRlIGluIGxvYWRpbmcgY2xhc3MnOiAnLndmLWxvYWRpbmcnLFxuICAnZmFkZSBpbiBleHRlbmQnOiBmYWxzZSxcbiAgJ2ludHJpbnNpYyByYXRpbyc6IDE2LzksXG4gICdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnOiAxMDAlLFxuICAnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJzogJz4gKicsXG4gICdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nOiB0b3AsXG4gICdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJzogZmFsc2UsXG4gICduZXN0ZWQgY29udGV4dCBjb250ZXh0cyc6IDEwMCUsXG4gICduZXN0ZWQgY29udGV4dCBwb3NpdGlvbic6IGxlZnQsXG4gICd0cmlhbmdsZSBjb2xvcic6ICMwMDAsXG4gICd0cmlhbmdsZSBoZWlnaHQnOiAxZW0sXG4gICd0cmlhbmdsZSB3aWR0aCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIGFuZ2xlJzogMCxcbiAgJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJzogMSxcbiAgJ3BhcmFsbGF4IGVsZW1lbnQnOiAnYm9keScsXG4gICdwYXJhbGxheCBpb3MnOiB0cnVlLFxuICAncGFyYWxsYXggZGlzdGFuY2UnOiAwLFxuICAndmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICd2ZXJ0aWNhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnOiA1MCUsXG4gICdob3Jpem9udGFsIGZpeGVkJzogZmFsc2UsXG4gICdob3Jpem9udGFsIGV4dGVuZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJzogZmFsc2UsXG4gICd1bmRlcmxpbmUgYmFja2dyb3VuZCc6ICNmZmYsXG4gICd1bmRlcmxpbmUgY29sb3InOiAjMDBlLFxuICAndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnOiB0cnVlLFxuICAndW5kZXJsaW5lIGRpc3RhbmNlJzogMSxcbiAgJ3VuZGVybGluZSB3aWR0aCc6IDIsXG4gICd1bmRlcmxpbmUgZXh0ZW5kJzogZmFsc2UsXG4gICdhcnQgcGl4ZWwgc2l6ZSc6IDFweCxcbiAgJ2FydCBjb2xvcic6IGJsYWNrLFxuICAnYXJ0IGJvcmRlciByYWRpdXMnOiAwJVxuKTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBOZXcgU2V0dGluZ3MgbW9kdWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdsb2JhbFxuJEdsb2JhbFNldHRpbmdzOiAkVG9vbGtpdC1TZXR0aW5ncyAhZGVmYXVsdDtcbi8vIFVzZXJcbiRVc2VyU2V0dGluZ3M6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVzZXIgU2V0dGluZyBFeGlzdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJFJldHVybjtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1oYXMoJHNldHRpbmcpIHtcbiAgQHJldHVybiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIEdldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEdsb2JhbFNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctZ2V0LW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkdmFsdWVzOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkdmFsdWVzOiBtYXAtbWVyZ2UoJHZhbHVlcywgKCRzZXR0aW5nOiBzZXR0aW5nLWdldCgkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICR2YWx1ZXM7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtZ2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1nZXQoJHNldHRpbmcpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZ3MgU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgJHNldHRpbmdzKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZS1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJFJldHVybjogKCk7XG5cbiAgQGVhY2ggJEtleSwgJFZhbHVlIGluICRVc2VyU2V0dGluZ3Mge1xuICAgICRSZXR1cm46IGlmKCRzZXR0aW5nID09ICRLZXksICRSZXR1cm4sIG1hcC1tZXJnZSgkUmV0dXJuLCAoJEtleTogJFZhbHVlKSkpO1xuICB9XG5cbiAgJFVzZXJTZXR0aW5nczogJFJldHVybiAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRjbGVhci10aGUtc2V0dGluZ3M6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcmVzZXQoKSB7XG4gICRVc2VyU2V0dGluZ3M6ICgpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLXJlc2V0KCk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBQaWNrXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2soJHNldHRpbmcsICRpbnB1dCkge1xuICBAcmV0dXJuIGlmKCRpbnB1dCAhPSBudWxsLCAkaW5wdXQsIHNldHRpbmctZ2V0KCRzZXR0aW5nKSk7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2stbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZywgJGlucHV0IGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogc2V0dGluZy1waWNrKCRpbnB1dCwgJHNldHRpbmcpKSk7XG4gIH1cblxuICBAcmV0dXJuICRSZXR1cm47XG59IiwiJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFBsYWNlaG9sZGVyIEdldC9TZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCkge1xuICAkdW5pcXVlLWlkOiB1bmlxdWUtaWQoKTtcbiAgJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6IG1hcC1tZXJnZSgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgKCRpZDogJHVuaXF1ZS1pZCkpICFnbG9iYWw7XG4gIEByZXR1cm4gJHVuaXF1ZS1pZDtcbn1cblxuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCkge1xuICBAcmV0dXJuIG1hcC1nZXQoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICRpZCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhdGUgUGxhY2Vob2xkZXIgQ2xhc3MgYW5kIEV4dGVuZFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKTtcblxuICBAaWYgJHBsYWNlaG9sZGVyLWlkID09IG51bGwge1xuICAgICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKTtcbiAgICBAYXQtcm9vdCAlI3skcGxhY2Vob2xkZXItaWR9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZXh0ZW5kICUjeyRwbGFjZWhvbGRlci1pZH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU3RhdGljIE1peGluIEhlbHBlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gbWl4aW4tZHJ5ZXIoJGlkLCAkZXh0ZW5kOiB0cnVlKSB7XG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNb2Rlcm4gQ2xlYXJmaXggTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNsZWFyZml4KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnY2xlYXJmaXggZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjbGVhcmZpeCcpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb21wYXNzIEV4dGVuc2lvbiBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUaW50IGFuZCBTaGFkZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMdW1hXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBsdW1hKCRjb2xvcikge1xuICBAcmV0dXJuIChyZWQoJGNvbG9yKSAqIC4yOTkpICsgKGdyZWVuKCRjb2xvcikgKiAuNTg3KSArIChibHVlKCRjb2xvcikgKiAuMTE0KTtcbn1cblxuQGZ1bmN0aW9uIGx1bWEtZ3RlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPj0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWx0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpIDw9IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1kaWZmKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQHJldHVybiBsdW1hKCRjb2xvcjEpIC0gbHVtYSgkY29sb3IyKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTdGFja3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXN0YWNrKCRtYWluLCAkc2Vjb25kYXJ5LCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ2NvbG9yIHN0YWNrIGFtb3VudHMnKTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJGFtb3VudHMpID09IDEge1xuICAgICRhbW91bnRzOiBudGgoJGFtb3VudHMsIDEpO1xuICB9XG5cbiAgJHN0YWNrOiAkbWFpbjtcblxuICBAZWFjaCAkYW1vdW50IGluICRhbW91bnRzIHtcbiAgICAkc3RhY2s6IGpvaW4oJHN0YWNrLCBtaXgoJHNlY29uZGFyeSwgbnRoKCRzdGFjaywgMSksICRhbW91bnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0YWNrO1xufVxuXG4vLyBUaW50IFN0YWNrXG5AZnVuY3Rpb24gdGludC1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFNoYWRlIFN0YWNrXG5AZnVuY3Rpb24gc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFRpbnQvU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgJGNvbG9yczogKCk7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgndGludCBzaGFkZSBhbW91bnRzJyk7XG4gIH1cbiAgJGxlbmd0aDogbGVuZ3RoKCRhbW91bnRzKTtcblxuICAvLyBTaGFkZXNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgc2hhZGUoJGNvbG9yLCBudGgoJGFtb3VudHMsICRpKSkpO1xuICB9XG5cbiAgLy8gQmFzZVxuICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgJGNvbG9yKTtcblxuICAvLyBUaW50c1xuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRsZW5ndGggLSAxIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgdGludCgkY29sb3IsIG50aCgkYW1vdW50cywgJGxlbmd0aCAtICRpKSkpO1xuICB9XG5cbiAgQHJldHVybiAkY29sb3JzO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFNjYWxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc2NhbGUoJG1haW4sICRzZWNvbmRhcnksICRzdGVwczogbnVsbCkge1xuICAkc3RlcHM6IGlmKCRzdGVwcyAhPSBudWxsLCAkc3RlcHMsIHRvb2xraXQtZ2V0KCdjb2xvciBzY2FsZSBzdGVwcycpKTtcblxuICAkbGlzdDogJG1haW47XG5cbiAgJHJlZDE6IHJlZCgkbWFpbik7XG4gICRyZWQyOiByZWQoJHNlY29uZGFyeSk7XG4gICRyZWQtZGlmZjogKCgkcmVkMSAtICRyZWQyKSAvICgoJHN0ZXBzIC0gMSkpKTtcblxuICAkaHVlMTogaHVlKCRtYWluKTtcbiAgJGh1ZTI6IGh1ZSgkc2Vjb25kYXJ5KTtcbiAgQGlmICgkaHVlMiArIDM1OSAtICRodWUxKSA8IGFicygkaHVlMSAtICRodWUyKSB7XG4gICAgJGh1ZTI6ICRodWUyICsgMzU5O1xuICB9XG4gICRodWUtZGlmZjogKCRodWUyIC0gJGh1ZTEpIC8gKCRzdGVwcyAtIDEpO1xuXG4gICRzYXQxOiBzYXR1cmF0aW9uKCRtYWluKTtcbiAgJHNhdDI6IHNhdHVyYXRpb24oJHNlY29uZGFyeSk7XG4gICRzYXQtZGlmZjogMDtcbiAgQGlmICRzYXQxID4gJHNhdDIge1xuICAgICRzYXQtZGlmZjogKCRzYXQyIC0gJHNhdDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MSAtICRzYXQyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRsdGUxOiBsaWdodG5lc3MoJG1haW4pO1xuICAkbHRlMjogbGlnaHRuZXNzKCRzZWNvbmRhcnkpO1xuICAkbHRlLWRpZmY6IDA7XG4gIEBpZiAkbHRlMSA+ICRsdGUyIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMiAtICRsdGUxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTEgLSAkbHRlMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkYWxwMTogYWxwaGEoJG1haW4pO1xuICAkYWxwMjogYWxwaGEoJHNlY29uZGFyeSk7XG4gICRhbHAtZGlmZjogMDtcbiAgQGlmICRhbHAxID4gJGFscDIge1xuICAgICRhbHAtZGlmZjogKCRhbHAyIC0gJGFscDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMSAtICRhbHAyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRodWUtaG9sZDogJGh1ZTE7XG4gICRzYXQtaG9sZDogJHNhdDE7XG4gICRsdGUtaG9sZDogJGx0ZTE7XG4gICRhbHAtaG9sZDogJGFscDE7XG4gICRjb2xvci1ob2xkOiAwO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJHN0ZXBzIHtcbiAgICAkaHVlLWhvbGQ6ICRodWUtaG9sZCArICRodWUtZGlmZjtcbiAgICAkc2F0LWhvbGQ6ICRzYXQtaG9sZCArICRzYXQtZGlmZjtcbiAgICAkbHRlLWhvbGQ6ICRsdGUtaG9sZCArICRsdGUtZGlmZjtcbiAgICAkYWxwLWhvbGQ6ICRhbHAtaG9sZCArICRhbHAtZGlmZjtcblxuICAgICRjb2xvci1ob2xkOiBoc2xhKCRodWUtaG9sZCwgJHNhdC1ob2xkLCAkbHRlLWhvbGQsICRhbHAtaG9sZCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGNvbG9yLWhvbGQpO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFbmFibGUgbGlnYXR1cmVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnbGlnYXR1cmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnZW5hYmxlIGxpZ2F0dXJlcycpIHtcbiAgICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXM7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2E9MSwgZGxpZz0xXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1zLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtby1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIixcImRsaWdcIjtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFjZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZm9udC1mYWNlKCRuYW1lLCAkZmlsZXMsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGlubGluZS13b2ZmOiBudWxsKSB7XG4gICR3ZWlnaHQ6IGlmKCR3ZWlnaHQgIT0gbnVsbCwgJHdlaWdodCwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSB3ZWlnaHQnKSk7XG4gICRzdHlsZTogaWYoJHN0eWxlICE9IG51bGwsICRzdHlsZSwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBzdHlsZScpKTtcbiAgJGlubGluZS13b2ZmOiBpZigkaW5saW5lLXdvZmYgIT0gbnVsbCwgJGlubGluZS13b2ZmLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIGlubGluZSB3b2ZmJykpO1xuXG4gICRmb250LXN0YWNrOiAoKTtcbiAgJGZvbnQtc3JjOiAnJztcbiAgJGVvdDogZmFsc2U7XG4gICRmb250LWV4dGVuc2lvbnM6ICgnZW90JzogJ2VtYmVkZGVkLW9wZW50eXBlJywgJ3dvZmYyJzogJ3dvZmYyJywgJ3dvZmYnOiAnd29mZicsICd0dGYnOiAndHJ1ZXR5cGUnLCAnc3ZnJzogJ3N2ZycpO1xuXG4gIEBlYWNoICRleHQsICRmb3JtYXQgaW4gJGZvbnQtZXh0ZW5zaW9ucyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRmaWxlcywgJGV4dCkge1xuICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhpbmxpbmUtZm9udC1maWxlcykgYW5kICRpbmxpbmUtd29mZiA9PSB0cnVlIGFuZCAoJGV4dCA9PSAnd29mZicgb3IgJGV4dCA9PSAnd29mZjInKSB7XG4gICAgICAgICRmb250LXNyYzogaW5saW5lLWZvbnQtZmlsZXMobWFwLWdldCgkZmlsZXMsICRleHQpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIGZ1bmN0aW9uLWV4aXN0cyhmb250LXVybCkge1xuICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkZm9udC1zdGFjazogYXBwZW5kKCRmb250LXN0YWNrLCAkZm9udC1zcmMsICdjb21tYScpO1xuICAgIH1cblxuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRuYW1lO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6ICRlb3Q7XG4gICAgfVxuICAgIEBpZiBsZW5ndGgoJGZvbnQtc3RhY2spID4gMCB7XG4gICAgICBzcmM6ICRmb250LXN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEljb24gRm9udFxuLy8gRnJvbSBodHRwOi8vaWNvbW9vbi5pb1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaWNvbi1mb250KCRmb250LXN0YWNrLCAkc3BlYWs6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHNwZWFrOiBpZigkc3BlYWsgIT0gbnVsbCwgJHNwZWFrLCB0b29sa2l0LWdldCgnaWNvbiBmb250IHNwZWFrJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjaztcbiAgQGlmICRzcGVhayA9PSBmYWxzZSB7XG4gICAgc3BlYWs6IG5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gaWNvbi1mb250LS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCAge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpY29uIGZvbnQgY29yZScpIHtcbiAgICAgIEBpbmNsdWRlIGljb24tZm9udC0tY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZCk7XG5cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWRlIEluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjb250ZW50LWZhZGUtaW4oJGR1cmF0aW9uOiBudWxsLCAkbG9hZGluZzogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZHVyYXRpb246IGlmKCRkdXJhdGlvbiAhPSBudWxsLCAkZHVyYXRpb24sIHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykpO1xuICAkbG9hZGluZzogaWYoJGxvYWRpbmcgIT0gbnVsbCwgJGxvYWRpbmcsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUgYW5kICRkdXJhdGlvbiA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpIGFuZCAkbG9hZGluZyA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjb250ZW50IGZhZGUgaW4nKSB7XG4gICAgICBAaW5jbHVkZSBjb250ZW50LWZhZGUtaW4oJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaWYgbm90IG1peGluLWV4aXN0cygnc2luZ2xlLXRyYW5zaXRpb24nKSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG9wYWNpdHkgJGR1cmF0aW9uKTtcbiAgICB9XG5cbiAgICAjeyRsb2FkaW5nfSAmIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZsdWlkIEVtYmVkcyBhbmQgd2hhdGV2ZXIgV0lUSCBOTyBKQVZBU0NJUFQhXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBwYXJlbnQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gY2hpbGQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICB0b3A6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG5cbiAgcGFkZGluZy0jeyRwb3NpdGlvbn06ICgxIC8gJHJhdGlvKSAqICR3aWR0aDtcbiAgd2lkdGg6ICR3aWR0aDtcbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRlbGVtZW50czogaWYoJGVsZW1lbnRzICE9IG51bGwsICRlbGVtZW50cywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZCk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xuXG4gIEBlYWNoICRlbGVtZW50IGluICRlbGVtZW50cyB7XG4gICAgI3skZWxlbWVudH0ge1xuICAgIFx0QGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXIoJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpbygkcmF0aW8sICR3aWR0aCwgJGVsZW1lbnRzLCAkZXh0ZW5kLCAkcG9zaXRpb24pO1xufVxuXG5AbWl4aW4gaXItcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG59IiwiLy8gc2ltcGxlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbnRleHQgb2YgYSBuZXN0ZWQgcGVyY2VudGFnZS5cbkBmdW5jdGlvbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG5cbiAgLy8gRmlyc3QgbGV2ZWwgZGVlcCBpcyBhbHdheXMgMTAwJVxuICAkcGVyY2VudGFnZTogMTAwJTtcblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBsZXZlbFxuICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgIC8vIEludmVydCB0aGUgcGVyY2VudGFnZSB0byBmaW5kIGNvbnRleHRcbiAgICAkcGVyY2VudGFnZTogcGVyY2VudGFnZSgkcGVyY2VudGFnZSAvICRjb250ZXh0KTtcbiAgfVxuICAvLyBSZXR1cm4gZmluYWwgcGVyY2VudGFnZVxuICBAcmV0dXJuICRwZXJjZW50YWdlO1xufVxuXG4vLyBtaXhpbiB0byBtYWtlIHRoaW5ncyBlYXNpZXJcbkBtaXhpbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nKSk7XG5cbiAgd2lkdGg6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cyk7XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJjZW50ZXJcIiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0uNTtcbiAgfVxuICBAaWYgJHBvc2l0aW9uID09IFwicmlnaHRcIiB7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtMSArIDEwMCU7XG4gIH1cbn0iLCIvLyBNYWdpYyBwYXJhbGxheCBtaXhpbnNcbkBtaXhpbiBwYXJhbGxheC1pbml0KCRwZXJzcGVjdGl2ZTogbnVsbCwgJGVsZW1lbnQ6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcblxuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJGVsZW1lbnQ6IGlmKCRlbGVtZW50ICE9IG51bGwsICRlbGVtZW50LCB0b29sa2l0LWdldCgncGFyYWxsYXggZWxlbWVudCcpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIEBpZiAkZWxlbWVudCA9PSAnYm9keScge1xuICAgIEBhdC1yb290IHtcbiAgICAgIGh0bWwsIGJvZHkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICBib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGVsZW1lbnQgPT0gdGhpcyB7XG4gICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGF0LXJvb3QgI3skZWxlbWVudH0ge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmU6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBvdmVyZmxvdzogYXV0bztcbiAgQGlmIG1peGluLWV4aXN0cyhwZXJzcGVjdGl2ZSkge1xuICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSAqIDFweCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgICBwZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICB9XG4gIC8vIEFsbG93cyBmb3Igc21vb3RoIHNjcm9sbGluZyBidXQgZGlzYWJsZXMgcGFyYWxsYXggZWZmZWN0cy5cbiAgQGlmICRwYXJhbGxheC1pb3MgPT0gZmFsc2Uge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAvLyBNYWtlIHN1cmUgM0QgcGVyc3BlY3RpdmUgaXMgcHJlc2VydmVkXG4gICYsICYgKiB7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0tc3R5bGUpIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZShwcmVzZXJ2ZS0zZCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheCgkZGlzdGFuY2U6IG51bGwsICRwZXJzcGVjdGl2ZTogbnVsbCkge1xuXG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGRpc3RhbmNlJykpO1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcblxuICAkdHJhbnNmb3JtOiB0cmFuc2xhdGVaKCRkaXN0YW5jZSAqICRwZXJzcGVjdGl2ZSAqIDFweCkgc2NhbGUoYWJzKCRkaXN0YW5jZSAtIDEpKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnNmb3JtKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gICAgdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICB9XG5cbiAgei1pbmRleDogJGRpc3RhbmNlICogMTAwO1xufVxuIiwiQG1peGluIHJ0bCgkcHJvcGVydHksICR2YWx1ZSkge1xuICAkX3Byb3BlcnR5OiAkcHJvcGVydHk7XG4gICN7JHByb3BlcnR5fTogJHZhbHVlO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA9PSA0IHtcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgI3skcHJvcGVydHl9OiBudGgoJHZhbHVlLCAxKSBudGgoJHZhbHVlLCA0KSBudGgoJHZhbHVlLCAzKSBudGgoJHZhbHVlLCAyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpIC0gMSkgKyAncmlnaHQnO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykgLSAxKSArICdsZWZ0JztcbiAgICB9XG5cbiAgICBAaWYgJHByb3BlcnR5ICE9ICRfcHJvcGVydHkge1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiQG1peGluIHRhcmdldCgkdGFyZ2V0KSB7XG4gIEBhdC1yb290IHtcbiAgICAvKiEgQHt0YXJnZXQ6ICN7JHRhcmdldH19ICovXG4gICAgJiB7XG4gICAgICBAY29udGVudDsgIFxuICAgIH1cbiAgICAvKiEge3RhcmdldDogI3skdGFyZ2V0fX1AICovICBcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRHJhdyB0cmlhbmdsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gdHJpYW5nbGUoJGNvbG9yOiBudWxsLCAkaGVpZ2h0OiBudWxsLCAkd2lkdGg6IG51bGwsICRhbmdsZTogbnVsbCkge1xuXG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGNvbG9yJykpO1xuICAkaGVpZ2h0OiBpZigkaGVpZ2h0ICE9IG51bGwsICRoZWlnaHQsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBoZWlnaHQnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIHdpZHRoJykpO1xuICAkYW5nbGU6IGlmKCRhbmdsZSAhPSBudWxsLCAkYW5nbGUsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBhbmdsZScpKTtcblxuICBAaWYgbnRoKCRhbmdsZSwgMSkgPT0gXCJ0b3BcIiBvciBudGgoJGFuZ2xlLCAxKSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IFwiI3skYW5nbGV9XCI7XG4gIH1cblxuICBAaWYgJGFuZ2xlID09IFwidG9wXCIge1xuICAgICRhbmdsZTogMDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiA3O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJyaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAxO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDQ7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiAzO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA2O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNTtcbiAgfVxuXG4gIEBpZiB1bml0KCRoZWlnaHQpID09IFwiXCIgb3IgdW5pdCgkaGVpZ2h0KSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skaGVpZ2h0fSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIGhlaWdodC5cIlxuICB9XG5cbiAgQGlmIHVuaXQoJHdpZHRoKSA9PSBcIlwiIG9yIHVuaXQoJHdpZHRoKSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skd2lkdGh9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3Igd2lkdGguXCJcbiAgfVxuXG4gIC8vIG9mZnNldCA0NWRlZyB0byBtYWtlIGVhY2ggc2lkZSBzdGFydCBhdCAwXG4gICRkZWc6ICRhbmdsZSArIDQ1O1xuICAvLyBpZiB1bml0cywgcmVtb3ZlIHVuaXRzXG4gIEBpZiB1bml0KCRkZWcpID09IGRlZyB7XG4gICAgJGRlZzogJGRlZyAvIDFkZWc7XG4gIH1cbiAgLy8gc2hpZnQgdG8gYmUgb24gYSBzY2FsZSBmcm9tIDAgdG8gOTAuXG4gIEB3aGlsZSAkZGVnID4gOTAge1xuICAgICRkZWc6ICRkZWcgLSA5MDtcbiAgfVxuICBAd2hpbGUgJGRlZyA8IDAge1xuICAgICRkZWc6ICRkZWcgKyA5MDtcbiAgfVxuICAvLyBHZXQgYSByYXRpbyBvZiA5MCB0byBtdWx0aXBseSBieS5cbiAgJGRlZzogJGRlZyAvIDkwO1xuXG4gIC8vIG1ha2Ugc3VyZSBtZXRyaWNzIGFyZSByZXNldFxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gIC8vIHJ1biB0aHJvdWdoIHNpZGVzXG4gIEBpZiAkYW5nbGUgPD0gNDUgb3IgJGFuZ2xlID4gMzE1IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKSAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gNDUgYW5kICRhbmdsZSA8PSAxMzUge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqICRkZWcpIDAgKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGg7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDEzNSBhbmQgJGFuZ2xlIDw9IDIyNSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAoJHdpZHRoICogJGRlZykgMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDIyNSBhbmQgJGFuZ2xlIDw9IDMxNSB7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aCAoJGhlaWdodCAqICRkZWcpIDA7XG4gIH1cbn0iLCIvLyBWZXJ0aWNhbGx5IGNlbnRlciBhbnl0aGluZywgbGl0ZXJhbGx5IGFueXRoaW5nLlxuLy8gaHR0cDovL3plcm9zaXh0aHJlZS5zZS92ZXJ0aWNhbC1hbGlnbi1hbnl0aGluZy13aXRoLWp1c3QtMy1saW5lcy1vZi1jc3MvXG5AbWl4aW4gdmVydGljYWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuXG4gIHRvcDogJG1pZHBvaW50O1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3ZlcnRpY2FsIGNlbnRlcicpIHtcbiAgICAgIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhvcml6b250YWwgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgQGlmICRtaWRwb2ludCAhPSAwJSB7XG4gICAgbGVmdDogJG1pZHBvaW50O1xuICB9XG5cbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBYnNvbHV0ZSBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFic29sdXRlLWNlbnRlcigkdmVydGljYWw6IG51bGwsICRob3Jpem9udGFsOiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHZlcnRpY2FsOiBpZigkdmVydGljYWwgIT0gbnVsbCwgJHZlcnRpY2FsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgdG9wOiAkdmVydGljYWw7XG4gIEBpZiAkaG9yaXpvbnRhbCAhPSAwJSB7XG4gICAgbGVmdDogJGhvcml6b250YWw7XG4gIH1cblxuICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENTUyBsZXZlbCA0IFZpZXdwb3J0XG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtZGV2aWNlLWFkYXB0LyN0aGUtYXR2aWV3cG9ydC1ydWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiB2aWV3cG9ydCB7XG4gIEAtd2Via2l0LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tcy12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQHZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4iLCJAbWl4aW4gdW5kZXJsaW5lKCRiYWNrZ3JvdW5kOiBudWxsLCAkY29sb3I6IG51bGwsICRjbGVhci1kZXNjZW5kZXJzOiBudWxsLCAkZGlzdGFuY2U6IG51bGwsICR3aWR0aDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkYmFja2dyb3VuZDogaWYoJGJhY2tncm91bmQgIT0gbnVsbCwgJGJhY2tncm91bmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgYmFja2dyb3VuZCcpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNvbG9yJykpO1xuICAkY2xlYXItZGVzY2VuZGVyczogaWYoJGNsZWFyLWRlc2NlbmRlcnMgIT0gbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnMsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycycpKTtcbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGRpc3RhbmNlJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgd2lkdGgnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgJFBYOiAuMDYyNWVtO1xuXG4gIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKCRleHRlbmQpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHMoYmFja2dyb3VuZC1pbWFnZSkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhsaW5lYXItZ3JhZGllbnQpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKFxuICAgICAgbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKVxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSk7XG4gIH1cbiAgYmFja2dyb3VuZC1zaXplOiAoMiAqICRQWCkgKCgxICsgJHdpZHRoKSAqICRQWCk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgKCgkd2lkdGgpICogJFBYKSArICRkaXN0YW5jZTtcblxuICBAaWYgJGNsZWFyLWRlc2NlbmRlcnMge1xuICAgIHRleHQtc2hhZG93OiAoMSAqICRQWCkgKDEgKiAkUFgpIDAgJGJhY2tncm91bmQsICgtMSAqICRQWCkgMCAwICRiYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd1bmRlcmxpbmUnKSB7XG4gICAgICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBUlQhXG4vLyBJbnNwaXJlZCBieSBodHRwOi8vZWxydW1vcmRlbGFsdXouZ2l0aHViLmlvL1BpeGVsYXRvci9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFydCgkYXJ0LCAkcHgtc2l6ZTogbnVsbCwgJGNvbG9yOiBudWxsLCAkcmFkaXVzOiBudWxsKSB7XG4gICRweC1zaXplOiBpZigkcHgtc2l6ZSAhPSBudWxsLCAkcHgtc2l6ZSwgdG9vbGtpdC1nZXQoJ2FydCBwaXhlbCBzaXplJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCdhcnQgY29sb3InKSk7XG4gICRyYWRpdXM6IGlmKCRyYWRpdXMgIT0gbnVsbCwgJHJhZGl1cywgdG9vbGtpdC1nZXQoJ2FydCBib3JkZXIgcmFkaXVzJykpO1xuXG4gICRidWlsZDogKCk7XG4gICR5OiAkcHgtc2l6ZTtcbiAgJHg6IDA7XG5cbiAgaGVpZ2h0OiAkcHgtc2l6ZTtcbiAgd2lkdGg6ICRweC1zaXplO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyX2xlbmd0aCgkYXJ0KSB7XG4gICAgJGNoYXI6IHN0cl9zbGljZSgkYXJ0LCAkaSwgJGkpO1xuICAgICR4OiAkeCArICRweC1zaXplO1xuXG4gICAgQGlmICRjaGFyID09ICduJyB7XG4gICAgICAkeTogJHkgKyAkcHgtc2l6ZTtcbiAgICAgICR4OiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY2hhciAhPSAnICcge1xuICAgICAgJGJvcmRlcjogJHggJHkgMCAkY29sb3I7XG4gICAgICAkYnVpbGQ6IGFwcGVuZCgkYnVpbGQsICRib3JkZXIsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBib3gtc2hhZG93OiAkYnVpbGQ7XG59IiwiQG1peGluIHNldC1tdWx0aXBsZSgkdmFsdWUsICRwcm9wZXJ0aWVzLi4uKSB7XG4gICRwcm9wZXJ0eS1sZW5ndGg6IGxlbmd0aCgkcHJvcGVydGllcyk7XG4gICRlcnJvci1tc2c6IFwiVGhlIGBzZXQtbXVsdGlwbGVgIG1peGluIHJlcXVpcmVzIHlvdSB0byBwYXNzIGluIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzIHRoZSBzZWNvbmQgYXJndW1lbnRcIjtcblxuICBAaWYgJHByb3BlcnR5LWxlbmd0aCA8IDEge1xuICAgIEBpZiBmZWF0dXJlLWV4aXN0cyhhdC1lcnJvcikge1xuICAgICAgQGVycm9yICRlcnJvci1tc2c7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICRlcnJvci1tc2c7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCBpbiBpcyBhIHdoaXRlLXNwYWNlZCBzZXBhcmF0ZWQgbGlzdC5cbiAgJHByb3BlcnRpZXM6IGlmKCRwcm9wZXJ0eS1sZW5ndGggPT0gMSwgbnRoKCRwcm9wZXJ0aWVzLCAxKSwgJHByb3BlcnRpZXMpO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSBpbiAkcHJvcGVydGllcyB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWVcbiAgfVxufVxuIiwiLy8gIE1vZHVsZSBTY2FsZSBhbmQgYmFzZSBmb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJGJhc2UtZm9udC1zaXplOiAgIDE0cHg7XG4kaWRlYWwtZm9udC1zaXplOiAgMjJweDtcbi8vICRiYXNlLWxpbmUtaGVpZ2h0OiBtcygxLCAkYmFzZS1mb250LXNpemUpO1xuXG4kcmh5dGhtLXVuaXQ6IFwicmVtXCI7XG4kcmh5dGhtLWdhcDogOHB4O1xuJHJlbS13aXRoLXB4LWZhbGxiYWNrOiBmYWxzZTtcblxuJHNjdXQtcmVtLWJhc2U6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZS1mb250LXNpemUpO1xuXG5cbi8vIHt7IENvbXBvbmVudCBzaXplIH19XG4kZ2xvYmFsLXJhZGl1czogM3B4O1xuIiwiLy8gIEdyaWQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG5cbiRsYXlvdXQtYmFzZTogKFxuICBndXR0ZXJzOiAxLzUsXG4gIGNvbHVtbi13aWR0aDogODBweCxcbiAgLy8gZ3V0dGVyLXBvc2l0aW9uOiBpbnNpZGUtc3RhdGljLFxuICBkZWJ1ZzogKFxuICAgIC8vIGltYWdlOiBzaG93LFxuICApLFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IHRydWUsXG4gICAgcmVtOiBmYWxzZSxcbiAgKSxcbik7XG4kc3VzeTogbGF5b3V0KDUgJGxheW91dC1iYXNlKTtcblxuLy8ge3sgRWxlbWVudCB0d2ljayBwb2ludHMgfX1cblxuLy8ge3sgRGV2aWNlIGxheW91dHMgfX1cbiRzdXN5LW1lZGlhOiAoXG4gICdtb2JpbGUnOiAnKG1heC13aWR0aDogNDE0cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6ICcobWF4LXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiAnKG1heC13aWR0aDogMTAyNHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3RhYmxldCc6ICcobWluLXdpZHRoOiA3NjhweCknLFxuICAndGFibGV0LXBvcnRyYWl0LW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ2Rlc2t0b3AnOiAnKG1pbi13aWR0aDogMTIwMHB4KScsXG4gICdjYXRlZ29yeS1tZW51JzogJyhtaW4td2lkdGg6IDEwMjRweCknXG4pO1xuJHRhYmxldDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgdGFibGV0KSxcbiAgbGF5b3V0OiA5IC41XG4pO1xuJHRhYmxldC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCR0YWJsZXQsIGxheW91dCkpO1xuJGRlc2t0b3A6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIGRlc2t0b3ApLFxuICBsYXlvdXQ6IDEyIDEuNSBzcGxpdFxuKTtcbiRkZXNrdG9wLWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJGRlc2t0b3AsIGxheW91dCkpO1xuJGRlc2t0b3AtZ3JpZC1wYWRkaW5nOiBzY3V0LXJlbSgxNSk7XG5cbi8vICB7eyBMYXllcnMgLS0tLS0tIH19XG4kbGF5ZXJzOiAoXG4gIGJhc2UsXG4gIGhlYWRlci1tZW51LFxuICBkcmF3ZXIsXG4gIGRyYXdlci1zaGFkb3csXG4gIGRyYXdlci1uYXYsXG4pOyIsIi8vICBTZXR0aW5nc1xuLy8gID09PT09PT09XG5cbiRjb2xvci1saWdodC1zYXR1cmF0aW9uOiA5MyU7XG5cbi8vICBDb2xvcnNcbi8vICA9PT09PT1cblxuJGdyYXktYmFzZTogICAgICMwMDAgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrZXI6ICAgdGludCgkZ3JheS1iYXNlLCAxMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrOiAgICAgdGludCgkZ3JheS1iYXNlLCAyMCUpICAgIWRlZmF1bHQ7XG4kZ3JheTogICAgICAgICAgdGludCgkZ3JheS1iYXNlLCAzMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodDogICAgdGludCgkZ3JheS1iYXNlLCA0Ni41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodGVyOiAgdGludCgkZ3JheS1iYXNlLCA5My41JSkgIWRlZmF1bHQ7XG5cbi8vICBUZXh0c1xuLy8gIC0tLS0tXG5cbiR0ZXh0LWNvbG9yOiAkZ3JheS1kYXJrO1xuXG4vLyAgUGFsbGV0ZVxuLy8gIC0tLS0tLS0tLS0tXG5cbiRibHVlOiAjMmQ2ZWM2O1xuJGJsdWUtZGFyazogcmdiKDAsIDY5LCAxNjQpO1xuJGJsdWUtbGlnaHQ6ICNkOGU5ZmY7XG4keWVsbG93OiAjZmM5NjAwO1xuJHllbGxvdy1kYXJrOiAjYjg2ZTAwO1xuJHllbGxvdy1saW5rOiAjZmZkODAwO1xuJG9yYW5nZTogI2ZjNDcwMDtcbiRvcmFuZ2UtZGFyazogI2I4NmUwMDtcbiRyZWQ6IHJnYigyMDYsIDY4LCA2Mik7XG4kZ3JlZW46IHJnYigyOCwgMTQ5LCAyMik7XG4kcGluazogcmdiKDE5NywgMzEsIDEyNCk7XG5cbiRwcmltYXJ5OiBzaGFkZSgjNDI4YmNhLCA2LjUlKTtcbiRzdWNjZXNzOiAjNWNiODVjO1xuJGluZm86ICAgICM1YmMwZGM7XG4kd2FybmluZzogI2YwYWQ0ZTtcbiRkYW5nZXI6ICAjZDk1MzRmO1xuXG4kaW5wdXQtYm9yZGVyOiAjZTRlNGU0O1xuJGJvcmRlci1ncmF5OiAjOTE5MTkxO1xuJGJhY2tncm91bmQtZ3JheTogI2U5ZTllOTtcblxuLy8gIExpbmtzXG4vLyAgLS0tLS1cblxuJGxpbmstY29sb3I6ICAgICAgICAgICAjMDAwICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICBzaGFkZSgkbGluay1jb2xvciwgMTUlKSAhZGVmYXVsdDtcbiRsaW5rLWZvY3VzLWNvbG9yOiAgICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLWFjdGl2ZS1jb2xvcjogICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLXZpc2l0ZWQtY29sb3I6ICAgJGdyYXktZGFyayAhZGVmYXVsdDtcblxuLy8gIE5Qcm9ncmVzc1xuLy8gIC0tLS0tLS0tLVxuJG5wcm9ncmVzcy1jb2xvcjogICAgJHByaW1hcnk7XG4iLCIvLyAgRm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiAgIHJpZ2h0O1xuXG4vLyDlg4Xph53lsI3oi7Hmlodcbi8vIEBmb250LWZhY2Uge1xuLy8gICBmb250LWZhbWlseTogRW5nbGlzaDtcbi8vICAgdW5pY29kZS1yYW5nZTogVSswMC0wMjRGO1xuLy8gICBzcmM6IGxvY2FsKEhlbHZldGljYSk7XG4vLyB9XG5cbiRzYW5zOiAgICBIZWx2ZXRpY2FOZXVlLUxpZ2h0XG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUgTGlnaHQnXG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUnXG4gICAgICAgLCAgSGVsdmV0aWNhXG4gICAgICAgLCAnSGVpdGkgVEMnXG4gICAgICAgLCAnTGlIZWkgUHJvJ1xuICAgICAgICwgJ01pY3Jvc29mdCBKaGVuZ0hlaSdcbiAgICAgICAsICflvq7ou5/mraPpu5Hpq5QnXG4gICAgICAgLCAgQXJpYWxcbiAgICAgICAsICBzYW5zLXNlcmlmO1xuXG4kc2VyaWY6ICAnUFQgU2VyaWYnXG4gICAgICAgLCBHZW9yZ2lhXG4gICAgICAgLCBUaW1lc1xuICAgICAgICwgJ1RpbWVzIE5ldyBSb21hbidcbiAgICAgICAsICdTb25ndGkgVEMnXG4gICAgICAgLCAnSGlyYWdpbm8gTWluY2hvIFByb04nXG4gICAgICAgLCBzZXJpZjtcblxuJGJhc2UtZm9udC1mYW1pbHk6ICRzYW5zOyJdLCJtYXBwaW5ncyI6IkE4Q0FBOzs7OztFQUtFO0E5Q1NGLEFBQUEsZ0JBQWdCLENBQUM7RUFDZixNQUFNLEVBQUUsQ0FBQyxDQ2RhLENBQU8sQ0FBUCxDQUFPO0VEZTdCLFFBQVEsRUFBRSxRQUFTO0VBQ25CLEdBQUcsRUFBRSxJQUFDO0VBQ04sTUFBTSxFQ2Z5QixJQUFXLEdEK0IzQztFQXBCRCxBQUFBLGdCQUFnQixBQU1iLFFBQVEsQ0FBQztJQUNSLE9BQU8sRUFBRSxFQUFHO0lBQ1osT0FBTyxFQUFFLEtBQU07SUFDZixJQUFJLEVBQUUsSUFBSSxDQVhILElBQUk7SThDb25CYixRQUFRLEVBQUUsUUFBUztJQUdqQixHQUFHLEVBQUUsR0FBSTtJQUNULFVBQVUsRUFBRSxJQUFLO0lBQ2pCLGFBQWEsRUFBRSxJQUFLO0lBcUJ0QixpQkFBaUIsRUFOQyxnQkFBVTtJQU81QixhQUFhLEVBUEssZ0JBQVU7SUFRNUIsU0FBUyxFQVJTLGdCQUFVO0k5QzNuQjFCLElBQUksRUFBRSxDQUFFLEdBQ1Q7RUFaSCxBQUFBLHNCQUFnQixBQWNQLFFBQVEsQ0FBQztJQUFFLGdCQUFnQixFQUFFLE9BQVEsR0FBSTtFQWRsRCxBQUFBLDRCQUFnQixBQWVELFFBQVEsQ0FBQztJQUFFLGdCQUFnQixFQUFFLE9BQVEsR0FBSTtFQWZ4RCxBQUFBLHNCQUFnQixBQWdCUCxRQUFRLENBQUM7SUFBRSxnQkFBZ0IsRWtFUDdCLE9BQU8sR2xFT2lDO0VBaEIvQyxBQUFBLHFCQUFnQixBQWlCUixRQUFRLENBQUM7SUFBRSxnQkFBZ0IsRWtFQTdCLE9BQUcsR2xFQW9DO0VBakI3QyxBQUFBLHVCQUFnQixBQWtCTixRQUFRLENBQUM7SUFBRSxnQkFBZ0IsRUFBRSxPQUFRLEdBQUk7RUFsQm5ELEFBQUEsc0JBQWdCLEFBbUJQLFFBQVEsQ0FBQztJQUFFLGdCQUFnQixFa0VBN0IsT0FBRyxHbEVBcUM7O0FBRS9DLEFBQUEsc0JBQXNCLENBQUM7RUFDckIsT0FBTyxFQUFFLEtBQU07RUFDZixPQUFPLEVBQUUsQ0FBQyxDQ2xDcUIsR0FBVztFRG1DMUMsU0FBUyxFQTNCeUIsSUFBSTtFQTRCdEMsZ0JBQWdCLEVBQUUsSUFBSztFOEN5bEJ2QixRQUFRLEVBQUUsUUFBUztFQUdqQixHQUFHLEVBQUUsR0FBSTtFQUNULFVBQVUsRUFBRSxJQUFLO0VBQ2pCLGFBQWEsRUFBRSxJQUFLO0VBcUJ0QixpQkFBaUIsRUFOQyxnQkFBVTtFQU81QixhQUFhLEVBUEssZ0JBQVU7RUFRNUIsU0FBUyxFQVJTLGdCQUFVO0U5QzNtQjVCLElBQUksRUN0QzJCLEdBQVc7RUR1QzFDLE9BQU8sRUFBRSxDQUFLLEdBQ2Y7O0FBQ0QsQUFBQSw4QkFBOEIsQ0FBQztFOENvbEI3QixRQUFRLEVBQUUsUUFBUztFQUdqQixHQUFHLEVBQUUsR0FBSTtFQUNULFVBQVUsRUFBRSxJQUFLO0VBQ2pCLGFBQWEsRUFBRSxJQUFLO0VBcUJ0QixpQkFBaUIsRUFOQyxnQkFBVTtFQU81QixhQUFhLEVBUEssZ0JBQVU7RUFRNUIsU0FBUyxFQVJTLGdCQUFVO0U5Q3RtQjVCLEtBQUssRUMzQzBCLEdBQVc7RUQ0QzFDLE9BQU8sRUFBRSxDQUFLLEdBQ2YiLCJuYW1lcyI6W119 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.feature-post {
  padding-top: 8px;
  background-color: #e9e9e9; }

.feature-post__heading {
  padding-left: 8px;
  margin-top: 0;
  margin-right: -8px;
  margin-bottom: 0;
  font-style: normal;
  font-size: 18px;
  color: #fff;
  background-color: #2d6ec6;
  position: relative;
  z-index: 1; }

.feature-post__heading::before {
  content: "";
  display: inline-block;
  height: 0;
  width: 0;
  -webkit-transform: rotate(360deg);
  border-width: 4px;
  border-style: solid;
  border-top-color: #0045a4;
  border-bottom-color: transparent;
  border-left-color: #0045a4;
  border-right-color: transparent;
  right: 0;
  bottom: -8px;
  position: absolute; }

.feature-post__heading--yellow {
  background-color: #fc9600; }

.feature-post__heading--yellow::before {
  display: inline-block;
  height: 0;
  width: 0;
  -webkit-transform: rotate(360deg);
  border-width: 4px;
  border-style: solid;
  border-top-color: #b86e00;
  border-bottom-color: transparent;
  border-left-color: #b86e00;
  border-right-color: transparent; }

.feature-post__heading--orange {
  background-color: #fc4700; }

.feature-post__heading--orange::before {
  display: inline-block;
  height: 0;
  width: 0;
  -webkit-transform: rotate(360deg);
  border-width: 4px;
  border-style: solid;
  border-top-color: #b86e00;
  border-bottom-color: transparent;
  border-left-color: #b86e00;
  border-right-color: transparent; }

.feature-post__content {
  padding: 8px; }

.feature-post__content .list--dot {
  margin-top: 8px;
  margin-bottom: 8px;
  padding-left: 22px; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2ZlYXR1cmUtcG9zdC5zY3NzIiwic291cmNlcyI6WyIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fZmVhdHVyZS1wb3N0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX21peGlucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19jbGFzc2VzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2N1dC9kaXN0L19zY3V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL190b29sa2l0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BsYWNlaG9sZGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fZm9udHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9faW50cmluc2ljLXJhdGlvLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX25lc3RlZC1jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BhcmFsbGF4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3J0bC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190YXJnZXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdHJpYW5nbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2VudGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3ZpZXdwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3VuZGVybGluZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19hcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0LW11bHRpcGxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3NjYWxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2ZvbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tIHZlbmRvciBtaXhpbiBsaWJyYXJpZXMgLS0tLVxuQGltcG9ydCBcIm1peGluc1wiLFxuICAgICAgICBcImNsYXNzZXNcIixcbiAgICAgICAgXCJ+c3VzeVwiLFxuICAgICAgICBcIn5zY3V0XCIsXG4gICAgICAgIFwifnNhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0XCI7XG5cbi8vIC0tLS0gdmFyaWFibGVzIGFuZCBjb25maWcgLS0tLVxuQGltcG9ydCBcInNldHRpbmdzL3NjYWxlXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZ3JpZFwiLFxuICAgICAgICBcInNldHRpbmdzL2NvbG9yc1wiLFxuICAgICAgICBcInNldHRpbmdzL2ZvbnRcIjsuZmVhdHVyZS1wb3N0IHtcbiAgcGFkZGluZy10b3A6IHIoMSk7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWdyYXk7XG59XG4uZmVhdHVyZS1wb3N0X19oZWFkaW5nIHtcbiAgJHRyaWFuZ2xlLXNpemU6IDhweDtcbiAgcGFkZGluZy1sZWZ0OiByKDEpO1xuICBtYXJnaW46IDAgcigtMSkgMCBuKCk7XG4gIHRleHQ6IG5vcm1hbCAxOHB4ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICRibHVlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IGluZGV4KCRsYXllcnMsIGJhc2UpO1xuXG4gICY6OmJlZm9yZSB7XG4gICAgJHNpemU6ICR0cmlhbmdsZS1zaXplO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgQGluY2x1ZGUgc2N1dC10cmlhbmdsZSh0b3AtbGVmdCwgJHNpemUsICRibHVlLWRhcmspO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSBuKCkgMCAoLSRzaXplKSBuKCk7XG4gIH1cblxuICAmLS15ZWxsb3cge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR5ZWxsb3c7XG4gICAgJjo6YmVmb3JlIHsgQGluY2x1ZGUgc2N1dC10cmlhbmdsZSh0b3AtbGVmdCwgJHRyaWFuZ2xlLXNpemUsICR5ZWxsb3ctZGFyayk7IH1cbiAgfVxuXG4gICYtLW9yYW5nZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9yYW5nZTtcbiAgICAmOjpiZWZvcmUgeyBAaW5jbHVkZSBzY3V0LXRyaWFuZ2xlKHRvcC1sZWZ0LCAkdHJpYW5nbGUtc2l6ZSwgJG9yYW5nZS1kYXJrKTsgfVxuICB9XG59XG4uZmVhdHVyZS1wb3N0X19jb250ZW50IHtcbiAgcGFkZGluZzogcigxKTtcblxuICAubGlzdC0tZG90IHtcbiAgICBtYXJnaW46IHIoMSkgbigpO1xuICAgIHBhZGRpbmctbGVmdDogcig0KTtcbiAgfVxufSIsIi8vIHt7U2FzcyBtaXhpbnMgLS0tLS0tLS19fVxuQGZ1bmN0aW9uIG4oKSB7IEByZXR1cm4gdW5xdW90ZShcIipcIik7IH1cblxuQGZ1bmN0aW9uIHIoJHRpbWVzOiAxKSB7IEByZXR1cm4gJHJoeXRobS1nYXAgKiAkdGltZXM7IH1cblxuQG1peGluIHN1c3koJG1hcCkge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkbWFwLCBxdWVyeSksIG1hcC1nZXQoJG1hcCwgbGF5b3V0KSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiByZXZlcnNlLWhpZGUtdmlzdWFsbHkoKSB7XG4gIGJvcmRlcjogMDtcbiAgY2xpcDogYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogYXV0bztcbn1cblxuQG1peGluIHNoYXJlLWJyZWFrcG9pbnRzKCRtYXAsICRjc3Nwcm9wOiBjb250ZW50KSB7XG4gICRkZXNjcmlwdGlvbjogJyc7XG5cbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgQGlmICRkZXNjcmlwdGlvbiAhPSAgJycge1xuICAgICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAnIHwgJztcbiAgICB9XG4gICAgXG4gICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAkcHJvcGVydHkgKyc6ICcrIGluc3BlY3QoJHZhbHVlKTtcbiAgfVxuXG4gIGRpc3BsYXk6IG5vbmU7XG4gICN7JGNzc3Byb3B9OiAgJGRlc2NyaXB0aW9uO1xufVxuXG5AbWl4aW4gdG9nZ2xlLWZhZGUoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIH1cbn1cblxuQG1peGluIHRvZ2dsZS1zaG93KCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IDA7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9ICBcbn1cblxuQG1peGluIHNob3coKSB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICBoZWlnaHQ6IGF1dG87ICBcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyKCkge1xuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCBcbiAgJjo6LW1vei1wbGFjZWhvbGRlcixcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxufVxuXG5AbWl4aW4gZGVidWcoJGNvbG9yOiAjZmZmIHJnYmEodG9tYXRvLCAuMykpIHtcbiAgY29sb3I6ICRjb2xvclxufVxuXG5AbWl4aW4gbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSk7XG4gID4gbGkgKyBsaTpiZWZvcmUgeyBtYXJnaW4tbGVmdDogJHNwYWNlICsgNHB4OyB9XG59XG4iLCJAbWl4aW4gSGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBTZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBwYWRkaW5nOiAwIHIoMikgMCByKDEpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAvLyBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIC8vIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gIC8vIGJhY2tncm91bmQ6IHVybChcImltYWdlcy9hcnJvdy1kb3duLnN2Z1wiKVxuICAvLyAgICAgICAgICAgOTIlIDUwJSAvIDhweCAxMHB4XG4gIC8vICAgICAgICAgICBuby1yZXBlYXRcbiAgLy8gICAgICAgICAgIHRyYW5zcGFyZW50O1xuICAubm8tY3NzLWFwcGVhcmFuY2UgJiB7XG4gICAgQGluY2x1ZGUgc2N1dC1wYWRkaW5nKG4gMCk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gTm9ybWFsaXplKCkge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmUgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDA7XG59IiwiLy8gU3VzeVxuLy8gPT09PVxuXG5AaW1wb3J0ICdzdXN5L2xhbmd1YWdlL3N1c3knO1xuIiwiLy8gU3VzeSBOZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4kc3VzeS12ZXJzaW9uOiAyLjE7XG5cbkBpbXBvcnQgXCIuLi9zdVwiO1xuQGltcG9ydCBcIi4uL291dHB1dC9mbG9hdFwiO1xuXG5AaW1wb3J0IFwic3VzeS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1c3kvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1c3kvZ3JpZHNcIjtcbkBpbXBvcnQgXCJzdXN5L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRleHRcIjtcbkBpbXBvcnQgXCJzdXN5L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInN1c3kvc3BhblwiO1xuQGltcG9ydCBcInN1c3kvZ3V0dGVyc1wiO1xuQGltcG9ydCBcInN1c3kvaXNvbGF0ZVwiO1xuQGltcG9ydCBcInN1c3kvZ2FsbGVyeVwiO1xuQGltcG9ydCBcInN1c3kvcm93c1wiO1xuQGltcG9ydCBcInN1c3kvbWFyZ2luc1wiO1xuQGltcG9ydCBcInN1c3kvcGFkZGluZ1wiO1xuQGltcG9ydCBcInN1c3kvYmxlZWRcIjtcbkBpbXBvcnQgXCJzdXN5L2JyZWFrcG9pbnQtcGx1Z2luXCI7XG4iLCIvLyBTdVxuLy8gPT1cblxuQGltcG9ydCBcInN1L3V0aWxpdGllc1wiO1xuQGltcG9ydCBcInN1L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3UvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1L2dyaWRcIjtcbiIsIi8vIE1hcCBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBUcnVuY2F0ZSBMaXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiBhIGxpc3QsIHRydW5jYXRlZCB0byBhIGdpdmVuIGxlbmd0aFxuQGZ1bmN0aW9uIF9zdXN5LXRydW5jYXRlLWxpc3QoXG4gICRsaXN0LFxuICAkbGVuZ3RoXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgJF9yZXR1cm46IGlmKCRpIDw9ICRsZW5ndGgsIGFwcGVuZCgkX3JldHVybiwgbnRoKCRsaXN0LCAkaSkpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgR2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1nZXQoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46ICRtYXA7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIHR5cGUtb2YoJF9yZXR1cm4pID09IG1hcCB7XG4gICAgICAkX3JldHVybjogbWFwLWdldCgkX3JldHVybiwgJGtleSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIFNldFxuLy8gLS0tLS0tLS1cbi8vIC0gU2V0IGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtc2V0KFxuICAkbWFwLFxuICAka2V5cy12YWx1ZS4uLlxuKSB7XG4gICRfdmFsdWU6IG50aCgka2V5cy12YWx1ZSwgLTEpO1xuICAkX2tleXM6IF9zdXN5LXRydW5jYXRlLWxpc3QoJGtleXMtdmFsdWUsIGxlbmd0aCgka2V5cy12YWx1ZSkgLSAxKTtcbiAgJF9sZW5ndGg6IGxlbmd0aCgkX2tleXMpO1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkX2xlbmd0aCB7XG4gICAgJF9uOiAwIC0gJGk7XG4gICAgJF9sZXZlbDogX3N1c3ktdHJ1bmNhdGUtbGlzdCgkX2tleXMsICRfbGVuZ3RoICsgJF9uKTtcbiAgICAkX2xldmVsOiBfc3VzeS1kZWVwLWdldCgkbWFwLCAkX2xldmVsLi4uKTtcbiAgICAkX21lcmdlOiBudGgoJF9rZXlzLCAkX24pO1xuICAgICRfbWVyZ2U6ICgkX21lcmdlOiAkX3ZhbHVlKTtcbiAgICAkX3JldHVybjogaWYoJF9sZXZlbCwgbWFwLW1lcmdlKCRfbGV2ZWwsICRfbWVyZ2UpLCAkX21lcmdlKTtcbiAgICAkX3ZhbHVlOiAkX3JldHVybjtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBNZXJnZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIDIgb2JqZWN0cyBvZiBhbnkgZGVwdGgsIG1lcmdlZFxuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtbWVyZ2UoXG4gICRtYXAxLFxuICAkbWFwMlxuKSB7XG5cbiAgQGlmIHR5cGUtb2YoJG1hcDEpICE9IG1hcCBvciB0eXBlLW9mKCRtYXAyKSAhPSBtYXAge1xuICAgICRtYXAxOiAkbWFwMjtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAyIHtcbiAgICAgICRfbmV3OiAoJGtleTogX3N1c3lfZGVlcC1tZXJnZShtYXAtZ2V0KCRtYXAxLCAka2V5KSwgJHZhbHVlKSk7XG4gICAgICAkbWFwMTogbWFwLW1lcmdlKCRtYXAxLCAkX25ldyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbWFwMTtcbn1cblxuXG4vLyBEZWVwIEhhcy1LZXlcbi8vIC0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gdHJ1ZSBpZiBhIGRlZXAga2V5IGV4aXN0c1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtaGFzLWtleShcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogbnVsbDtcbiAgJF9zdG9wOiBmYWxzZTtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgbm90KCRfc3RvcCkge1xuICAgICAgJF9yZXR1cm46IG1hcC1oYXMta2V5KCRtYXAsICRrZXkpO1xuICAgIH1cblxuICAgIEBpZiAkX3JldHVybiB7XG4gICAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9zdG9wOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTZXR0aW5nc1xuLy8gPT09PT09PT1cblxuLy8gVmVyc2lvblxuLy8gLS0tLS0tLVxuJHN1LXZlcnNpb246IDEuMTtcblxuXG4vLyBEZWZhdWx0IFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBUaGUgYmFzaWMgc2V0dGluZ3NcbiRzdXN5LWRlZmF1bHRzOiAoXG4gIGNvbHVtbnM6IDQsXG4gIGd1dHRlcnM6IC4yNSxcbik7XG5cblxuLy8gVXNlciBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBEZWZpbmUgdGhlICRzdXN5IHZhcmlhYmxlIHdpdGggYSBtYXAgb2YgeW91ciBvd24gc2V0dGluZ3MuXG4vLyAtIFNldCBFSVRIRVIgJGNvbHVtbi13aWR0aCBPUiAkY29udGFpbmVyXG4vLyAtIFVzZSAkY29sdW1uLXdpZHRoIGZvciBzdGF0aWMgbGF5b3V0c1xuJHN1c3k6ICgpICFkZWZhdWx0O1xuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IEFkZCBkZWZhdWx0cyB0byBTdXN5XG5AbWl4aW4gc3VzeS1kZWZhdWx0cyhcbiAgJGRlZmF1bHRzXG4pIHtcbiAgJHN1c3ktZGVmYXVsdHM6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJGRlZmF1bHRzKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgU2V0XG4vLyAtLS0tLS0tLVxuLy8gQ2hhbmdlIG9uZSBzZXR0aW5nXG4vLyAtICRrZXkgICA6IHNldHRpbmcgbmFtZVxuLy8gLSAkdmFsdWUgOiBzZXR0aW5nIHZhbHVlXG5AbWl4aW4gc3VzeS1zZXQoXG4gICRrZXktdmFsdWUuLi5cbikge1xuICAkc3VzeTogX3N1c3ktZGVlcC1zZXQoJHN1c3ksICRrZXktdmFsdWUuLi4pICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm4gb25lIHNldHRpbmcgZnJvbSBhIGdyaWRcbi8vIC0gJGtleSAgICAgOiA8a2V5d29yZD5cbi8vIC0gJGxheW91dCAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gc3VzeS1nZXQoXG4gICRrZXksXG4gICRsYXlvdXQ6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJHN1c3kpXG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF9vcHRpb25zOiAkbGF5b3V0ICRzdXN5ICRzdXN5LWRlZmF1bHRzO1xuICAkX2JyZWFrOiBmYWxzZTtcbiAgJF9yZXR1cm46IG51bGw7XG5cbiAgQGVhY2ggJG9wdCBpbiAkX29wdGlvbnMge1xuICAgIEBpZiB0eXBlLW9mKCRvcHQpID09IG1hcCBhbmQgbm90KCRfYnJlYWspIHtcbiAgICAgICRfa2V5c2V0OiBfc3VzeS1kZWVwLWhhcy1rZXkoJG9wdCwgJGtleS4uLik7XG4gICAgICBAaWYgJF9rZXlzZXQge1xuICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1nZXQoJG9wdCwgJGtleS4uLik7XG4gICAgICAgICRfYnJlYWs6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIE1hdGggVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09XG5cblxuLy8gVmFsaWQgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGNvbHVtbiBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRjb2x1bW5zKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkY29sdW1ucykge1xuICAgICRyZXR1cm46ICRjb2x1bW5zO1xuICB9IEBlbHNlIGlmICR0eXBlID09IGxpc3Qge1xuICAgICRmYWlsOiBudWxsO1xuICAgIEBlYWNoICRjb2wgaW4gJGNvbHVtbnMge1xuICAgICAgQGlmIHR5cGUtb2YoJGNvbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgJGZhaWw6ICRmYWlsIG9yIGlmKHVuaXRsZXNzKCRjb2wpLCBudWxsLCB0cnVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHJldHVybjogaWYoJGZhaWwsICRyZXR1cm4sICRjb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiAkcmV0dXJuICE9ICRjb2x1bW5zIGFuZCBub3QoJHNpbGVudCkge1xuICAgICRyZXR1cm46IG51bGw7XG4gICAgJHdhcm46ICckY29sdW1ucyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyIG9yIGxpc3Qgb2YgdW5pdGxlc3MgbnVtYmVycy4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGNvbHVtbnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG4vLyBWYWxpZCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgZ3V0dGVyIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtZ3V0dGVycyhcbiAgJGd1dHRlcnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXJzKSB7XG4gICAgJHJldHVybjogJGd1dHRlcnM7XG4gIH0gQGVsc2UgaWYgbm90KCRzaWxlbnQpIHtcbiAgICAkd2FybjogJyRndXR0ZXJzIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRndXR0ZXJzfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBDb2x1bW4gbWF0aFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBJcyBTeW1tZXRyaWNhbFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIGdyaWQgaXMgc3ltbWV0cmljYWwuXG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gaXMtc3ltbWV0cmljYWwoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpZih0eXBlLW9mKCRjb2x1bW5zKSA9PSBudW1iZXIsICRjb2x1bW5zLCBudWxsKTtcbn1cblxuXG4vLyBTdXN5IENvdW50XG4vLyAtLS0tLS0tLS0tXG4vLyBGaW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiBhIGdpdmVuIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktY291bnQoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykgb3IgbGVuZ3RoKCRjb2x1bW5zKTtcbn1cblxuXG4vLyBTdXN5IFN1bVxuLy8gLS0tLS0tLS1cbi8vIEZpbmQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5LXN1bShcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuXG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQgPT0gd2lkZSwgMCwgaWYoJHNwcmVhZCA9PSB3aWRlciwgMSwgLTEpKTtcbiAgJGd1dHRlci1zdW06IChzdXN5LWNvdW50KCRjb2x1bW5zKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICRjb2x1bW4tc3VtOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgQGlmIG5vdCgkY29sdW1uLXN1bSkge1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGNvbHVtbnMge1xuICAgICAgJGNvbHVtbi1zdW06ICgkY29sdW1uLXN1bSBvciAwKSArICRjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtO1xufVxuXG5cbi8vIFN1c3kgU2xpY2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBvZiBjb2x1bW5zIGF0IGEgZ2l2ZW4gbG9jYXRpb24uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkc3ViLWNvbHVtbnM6ICRzcGFuO1xuXG4gIEBpZiBub3QoaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpKSB7XG4gICAgJGxvY2F0aW9uOiAkbG9jYXRpb24gb3IgMTtcbiAgICAkc3ViLWNvbHVtbnM6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRzcGFuKSB7XG4gICAgICAkc3ViLWNvbHVtbnM6IGFwcGVuZCgkc3ViLWNvbHVtbnMsIG50aCgkY29sdW1ucywgJGkpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG4vLyBTdXN5XG4vLyAtLS0tXG4vLyBGaW5kIHRoZSBzdW0gb2YgYSBjb2x1bW4tc3Bhbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5KFxuICAkc3BhbixcbiAgJGxvY2F0aW9uICAgICA6IGZhbHNlLFxuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICAgICAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgICAgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG4gICRzcGFuOiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcblxuICBAcmV0dXJuIHN1c3ktc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCk7XG59XG4iLCIvLyBGbG9hdCBBUElcbi8vID09PT09PT09PVxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbkBpbXBvcnQgXCJmbG9hdC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJmbG9hdC9zcGFuXCI7XG5AaW1wb3J0IFwiZmxvYXQvZW5kXCI7XG5AaW1wb3J0IFwiZmxvYXQvaXNvbGF0ZVwiO1xuIiwiLy8gU2hhcmVkIEFQSVxuLy8gPT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydFwiO1xuXG5AaW1wb3J0IFwic2hhcmVkL2luc3BlY3RcIjtcbkBpbXBvcnQgXCJzaGFyZWQvb3V0cHV0XCI7XG5AaW1wb3J0IFwic2hhcmVkL2RpcmVjdGlvblwiO1xuQGltcG9ydCBcInNoYXJlZC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic2hhcmVkL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNoYXJlZC9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic2hhcmVkL3BhZGRpbmdcIjtcblxuXG5cbiIsIi8vIFN1c3kgQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydC9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9wcmVmaXhcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3JlbVwiO1xuQGltcG9ydCBcInN1cHBvcnQvY2xlYXJmaXhcIjtcbiIsIi8vIEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgU3VwcG9ydCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgYnJlYWtwb2ludDogdHJ1ZSxcbiAgICBib3gtc2l6aW5nOiB0cnVlLFxuICAgIHJlbTogdHJ1ZSxcbiAgKSxcbikpO1xuXG5cbi8vIFN1c3kgU3VwcG9ydCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VuZCBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0byB0aGUgcHJvcGVyIHN1cHBvcnQgbW9kdWxlcy5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXN1cHBvcnQoXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgLy8gQmFja2dyb3VuZCBTdXBwb3J0XG4gIEBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtaW1hZ2UoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1zaXplIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtc2l6ZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLW9yaWdpbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbigkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWNsaXAge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1jbGlwKCR2YWwpO1xuICB9XG5cbiAgLy8gQm94LVNpemluZyBTdXBwb3J0XG4gIEBlbHNlIGlmICRwcm9wID09IGJveC1zaXppbmcge1xuICAgIEBpbmNsdWRlIHN1c3ktYm94LXNpemluZygkdmFsKTtcbiAgfVxuXG4gIC8vIFJlbSBTdXBwb3J0XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cblxuXG4vLyBTdXN5IFN1cHBvcnQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBzdXBwb3J0IG9mIGEgZmVhdHVyZS5cbi8vIC0gJGZlYXR1cmUgICAgICAgOiA8c3RyaW5nPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nIFwicmVtXCIgb3IgXCJib3gtc2l6aW5nXCJcbi8vIC0gJHJlcXVpcmVtZW50cyAgOiA8bWFwPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nICh2YXJpYWJsZTogcmVtLXdpdGgtcHgtZmFsbGJhY2ssIG1peGluOiByZW0pXG4vLyAtICR3YXJuICAgICAgICAgIDogPGJvb2w+XG5AZnVuY3Rpb24gc3VzeS1zdXBwb3J0KFxuICAkZmVhdHVyZSxcbiAgJHJlcXVpcmVtZW50czogKCksXG4gICR3YXJuOiB0cnVlXG4pIHtcbiAgJF9zdXBwb3J0OiBzdXN5LWdldCh1c2UtY3VzdG9tICRmZWF0dXJlKTtcblxuICBAaWYgJF9zdXBwb3J0IHtcbiAgICAkX2ZhaWw6IGZhbHNlO1xuXG4gICAgQGVhY2ggJF90eXBlLCAkX3JlcSBpbiAkcmVxdWlyZW1lbnRzIHtcbiAgICAgIEBlYWNoICRfaSBpbiAkX3JlcSB7XG4gICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcblxuICAgICAgICBAaWYgbm90KCRfcGFzcykge1xuICAgICAgICAgICRfZmFpbDogdHJ1ZTtcbiAgICAgICAgICBAaWYgJHdhcm4ge1xuICAgICAgICAgICAgQHdhcm4gXCJZb3UgcmVxdWVzdGVkIGN1c3RvbSBzdXBwb3J0IG9mICN7JGZlYXR1cmV9LCBidXQgdGhlICN7JF9pfSAjeyRfdHlwZX0gaXMgbm90IGF2YWlsYWJsZS5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3N1cHBvcnQ6IGlmKCRfZmFpbCwgZmFsc2UsICRfc3VwcG9ydCk7XG4gIH1cblxuICBAcmV0dXJuICRfc3VwcG9ydDtcbn1cbiIsIi8vIFN1c3kgUHJlZml4XG4vLyA9PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IHNpbXBsZSBwcmVmaXhlZCBwcm9wZXJ0aWVzLlxuLy8gLSAkcHJvcCAgICAgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgICAgICA6IDxjc3MgdmFsdWU+XG4vLyAtIFskcHJlZml4XSAgOiA8YnJvd3NlciBwcmVmaXggbGlzdD5cbkBtaXhpbiBzdXN5LXByZWZpeChcbiAgJHByb3AsXG4gICR2YWwsXG4gICRwcmVmaXg6IG9mZmljaWFsXG4pIHtcbiAgQGVhY2ggJGZpeCBpbiAkcHJlZml4IHtcbiAgICAkZml4OiBpZigkZml4ID09IG9mZmljaWFsIG9yIG5vdCgkZml4KSwgJHByb3AsICctI3skZml4fS0jeyRwcm9wfScpO1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRmaXgsICR2YWwpO1xuICB9XG59XG4iLCIvLyBCYWNrZ3JvdW5kIFByb3BlcnRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEJhY2tncm91bmQgSW1hZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtaW1hZ2U+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2Vcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtaW1hZ2UsIChtaXhpbjogYmFja2dyb3VuZC1pbWFnZSksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLi4uKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBTaXplXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLXNpemU+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1zaXplKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgkc2l6ZSk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemU7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIE9yaWdpblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtb3JpZ2luPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oXG4gICRvcmlnaW5cbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLW9yaWdpbikpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRvcmlnaW47XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIENsaXBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1jbGlwPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1jbGlwKFxuICAkY2xpcFxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtY2xpcCkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNsaXAoJGNsaXApO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwO1xuICB9XG59XG4iLCIvLyBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09XG5cbi8vIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkbW9kZWw6IDxib3gtc2l6aW5nPlxuQG1peGluIHN1c3ktYm94LXNpemluZyhcbiAgJG1vZGVsOiBjb250ZW50LWJveFxuKSB7XG4gIEBpZiAkbW9kZWwge1xuICAgIEBpZiBzdXN5LXN1cHBvcnQoYm94LXNpemluZywgKG1peGluOiBib3gtc2l6aW5nKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKCRtb2RlbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJlZml4OiAobW96LCB3ZWJraXQsIG9mZmljaWFsKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktcHJlZml4KGJveC1zaXppbmcsICRtb2RlbCwgJHByZWZpeCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBEZWJ1Z2dpbmdcbi8vID09PT09PT09PVxuXG4vLyBTdXN5IEluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8gT3V0cHV0IGFyZ3VtZW50cyBwYXNzZWQgdG8gYSBpbnNwZWN0LlxuLy8gLSAkbWl4aW4gIDogPHN1c3kgbWl4aW4+XG4vLyAtICRpbnNwZWMgICA6IDxtaXhpbiBhcmd1bWVudHM+XG5cbkBtaXhpbiBzdXN5LWluc3BlY3QoXG4gICRtaXhpbixcbiAgJGluc3BlY3Rcbikge1xuICAkc2hvdzogZmFsc2U7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGluc3BlY3Qge1xuICAgIEBpZiBpbmRleCgkaXRlbSwgaW5zcGVjdCkge1xuICAgICAgJHNob3c6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzaG93IG9yIHN1c3ktZ2V0KGRlYnVnIGluc3BlY3QpIHtcbiAgICAtc3VzeS0jeyRtaXhpbn06IGluc3BlY3QoJGluc3BlY3QpO1xuICB9XG59XG4iLCIvLyBPdXRwdXRcbi8vID09PT09PVxuXG4vLyBPdXRwdXRcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IENTUyB3aXRoIHByb3BlciBicm93c2VyIHN1cHBvcnQuXG4vLyAtICRzdHlsZXMgIDogPG1hcCBvZiBjc3MgcHJvcGVydHktdmFsdWUgcGFpcnM+XG5AbWl4aW4gb3V0cHV0KFxuICAkc3R5bGVzXG4pIHtcbiAgQGVhY2ggJHByb3AsICR2YWwgaW4gJHN0eWxlcyB7XG4gICAgQGluY2x1ZGUgc3VzeS1zdXBwb3J0KCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gR3JpZCBCYWNrZ3JvdW5kIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuLy8gLSBTdWItcGl4ZWwgcm91bmRpbmcgY2FuIGxlYWQgdG8gc2V2ZXJhbCBwaXhlbHMgdmFyaWF0aW9uIGJldHdlZW4gYnJvd3NlcnMuXG5cbi8vIEdyaWQgQmFja2dyb3VuZCBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGltYWdlOiBiYWNrZ3JvdW5kLWltYWdlXG4vLyAtICRzaXplOiBiYWNrZ3JvdW5kLXNpemVcbi8vIC0gJGNsaXA6IGJhY2tncm91bmQtY2xpcFxuLy8gLSBbJGZsb3ddOiBsdHIgfCBydGxcbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0IChcbiAgJGltYWdlLFxuICAkc2l6ZTogbnVsbCxcbiAgJGNsaXA6IG51bGwsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2UsXG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZSxcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBmcm9tKCRmbG93KSB0b3AsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBNYXJnaW5zIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gTWFyZ2luIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBtYXJnaW4tb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUGFkZGluZyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIFBhZGRpbmcgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBwYWRkaW5nLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBDb250YWluZXJcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGZsb2F0LWNvbnRhaW5lcihcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gIEBpbmNsdWRlIHN1c3ktY2xlYXJmaXg7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1vdXRwdXQoJHdpZHRoLCAkanVzdGlmeSwgJHByb3BlcnR5KTtcbn1cbiIsIi8vIEZsb2F0IFNwYW4gQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBTcGFuIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHdpZHRoICAgICAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG9hdF0gICAgICAgICAgIDogZnJvbSB8IHRvXG4vLyAtIFskbWFyZ2luLWJlZm9yZV0gICA6IDxsZW5ndGg+XG4vLyAtIFskbWFyZ2luLWFmdGVyXSAgICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1iZWZvcmVdICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1hZnRlcl0gICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gICAgICAgICAgICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LXNwYW4tb3V0cHV0KFxuICAkd2lkdGgsXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbSxcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsLFxuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGwsXG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbCxcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsLFxuICAkZmxvdyAgICAgICAgICAgICA6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvICAgICA6IHRvKCRmbG93KTtcbiAgJGZyb20gICA6IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aDogJHdpZHRoLFxuICAgIGZsb2F0OiBpZigkZmxvYXQgPT0gdG8sICR0bywgbnVsbCkgb3IgaWYoJGZsb2F0ID09IGZyb20sICRmcm9tLCBudWxsKSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkcGFkZGluZy1hZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IElzb2xhdGlvbiBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gSXNvbGF0ZSBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRwdXNoICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBpc29sYXRlLW91dHB1dChcbiAgJHB1c2gsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiAkZnJvbSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRwdXNoLFxuICAgIG1hcmdpbi0jeyR0b306IC0xMDAlLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFN1c3kgU2V0dGluZ3Ncbi8vID09PT09PT09PT09PT1cblxuLy8gU3VzeSBMYW5ndWFnZSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBjZW50ZXIsXG4gIGd1dHRlci1wb3NpdGlvbjogYWZ0ZXIsXG4gIGdsb2JhbC1ib3gtc2l6aW5nOiBjb250ZW50LWJveCxcbiAgZGVidWc6IChcbiAgICBpbWFnZTogaGlkZSxcbiAgICBjb2xvcjogcmdiYSgjNjZmLCAuMjUpLFxuICAgIG91dHB1dDogYmFja2dyb3VuZCxcbiAgICB0b2dnbGU6IHRvcCByaWdodCxcbiAgKSxcbikpO1xuXG5cbi8vIFZhbGlkIEtleXdvcmQgVmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFOiBET05UJ1QgVE9VQ0hcbiRzdXN5LWtleXdvcmRzOiAoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogc3RhdGljIGZsdWlkLFxuICBvdXRwdXQ6IGlzb2xhdGUgZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogbGVmdCBjZW50ZXIgcmlnaHQsXG4gIGZsb3c6IGx0ciBydGwsXG4gIGd1dHRlci1wb3NpdGlvbjogYmVmb3JlIGFmdGVyIHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljLFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94IGNvbnRlbnQtYm94LFxuICBzcGFuOiBmdWxsLFxuICBlZGdlOiBmaXJzdCBhbHBoYSBsYXN0IG9tZWdhIGZ1bGwsXG4gIHNwcmVhZDogbmFycm93IHdpZGUgd2lkZXIsXG4gIGd1dHRlci1vdmVycmlkZTogbm8tZ3V0dGVycyBuby1ndXR0ZXIsXG4gIHJvbGU6IG5lc3QsXG4gIGNsZWFyOiBicmVhayBub2JyZWFrLFxuICBkZWJ1ZyBpbWFnZTogc2hvdyBoaWRlIHNob3ctY29sdW1ucyBzaG93LWJhc2VsaW5lLFxuICBkZWJ1ZyBvdXRwdXQ6IGJhY2tncm91bmQgb3ZlcmxheSxcbik7XG5cblxuLy8gUGFyc2UgU3VzeSBLZXl3b3JkcyBhbmQgTWFwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNldHRpbmdzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gc3RyaW5nc1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IHN0cmluZyB7XG4gICAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkc3VzeS1rZXl3b3JkcyB7XG4gICAgICAgICAgQGlmIGluZGV4KCR2YWx1ZSwgJGl0ZW0pIHtcbiAgICAgICAgICAgICRfa2V5LXZhbHVlOiBhcHBlbmQoJGtleSwgJGl0ZW0pO1xuICAgICAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtc2V0KCRfcmV0dXJuLCAkX2tleS12YWx1ZS4uLik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAvLyBtYXBzXG4gICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IG1hcCB7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIENvbHVtbnMgJiBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWxheW91dChcbiAgJHNob3J0XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuICAkX2NvbHVtbnM6ICgpO1xuICAkX2d1dHRlcnM6IG51bGw7XG5cbiAgQGlmIG5vdCh1bml0bGVzcyhudGgobnRoKCRzaG9ydCwgMSksIDEpKSkge1xuICAgICRfZ3V0dGVyczogbnRoKCRzaG9ydCwgMSk7XG4gIH0gQGVsc2Uge1xuICAgICRfY29sdW1uczogKGNvbHVtbnM6IG50aCgkc2hvcnQsIDEpKTtcbiAgICAkX2d1dHRlcnM6IGlmKGxlbmd0aCgkc2hvcnQpID4gMSwgbnRoKCRzaG9ydCwgMiksICRfZ3V0dGVycyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkX2d1dHRlcnMpID09IGxpc3QgYW5kIGxlbmd0aCgkX2d1dHRlcnMpID4gMCB7XG4gICAgJF9ndXR0ZXJzOiAoXG4gICAgICBndXR0ZXJzOiBudGgoJF9ndXR0ZXJzLCAyKSAvIG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICAgY29sdW1uLXdpZHRoOiBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlcnM6IGlmKCRfZ3V0dGVycywgKGd1dHRlcnM6ICRfZ3V0dGVycyksICgpKTtcbiAgfVxuXG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfY29sdW1ucyk7XG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfZ3V0dGVycyk7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHcmlkL0NvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWdyaWQoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogcGFyc2Utc2V0dGluZ3MoJHNob3J0KTtcbiAgJF9sYXlvdXQ6ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gbnVtYmVyIG9yIGxpc3RcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IG9yIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICAgJF9sYXlvdXQ6IGFwcGVuZCgkX2xheW91dCwgJGl0ZW0pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY29udGFpbmVyOiAkaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9sYXlvdXQ6IGlmKGxlbmd0aCgkX2xheW91dCkgPiAwLCBwYXJzZS1sYXlvdXQoJF9sYXlvdXQpLCAkX2xheW91dCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkX3JldHVybiwgJF9sYXlvdXQpO1xufVxuXG5cbi8vIFBhcnNlIFNwYW5cbi8vIC0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zcGFuKFxuICAkc2hvcnQsXG4gICRrZXk6IHNwYW5cbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgICRfYXQ6IGluZGV4KCRzaG9ydCwgYXQpO1xuXG4gICAgQGlmICRfYXQge1xuICAgICAgJF9sb2NpOiAkX2F0ICsgMTtcbiAgICAgICRfbG9jYXRpb246IG50aCgkc2hvcnQsICRfbG9jaSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAobG9jYXRpb246ICRfbG9jYXRpb24pKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfYXQsIG51bGwpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9sb2NpLCBudWxsKTtcbiAgICB9XG5cbiAgICAkX2k6IDE7XG4gICAgJF9zcGFuOiAoKTtcblxuICAgIEB3aGlsZSAkX2kgPD0gbGVuZ3RoKCRzaG9ydCkge1xuICAgICAgJF90aGlzOiBudGgoJHNob3J0LCAkX2kpO1xuXG4gICAgICBAaWYgdHlwZS1vZigkX3RoaXMpID09IG51bWJlciB7XG4gICAgICAgICRfc3BhbjogYXBwZW5kKCRfc3BhbiwgJF90aGlzKTtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgIH0gQGVsc2UgaWYgJF90aGlzID09IG9mIHtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgICAgJF9pOiBsZW5ndGgoJHNob3J0KSArIDE7XG4gICAgICB9XG5cbiAgICAgICRfaTogJF9pICsgMTtcbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCRfc3BhbikgPiAwIHtcbiAgICAgICRfc3BhbjogaWYobGVuZ3RoKCRfc3BhbikgPT0gMSwgbnRoKCRfc3BhbiwgMSksICRfc3Bhbik7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJGtleTogJF9zcGFuKSk7XG4gICAgfVxuXG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgcGFyc2UtZ3JpZCgkc2hvcnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWd1dHRlcnMoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX2d1dHRlcnM6IHBhcnNlLXNwYW4oJHNob3J0LCBndXR0ZXItb3ZlcnJpZGUpO1xuICAkX3NwYW46IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJF9ndXR0ZXJzKTtcblxuICBAaWYgJF9zcGFuIGFuZCBub3QobWFwLWdldCgkX2d1dHRlcnMsIGNvbHVtbnMpKSB7XG4gICAgJF9jb250ZXh0OiAoKTtcbiAgICAkX25ldzogKCk7XG5cbiAgICBAZWFjaCAkaXRlbSBpbiAkX3NwYW4ge1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgJF9jb250ZXh0OiBhcHBlbmQoJF9jb250ZXh0LCAkaXRlbSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJF9uZXc6IGFwcGVuZCgkX25ldywgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICRfY29udGV4dDogcGFyc2UtZ3JpZCgkX2NvbnRleHQpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDAsIG51bGwsICRfbmV3KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAxLCBudGgoJF9uZXcsIDEpLCAkX25ldyk7XG4gICAgJF9uZXc6IChndXR0ZXItb3ZlcnJpZGU6IGlmKCRfbmV3ICE9ICRfc3BhbiwgJF9uZXcsICRfc3BhbikpO1xuXG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX25ldyk7XG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX2NvbnRleHQpO1xuICB9XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG4iLCIvLyBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09XG5cblxuLy8gVmFsaWRhdGUgQ29sdW1uIE1hdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1uLW1hdGgoXG4gICRtYXRoLFxuICAkY29sdW1uLXdpZHRoXG4pIHtcbiAgQGlmICRtYXRoID09IHN0YXRpYyBhbmQgbm90KCRjb2x1bW4td2lkdGgpIHtcbiAgICBAZXJyb3IgJ1N0YXRpYyBtYXRoIHJlcXVpcmVzIGEgdmFsaWQgY29sdW1uLXdpZHRoIHNldHRpbmcuJztcbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi13aWR0aDtcbn1cbiIsIi8vIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBTZXQgYSBuZXcgbGF5b3V0IHVzaW5nIGEgc2hvcnRoYW5kXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXlvdXQsICRpbnNwZWN0KTtcbn1cblxuXG4vLyBVc2UgR3JpZFxuLy8gLS0tLS0tLS1cbi8vIFVzZSBhbiBhcmJpdHJhcnkgbGF5b3V0IGZvciBhIHNlY3Rpb24gb2YgY29kZVxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIHdpdGgtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJG9sZCAgICAgIDogJHN1c3k7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qod2l0aC1sYXlvdXQsICRpbnNwZWN0KTtcblxuICBAY29udGVudDtcblxuICAkc3VzeTogJG9sZCAhZ2xvYmFsO1xufVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gYSBwYXJzZWQgbGF5b3V0IG1hcCBiYXNlZCBvbiBzaG9ydGhhbmQgc3ludGF4XG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBsYXlvdXQoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgQHJldHVybiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xufVxuXG5cbi8vIEdldCBMYXlvdXRcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIG5ldyBsYXlvdXQgYmFzZWQgb24gY3VycmVudCBhbmQgZ2l2ZW4gc2V0dGluZ3Ncbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBmdW5jdGlvbiBfZ2V0LWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRsYXlvdXQ6IGxheW91dCgkbGF5b3V0KTtcbiAgQHJldHVybiBpZigkY2xlYW4sICRsYXlvdXQsIF9zdXN5LWRlZXAtbWVyZ2UoJHN1c3ksICRsYXlvdXQpKTtcbn1cbiIsIi8vIFN1c3kgQm94IFNpemluZ1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBib3ggbW9kZWwgZ2xvYmFsbHkgb24gYWxsIGVsZW1lbnRzLlxuLy8gLSBbJGJveF06IGJvcmRlci1ib3ggfCBjb250ZW50LWJveFxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBnbG9iYWwtYm94LXNpemluZyhcbiAgJGJveDogc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpLFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdDogJGJveDtcblxuICBAaWYgJGluaGVyaXQge1xuICAgIEBhdC1yb290IHtcbiAgICAgICBodG1sIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgICAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cbiAgICAgfVxuICB9IEBlbHNlIHtcbiAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2xvYmFsLWJveC1zaXppbmcsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgdXBkYXRlLWJveC1tb2RlbCgkYm94KTtcbn1cblxuLy8gQm9yZGVyIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBIGxlZ2FjeSBzaG9ydGN1dC4uLlxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBib3JkZXItYm94LXNpemluZyhcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCwgJGluaGVyaXQpO1xufVxuXG4vLyBVcGRhdGUgQm94IE1vZGVsXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBVcGRhdGVzIGdsb2JhbCBib3ggbW9kZWwgc2V0dGluZ1xuQG1peGluIHVwZGF0ZS1ib3gtbW9kZWwoXG4gICRib3hcbikge1xuICBAaWYgJGJveCAhPSBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykge1xuICBAaW5jbHVkZSBzdXN5LXNldChnbG9iYWwtYm94LXNpemluZywgJGJveCk7XG4gIH1cbn1cbiIsIi8vIENvbnRleHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBOZXN0ZWQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBncmlkIGZvciBuZXN0ZWQgY29udGV4dC5cbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuQGZ1bmN0aW9uIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkY29udGV4dCAgICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkc3BhbiAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRjb250ZXh0KTtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGNvbnRleHQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcblxuICBAcmV0dXJuIHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xufVxuXG4vLyBOZXN0ZWQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFVzZSBhIHN1YnNldCBncmlkIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbi8vIC0gQGNvbnRlbnQgICA6IDxjb250ZW50PlxuQG1peGluIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRvbGQgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpO1xuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiBuZXN0ZWQoJGNvbnRleHQpKSkgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobmVzdGVkLCAkaW5zcGVjdCk7XG4gIEBjb250ZW50O1xuXG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6ICRvbGQpKSAhZ2xvYmFsO1xufVxuIiwiLy8gQmFja2dyb3VuZCBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IGZhbHNlO1xuXG5cbi8vIFNob3cgR3JpZC9zXG4vLyAtLS0tLS0tLS0tLVxuLy8gU2hvdyBncmlkIG9uIGFueSBlbGVtZW50IHVzaW5nIGVpdGhlciBiYWNrZ3JvdW5kIG9yIG92ZXJsYXkuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIHNob3ctZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3Q6ICRncmlkO1xuICAkX291dHB1dDogZGVidWctZ2V0KG91dHB1dCwgJGdyaWQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzaG93LWdyaWQsICRpbnNwZWN0KTtcbiAgQGlmICRfb3V0cHV0ID09IG92ZXJsYXkgYW5kIHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCkgIT0gaGlkZSB7XG4gICAgQGluY2x1ZGUgb3ZlcmxheS1ncmlkKCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvdy1ncmlkcyhcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRncmlkKTtcbn1cblxuLy8gQmFja2dyb3VuZCBHcmlkXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNob3cgYSBncmlkIGJhY2tncm91bmQgb24gYW55IGVsZW1lbnQuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIGJhY2tncm91bmQtZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGdyaWQ7XG4gICRfb3V0cHV0ICA6IGdldC1iYWNrZ3JvdW5kKCRncmlkKTtcblxuICBAaWYgbGVuZ3RoKCRfb3V0cHV0KSA+IDAge1xuICAgICRfZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpO1xuXG4gICAgJF9pbWFnZTogKCk7XG4gICAgQGVhY2ggJG5hbWUsICRsYXllciBpbiBtYXAtZ2V0KCRfb3V0cHV0LCBpbWFnZSkge1xuICAgICAgJF9kaXJlY3Rpb246IGlmKCRuYW1lID09IGJhc2VsaW5lLCB0byBib3R0b20sIHRvIHRvKCRfZmxvdykpO1xuICAgICAgJF9pbWFnZTogYXBwZW5kKCRfaW1hZ2UsIGxpbmVhci1ncmFkaWVudCgkX2RpcmVjdGlvbiwgJGxheWVyKSwgY29tbWEpO1xuICAgIH1cbiAgICAkX291dHB1dDogbWFwLW1lcmdlKCRfb3V0cHV0LCAoaW1hZ2U6ICRfaW1hZ2UpKTtcblxuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICAgIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChiYWNrZ3JvdW5kLWdyaWQsICRpbnNwZWN0KTtcbiAgfVxufVxuXG5cbi8vIE92ZXJsYXkgR3JpZFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBHZW5lcmF0ZSBhbiBpY29uIHRvIHRyaWdnZXIgZ3JpZC1vdmVybGF5cyBvbiBhbnkgZ2l2ZW4gZWxlbWVudHMuXG4vLyAkZ3JpZHMuLi4gIDogPHNlbGVjdG9yPiBbPHNldHRpbmdzPl0gWywgPHNlbGVjdG9yPl0qXG5AbWl4aW4gb3ZlcmxheS1ncmlkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGlmIG5vdCgkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHMpIHtcbiAgICBAYXQtcm9vdCBoZWFkIHsgQGluY2x1ZGUgb3ZlcmxheS1oZWFkKCRncmlkKTsgfVxuICAgIEBhdC1yb290IGhlYWQ6YmVmb3JlIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpob3ZlciB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlci1ob3ZlcjsgfVxuICAgICRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgaGVhZDpob3ZlciB+ICYsXG4gIGhlYWQ6aG92ZXIgfiBib2R5ICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLW92ZXJsYXktYmFzZTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlciB7XG4gIGNvbnRlbnQ6IFwifHx8XCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udDoge1xuICAgIGZhbWlseTogc2Fucy1zZXJpZjtcbiAgICBzaXplOiAxNnB4O1xuICAgIHdlaWdodDogYm9sZDtcbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXIgSG92ZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXItaG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuNSk7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgSGVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGhlYWQ+IHN0eWxlcyB0byBjcmVhdGUgZ3JpZCBvdmVybGF5IHRvZ2dsZVxuQG1peGluIG92ZXJsYXktaGVhZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRfdG9nZ2xlOiBkZWJ1Zy1nZXQodG9nZ2xlLCAkZ3JpZCk7XG4gICRfaG9yejogbnVsbDtcbiAgJF92ZXJ0OiBudWxsO1xuXG4gIEBlYWNoICRzaWRlIGluICRfdG9nZ2xlIHtcbiAgICAkX2hvcno6IGlmKCRzaWRlID09IGxlZnQgb3IgJHNpZGUgPT0gcmlnaHQsICRzaWRlLCAkX2hvcnopO1xuICAgICRfdmVydDogaWYoJHNpZGUgPT0gdG9wIG9yICRzaWRlID09IGJvdHRvbSwgJHNpZGUsICRfdmVydCk7XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICAjeyRfaG9yen06IDEwcHg7XG4gICN7JF92ZXJ0fTogMTBweDtcbiAgei1pbmRleDogOTk5O1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjI1KTtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gR3JpZCBPdmVybGF5IEJhc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmFzZSBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIG92ZXJsYXlcbkBtaXhpbiBncmlkLW92ZXJsYXktYmFzZSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICB6LWluZGV4OiA5OTg7XG59XG5cblxuLy8gR2V0IFN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLXN5bShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgICAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9ndXR0ZXJzICAgICAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGdyaWQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRncmlkKTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGdyaWQpO1xuXG4gICRfY29sb3IgICAgICAgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfdHJhbnMgICAgICAgICA6IHRyYW5zcGFyZW50O1xuICAkX2xpZ2h0ICAgICAgICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG5cbiAgJF9lbmQgICAgICAgICAgIDogMSArICRfZ3V0dGVycztcbiAgJF9hZnRlciAgICAgICAgIDogcGVyY2VudGFnZSgxLyRfZW5kKTtcbiAgJF9zdG9wcyAgICAgICAgIDogKCk7XG4gICRfc2l6ZSAgICAgICAgICA6IHNwYW4oMSAkZ3JpZCB3aWRlKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodDtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3BsaXQ6ICRfZ3V0dGVycy8yO1xuICAgICRfYmVmb3JlOiBwZXJjZW50YWdlKCRfc3BsaXQvJF9lbmQpO1xuICAgICRfYWZ0ZXI6IHBlcmNlbnRhZ2UoKDEgKyAkX3NwbGl0KS8kX2VuZCk7XG4gICAgJF9zdG9wczogJF90cmFucyAkX2JlZm9yZSwgJF9jb2xvciAkX2JlZm9yZSwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9XG5cbiAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICRfc2l6ZTogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkgKiAkX2VuZDtcbiAgfVxuXG4gICRfb3V0cHV0OiAoXG4gICAgaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSxcbiAgICBzaXplOiAkX3NpemUsXG4gICk7XG5cbiAgQHJldHVybiAkX291dHB1dDtcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEluc2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1pbnNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgU3BsaXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1zcGxpdChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRzdGFydCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuXG4gICAgJF9lbmQ6ICRzdGFydCArIHNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRfZW5kLCBjb21tYSk7XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIE91dHNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLW91dHNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfdHJhbnMgICA6IHRyYW5zcGFyZW50O1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGd1dHRlcjogZ2V0LXNwYW4td2lkdGgoZmlyc3QgJGxvY2F0aW9uICRncmlkKTtcblxuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuXG4gICAgICAkZ3V0dGVyOiAkX2xpZ2h0ICRndXR0ZXIsICRfdHJhbnMgJGd1dHRlciwgJF90cmFucyAkX2VuZDtcbiAgICAgICR0aGlzLXN0b3A6IGpvaW4oJHRoaXMtc3RvcCwgJGd1dHRlciwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtYXN5bShcbiAgJGdyaWRcbikge1xuICAkX3N0b3BzOiAoKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0taW5zaWRlKCRncmlkKTtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLXNwbGl0KCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tb3V0c2lkZSgkZ3JpZCk7XG4gIH1cblxuICBAcmV0dXJuIChpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpKTtcbn1cblxuXG4vLyBHZXQgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9zaG93ICAgIDogc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKTtcbiAgJF9yZXR1cm4gIDogKCk7XG5cbiAgQGlmICRfc2hvdyBhbmQgJF9zaG93ICE9ICdoaWRlJyB7XG4gICAgJF9jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICAkX3N5bTogaXMtc3ltbWV0cmljYWwoJF9jb2x1bW5zKTtcbiAgICAgICRfcmV0dXJuOiBpZigkX3N5bSwgZ2V0LWJhY2tncm91bmQtc3ltKCRncmlkKSwgZ2V0LWJhY2tncm91bmQtYXN5bSgkZ3JpZCkpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGNvbnRlbnQtYm94KSk7XG4gICAgfVxuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1jb2x1bW5zJ1xuICAgICAgYW5kIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoYmFzZS1saW5lLWhlaWdodClcbiAgICAgIGFuZCB0eXBlLW9mKCRiYXNlLWxpbmUtaGVpZ2h0KSA9PSAnbnVtYmVyJ1xuICAgICAgYW5kIG5vdCB1bml0bGVzcygkYmFzZS1saW5lLWhlaWdodCkge1xuICAgICAgJF9jb2xvcjogdmFyaWFibGUtZXhpc3RzKCdncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3InKTtcbiAgICAgICRfY29sb3I6IGlmKCRfY29sb3IsICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICMwMDApO1xuXG4gICAgICAkX2ltYWdlOiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSk7XG4gICAgICAkX3NpemU6IG1hcC1nZXQoJF9yZXR1cm4sIHNpemUpO1xuICAgICAgJF9iYXNlbGluZTogKGJhc2VsaW5lOiAoJF9jb2xvciAxcHgsIHRyYW5zcGFyZW50IDFweCkpO1xuICAgICAgJF9iYXNlbGluZS1zaXplOiAxMDAlICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoXG4gICAgICAgIGltYWdlOiBpZigkX2ltYWdlLCBtYXAtbWVyZ2UoJF9pbWFnZSwgJF9iYXNlbGluZSksICRfYmFzZWxpbmUpLFxuICAgICAgICBzaXplOiBpZigkX3NpemUsICgkX3NpemUsICRfYmFzZWxpbmUtc2l6ZSksICRfYmFzZWxpbmUtc2l6ZSksXG4gICAgICApKTtcblxuICAgICAgQGlmICRfc2hvdyA9PSAnc2hvdycge1xuICAgICAgICAkX2NsaXA6IG1hcC1nZXQoJF9yZXR1cm4sIGNsaXApO1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogam9pbigkX2NsaXAsIGJvcmRlci1ib3gsIGNvbW1hKSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJF9zaG93ID09ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICBAd2FybiAnUGxlYXNlIHByb3ZpZGUgYSAkYmFzZS1saW5lLWhlaWdodCB3aXRoIHRoZSBkZXNpcmVkIGhlaWdodCBhbmQgdW5pdHMnO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSkge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChmbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gR2V0IERlYnVnXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgdmFsdWUgb2YgYSBkZWJ1ZyBzZXR0aW5nXG4vLyAtICRrZXk6IDxzZXR0aW5nPlxuQGZ1bmN0aW9uIGRlYnVnLWdldChcbiAgJGtleSxcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGtleTogam9pbihkZWJ1ZywgJGtleSwgc3BhY2UpO1xuICBAcmV0dXJuIHN1c3ktZ2V0KCRrZXksICRncmlkKTtcbn1cbiIsIi8vIENvbnRhaW5lciBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBjb250YWluZXIgZWxlbWVudFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQG1peGluIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgICA6ICRsYXlvdXQ7XG4gICRsYXlvdXQgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcblxuICAkX3dpZHRoICAgICA6IGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG4gICRfanVzdGlmeSAgIDogcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKHN1c3ktZ2V0KGNvbnRhaW5lci1wb3NpdGlvbiwgJGxheW91dCkpO1xuICAkX3Byb3BlcnR5ICA6IGlmKHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpID09IHN0YXRpYywgd2lkdGgsIG1heC13aWR0aCk7XG5cbiAgJF9ib3ggICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkbGF5b3V0KTtcblxuICBAaWYgJF9ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJF9ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChjb250YWluZXIsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgZmxvYXQtY29udGFpbmVyKCRfd2lkdGgsICRfanVzdGlmeSwgJF9wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0KTtcbn1cblxuLy8gQ29udGFpbmVyIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gIEByZXR1cm4gZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbn1cblxuLy8gR2V0IENvbnRhaW5lciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIHRoZSBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWNvbnRhaW5lci13aWR0aChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0ICAgICAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX3dpZHRoICAgICAgICAgOiBzdXN5LWdldChjb250YWluZXIsICRsYXlvdXQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRsYXlvdXQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkbGF5b3V0KTtcblxuICBAaWYgbm90KCRfd2lkdGgpIG9yICRfd2lkdGggPT0gYXV0byB7XG4gICAgQGlmIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpIHtcbiAgICAgICRfY29sdW1ucyAgIDogc3VzeS1nZXQoY29sdW1ucywgJGxheW91dCk7XG4gICAgICAkX2d1dHRlcnMgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRsYXlvdXQpO1xuICAgICAgJF9zcHJlYWQgICAgOiBpZihpcy1zcGxpdCgkbGF5b3V0KSwgd2lkZSwgbmFycm93KTtcbiAgICAgICRfd2lkdGggICAgIDogc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSAqICRfY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF93aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfd2lkdGg7XG59XG5cbi8vIFBhcnNlIENvbnRhaW5lciBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZSB0aGUgJGNvbnRhaW5lci1wb3NpdGlvbiBpbnRvIG1hcmdpbiB2YWx1ZXMuXG4vLyAtIFskanVzdGlmeV0gICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IDxsZW5ndGg+IFs8bGVuZ3RoPl1cbkBmdW5jdGlvbiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oXG4gICRqdXN0aWZ5OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBjb250YWluZXItcG9zaXRpb24pXG4pIHtcbiAgJF9yZXR1cm46IGlmKCRqdXN0aWZ5ID09IGxlZnQsIDAsIGF1dG8pIGlmKCRqdXN0aWZ5ID09IHJpZ2h0LCAwLCBhdXRvKTtcblxuICBAaWYgbm90KGluZGV4KGxlZnQgcmlnaHQgY2VudGVyLCAkanVzdGlmeSkpIHtcbiAgICAkX3JldHVybjogbnRoKCRqdXN0aWZ5LCAxKTtcbiAgICAkX3JldHVybjogJF9yZXR1cm4gaWYobGVuZ3RoKCRqdXN0aWZ5KSA+IDEsIG50aCgkanVzdGlmeSwgMiksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIElzb2xhdGlvbiBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuXG4vLyBJc29sYXRlIFtNaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGlzb2xhdGlvbiBhcyBhbiBvdmVycmlkZS5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBtaXhpbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpbnNwZWN0OiAkaXNvbGF0ZTtcblxuICAkb3V0cHV0OiAoXG4gICAgcHVzaDogaXNvbGF0ZSgkaXNvbGF0ZSksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGlzb2xhdGUpLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChpc29sYXRlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGlzb2xhdGUtb3V0cHV0KCRvdXRwdXQuLi4pO1xufVxuXG5cbi8vIElzb2xhdGUgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYW4gaXNvbGF0aW9uIG9mZnNldCB3aWR0aC5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBmdW5jdGlvbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpc29sYXRlOiBwYXJzZS1zcGFuKCRpc29sYXRlKTtcbiAgJGlzb2xhdGlvbjogc3VzeS1nZXQoc3BhbiwgJGlzb2xhdGUpO1xuXG4gIEBpZiAkaXNvbGF0aW9uIGFuZCBub3QoZ2V0LWxvY2F0aW9uKCRpc29sYXRlKSkge1xuICAgICRuZXc6IChcbiAgICAgIHNwYW46IG51bGwsXG4gICAgICBsb2NhdGlvbjogJGlzb2xhdGlvbixcbiAgICApO1xuICAgICRpc29sYXRlOiBtYXAtbWVyZ2UoJGlzb2xhdGUsICRuZXcpO1xuICB9XG5cbiAgQHJldHVybiBnZXQtaXNvbGF0aW9uKCRpc29sYXRlKTtcbn1cblxuXG4vLyBHZXQgSXNvbGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGhcbi8vIC0gJGlucHV0OiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1pc29sYXRpb24oXG4gICRpbnB1dFxuKSB7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRpbnB1dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGlucHV0KTtcbiAgJHdpZHRoICAgICAgOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyIGFuZCBub3QodW5pdGxlc3MoJGxvY2F0aW9uKSkge1xuICAgICR3aWR0aDogJGxvY2F0aW9uO1xuICB9IEBlbHNlIGlmICRsb2NhdGlvbiB7XG4gICAgJHB1c2g6ICRsb2NhdGlvbiAtIDE7XG4gICAgQGlmICRwdXNoID4gMCB7XG4gICAgICAkcHVzaDogbWFwLW1lcmdlKCRpbnB1dCwgKFxuICAgICAgICBzcGFuOiAkcHVzaCxcbiAgICAgICAgbG9jYXRpb246IDEsXG4gICAgICAgIHNwcmVhZDogd2lkZSxcbiAgICAgICkpO1xuICAgICAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkcHVzaCk7XG4gICAgfVxuICB9XG5cbiAgQGlmIHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGlucHV0KSA9PSBzcGxpdFxuICAgICAgYW5kIHN1c3ktZ2V0KGd1dHRlcnMsICRpbnB1dCkgPiAwIHtcbiAgICAkd2lkdGg6IGlmKCR3aWR0aCA9PSBudWxsLCBndXR0ZXJzKCRpbnB1dCksICR3aWR0aCArIGd1dHRlcnMoJGlucHV0KSk7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aCBvciAwO1xufVxuIiwiLy8gR2FsbGVyeSBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIEdhbGxlcnlcbi8vIC0tLS0tLS1cbi8vIENyZWF0ZSBhbiBpc29sYXRlZCBnYWxsZXJ5XG4vLyAtICRzcGFuICAgICAgICA6IDxzcGFuPlxuLy8gLSBbJHNlbGVjdG9yXSAgOiBjaGlsZCB8IG9mLXR5cGVcbkBtaXhpbiBnYWxsZXJ5KFxuICAkc3BhbixcbiAgJHNlbGVjdG9yOiBjaGlsZFxuKSB7XG4gICRpbnNwZWN0ICAgIDogJHNwYW47XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRzcGFuICAgICAgIDogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246IDEpKTtcblxuICAkbiAgICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkY29udGV4dCAgICAgIDogc3VzeS1jb3VudCgkY29sdW1ucyk7XG4gICRmbG93ICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG5cbiAgJGluc2lkZSAgICAgICA6IGlzLWluc2lkZSgkc3Bhbik7XG4gICRmcm9tICAgICAgICAgOiBmcm9tKCRmbG93KTtcbiAgJGxpbmUgICAgICAgICA6IGZsb29yKCRjb250ZXh0IC8gJG4pO1xuICAkc3ltbWV0cmljYWwgIDogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aCAgICAgICAgICAgICA6IG51bGwsXG4gICAgZmxvYXQgICAgICAgICAgICAgOiBmcm9tLFxuICAgIG1hcmdpbi1iZWZvcmUgICAgIDogbnVsbCxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IG51bGwsXG4gICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICApO1xuXG4gIEBpZiAkaW5zaWRlIHtcbiAgICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAoXG4gICAgICBwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKSxcbiAgICAgIHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKSxcbiAgICApKTtcbiAgfVxuXG4gIEBpZiAkc3ltbWV0cmljYWwge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAod2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKSkpO1xuICB9XG5cbiAgJGJveCAgICAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGdsb2JhbC1ib3ggICA6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSA9PSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2FsbGVyeSwgJGluc3BlY3QpO1xuXG4gIC8vIENvbGxlY3RpdmUgT3V0cHV0XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggb3IgKCRpbnNpZGUgYW5kIG5vdCgkYm94KSBhbmQgbm90KCRnbG9iYWwtYm94KSkge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogYm9yZGVyLWJveCkpO1xuICB9IEBlbHNlIGlmICRib3ggPT0gY29udGVudC1ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogY29udGVudC1ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIC8vIEluZGl2aWR1YWwgTG9vcFxuICBAZm9yICRpdGVtIGZyb20gMSB0aHJvdWdoICRsaW5lIHtcbiAgICAkbnRoOiAnI3skbGluZX1uICsgI3skaXRlbX0nO1xuICAgICY6bnRoLSN7JHNlbGVjdG9yfSgjeyRudGh9KSB7XG4gICAgICAvLyBJbmRpdmlkdWFsIFByZXBcbiAgICAgICRvdXRwdXQ6IChcbiAgICAgICAgd2lkdGggICAgICAgICAgICAgOiBpZigkc3ltbWV0cmljYWwsIG51bGwsIGdldC1zcGFuLXdpZHRoKCRzcGFuKSksXG4gICAgICAgIGZsb2F0ICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgbWFyZ2luLWJlZm9yZSAgICAgOiBnZXQtaXNvbGF0aW9uKCRzcGFuKSxcbiAgICAgICAgbWFyZ2luLWFmdGVyICAgICAgOiAtMTAwJSxcbiAgICAgICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgICAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICAgICApO1xuXG4gICAgICAvLyBJbmRpdmlkdWFsIE91dHB1dFxuICAgICAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgICAgIEBpZiBnZXQtZWRnZSgkc3BhbikgPT0gZmlyc3Qge1xuICAgICAgICBAaW5jbHVkZSBicmVhaztcbiAgICAgICAgQGluY2x1ZGUgZmlyc3QoJHNwYW4pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgTG9jYXRpb24gSW5jcmVtZW50XG4gICAgICAkbG9jYXRpb246IGdldC1sb2NhdGlvbigkc3BhbikgKyAkbjtcbiAgICAgICRsb2NhdGlvbjogaWYoJGxvY2F0aW9uID4gJGNvbnRleHQsIDEsICRsb2NhdGlvbik7XG4gICAgICAkc3BhbjogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246ICRsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZ3V0dGVyIDogZ3V0dGVyKCRzcGFuKTtcbiAgJHNwYW4gICA6IHNwYW4oJHNwYW4pO1xuICAkd2lkdGggIDogaWYoJHNwbGl0IGFuZCAkZ3V0dGVyLCAkc3BhbiArICRndXR0ZXIsICRzcGFuKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNxdWlzaCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmUoJHByZSk7XG4gIEBpbmNsdWRlIHBvc3QoJHBvc3QpO1xufVxuIiwiLy8gUGFkZGluZyBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmVmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFN1ZmZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzdWZmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHN1ZmZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUGFkXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBwYWQoXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocGFkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZWZpeCgkcHJlKTtcbiAgQGluY2x1ZGUgc3VmZml4KCRwb3N0KTtcblxufVxuIiwiLy8gQmxlZWQgU3ludGF4XG4vLyA9PT09PT09PT09PT1cblxuLy8gQmxlZWRcbi8vIC0tLS0tXG4vLyBBZGQgbmVnYXRpdmUgbWFyZ2lucywgYW5kIGVxdWFsIHBvc2l0aXZlIHBhZGRpbmcgdG8gY3JlYXRlIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQoXG4gICRibGVlZDogMCBndXR0ZXIoKVxuKSB7XG4gICRpbnNwZWN0ICA6ICRibGVlZDtcbiAgJG91dHB1dCAgIDogZ2V0LWJsZWVkKCRibGVlZCk7XG5cbiAgQGlmIHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSBjb250ZW50LWJveCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKChib3gtc2l6aW5nOiBjb250ZW50LWJveCksICRvdXRwdXQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJsZWVkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuXG4vLyBCbGVlZC14XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgaG9yaXpvbnRhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXgoXG4gICRibGVlZDogZ3V0dGVyKClcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAyKSAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXggb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEJsZWVkLXlcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciB2ZXJ0aWNhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXkoXG4gICRibGVlZDogaWYoZnVuY3Rpb24tZXhpc3RzKHJoeXRobSksIHJoeXRobSgxKSwgMWVtKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwIG50aCgkdHJibCwgMikgMCkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteSBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gR2V0IEJsZWVkXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBibGVlZCBvdXRwdXQgdmFsdWVzXG4vLyAtICRibGVlZDogPHNwYW4+XG5AZnVuY3Rpb24gZ2V0LWJsZWVkKFxuICAkYmxlZWRcbikge1xuICAkYmxlZWQgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJGJsZWVkKSk7XG4gICR0cmJsICAgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG4gICRzaG9ydCAgICA6IG51bGw7XG4gICRvdXRwdXQgICA6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR0cmJsKSB7XG4gICAgJHRoaXM6IG50aCgkdHJibCwgJGkpO1xuICAgICRuZXc6ICgpO1xuICAgICRtYXJnaW46IG51bGw7XG4gICAgJHBhZGRpbmc6IG51bGw7XG4gICAgJHBhZGRpbmcteDogbnVsbDtcblxuICAgIEBpZiAkdGhpcyA+IDAge1xuICAgICAgJHRoaXM6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAkdGhpcykpO1xuICAgICAgJG1hcmdpbjogc3BhbigkdGhpcyk7XG4gICAgICAkcGFkZGluZzogJG1hcmdpbjtcbiAgICAgICRwYWRkaW5nLXg6ICRwYWRkaW5nO1xuICAgIH1cblxuICAgIEBpZiAkbWFyZ2luIGFuZCAkbWFyZ2luID4gMCB7XG4gICAgICAkbWFyZ2luOiAtICRtYXJnaW47XG5cbiAgICAgIEBpZiBpcy1pbnNpZGUoJHRoaXMpIHtcbiAgICAgICAgJGd1dHRlcjogZ3V0dGVyKCR0aGlzKTtcbiAgICAgICAgJGpvaW46IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHBhZGRpbmcsICRndXR0ZXIpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICRwYWRkaW5nLXg6IGlmKCRqb2luIGFuZCAkcGFkZGluZyA+IDAsICRwYWRkaW5nICsgJGd1dHRlciwgJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAyIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDMge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gNCB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAkbmV3KTtcbiAgfVxuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG91dHB1dCB7XG4gICAgJG91dHB1dDogaWYoJHZhbHVlID09IDAsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJHByb3A6IG51bGwpKSwgJG91dHB1dCk7XG4gIH1cblxuICBAcmV0dXJuIGJsZWVkLXNob3J0aGFuZCgkb3V0cHV0KTtcbn1cblxuLy8gQmxlZWQgU2hvcnRoYW5kXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENvbnZlcnQgYmxlZWQgb3V0cHV0IGludG8gc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuXG4vLyAtICRibGVlZDogPG91dHB1dCBtYXA+XG5AZnVuY3Rpb24gYmxlZWQtc2hvcnRoYW5kKFxuICAkYmxlZWRcbikge1xuICAkbWFyZ2luOiAoKTtcbiAgJHBhZGRpbmc6ICgpO1xuICAkcmV0dXJuOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJsZWVkIHtcbiAgICBAaWYgc3RyLWluZGV4KCRrZXksIG1hcmdpbikge1xuICAgICAgJG1hcmdpbjogbWFwLW1lcmdlKCRtYXJnaW4sICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIGlmIHN0ci1pbmRleCgka2V5LCBwYWRkaW5nKSA+IDAge1xuICAgICAgJHBhZGRpbmc6IG1hcC1tZXJnZSgkcGFkZGluZywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICRwcm9wczogKFxuICAgIG1hcmdpbjogJG1hcmdpbixcbiAgICBwYWRkaW5nOiAkcGFkZGluZyxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJG1hcCBpbiAkcHJvcHMge1xuICAgICRmb3VyOiBpZihsZW5ndGgobWFwLWtleXMoJG1hcCkpID09IDQsIHRydWUsIGZhbHNlKTtcbiAgICAkbnVsbDogaWYoaW5kZXgobWFwLXZhbHVlcygkbWFwKSwgbnVsbCksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkZm91ciBhbmQgbm90KCRudWxsKSB7XG4gICAgICAkdG9wOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS10b3AnKTtcbiAgICAgICRyaWdodDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tcmlnaHQnKTtcbiAgICAgICRib3R0b206IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWJvdHRvbScpO1xuICAgICAgJGxlZnQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWxlZnQnKTtcblxuICAgICAgJHRiOiBpZigkdG9wID09ICRib3R0b20sICR0b3AsIG51bGwpO1xuICAgICAgJHJsOiBpZigkcmlnaHQgPT0gJGxlZnQsICRyaWdodCwgbnVsbCk7XG4gICAgICAkYWxsOiBpZigkdGIgPT0gJHJsLCAkdGIsIG51bGwpO1xuXG4gICAgICAkbmV3OiBpZigkYWxsLCAkYWxsLCBudWxsKTtcblxuICAgICAgQGlmIG5vdCgkbmV3KSB7XG4gICAgICAgIEBpZiAkdGIgYW5kICRybCB7XG4gICAgICAgICAgJG5ldzogJHRiICRybDtcbiAgICAgICAgfSBAZWxzZSBpZiAkcmwge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJsICRib3R0b207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJpZ2h0ICRib3R0b20gJGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmFtZTogJG5ldykpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICRtYXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cbiIsIi8qXG4qIFNjdXQsIGEgY29sbGVjdGlvbiBvZiBTYXNzIHV0aWxpdGllc1xuKiB0byBlYXNlIGFuZCBpbXByb3ZlIG91ciBpbXBsZW1lbnRhdGlvbnMgb2YgY29tbW9uIHN0eWxlLWNvZGUgcGF0dGVybnMuXG4qIHYxLjQuMFxuKiBEb2NzIGF0IGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0XG4qL1xuXG5AbWl4aW4gc2N1dC1jbGVhcmZpeCB7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNsZWFyZml4IHtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtdW5zdHlsZWQoXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCk7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1mbG9hdGVkIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJGRpcjogbGVmdCxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xuXG4gICYgPiBsaSB7XG4gICAgZmxvYXQ6ICRkaXI7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tI3skZGlyfTogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtZmxvYXRlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkO1xufVxuXG5AZnVuY3Rpb24gc2N1dC1hdXRvT3JWYWx1ZSAoJHZhbCkge1xuICBAaWYgJHZhbCA9PSBhIG9yICR2YWwgPT0gYXV0byB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtY29vcmRzIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICAkdG9wOiBudGgoJGNvb3JkaW5hdGVzLCAxKTtcbiAgJHJpZ2h0OiBudGgoJGNvb3JkaW5hdGVzLCAyKTtcbiAgJGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyk7XG4gICRsZWZ0OiBudGgoJGNvb3JkaW5hdGVzLCA0KTtcblxuICBAaWYgJHRvcCAhPSBuIHtcbiAgICB0b3A6IHNjdXQtYXV0b09yVmFsdWUoJHRvcCk7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBuIHtcbiAgICByaWdodDogc2N1dC1hdXRvT3JWYWx1ZSgkcmlnaHQpO1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG4ge1xuICAgIGJvdHRvbTogc2N1dC1hdXRvT3JWYWx1ZSgkYm90dG9tKTtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbiB7XG4gICAgbGVmdDogc2N1dC1hdXRvT3JWYWx1ZSgkbGVmdCk7XG4gIH1cblxufVxuQGZ1bmN0aW9uIHNjdXQtc3RyaXAtdW5pdCAoXG4gICRudW1cbikge1xuXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1lbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtZW0gKFxuICAkcGl4ZWxzLFxuICAkYmFzZTogJHNjdXQtZW0tYmFzZVxuKSB7XG5cbiAgLy8gJGJhc2UgY291bGQgYmUgaW4gZW0gb3IgcHggKG5vIHVuaXQgPSBweCkuXG4gIC8vIEFkanVzdCBhY2NvcmRpbmdseSB0byBjcmVhdGUgYSAkZGl2aXNvciB0aGF0XG4gIC8vIHNlcnZlcyBhcyBjb250ZXh0IGZvciAkcGl4ZWxzLlxuICAkbXVsdGlwbGllcjogaWYodW5pdCgkYmFzZSkgPT0gZW0sIDE2LCAxKTtcbiAgJGRpdmlzb3I6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZSkgKiAkbXVsdGlwbGllcjtcblxuICAkZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1lbXM6IChzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkZGl2aXNvcikgKiAxZW07XG4gICAgJGVtLXZhbHM6IGFwcGVuZCgkZW0tdmFscywgJHZhbC1pbi1lbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZW0tdmFscztcbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1yZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LXJlbSAoXG4gICRwaXhlbHNcbikge1xuXG4gICRyZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1yZW1zOiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkc2N1dC1yZW0tYmFzZSAqIDFyZW07XG4gICAgJHJlbS12YWxzOiBhcHBlbmQoJHJlbS12YWxzLCAkdmFsLWluLXJlbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcmVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkcmVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRyZW0tdmFscztcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1ib3JkZXIgKFxuICAkc3R5bGUsXG4gICRzaWRlczogbiB5XG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaWRlcykgPT0gMiB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaWRlcykgPT0gNCB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDMpICE9IG4ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgNCkgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlNjdXQtYm9yZGVyIHJlcXVpcmVzIGEgJHNpZGVzIGFyZ3VtZW50IG9mIDIgb3IgNCB2YWx1ZXMuXCJcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jaXJjbGUgKFxuICAkc2l6ZSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBAaWYgJGNvbG9yID09IGluaGVyaXQge1xuICAgIC8vIElmIHVzZXIgd2FudHMgdG8gaW5oZXJpdCB0aGUgY29sb3IsXG4gICAgLy8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBib3JkZXJcbiAgICAvLyBjb2xvciBkZWZhdWx0cyB0byB0aGUgdGV4dCBjb2xvciBvZiB0aGUgZWxlbWVudC5cbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGhlaWdodDogMDtcbiAgICB3aWR0aDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHVzZSBiYWNrZ3JvdW5kLWNvbG9yLlxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jb2xvci1zd2FwIChcbiAgJG9mZixcbiAgJG9uLFxuICAkZHVyYXRpb246IDAsXG4gICRiZzogZmFsc2Vcbikge1xuXG4gICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IG51bGw7XG4gICRvZmYtaXMtbGlzdDogdHlwZS1vZigkb2ZmKSA9PSBsaXN0O1xuICAkb24taXMtbGlzdDogdHlwZS1vZigkb24pID09IGxpc3Q7XG5cbiAgLy8gSWYgJG9mZiBJUyBhIGxpc3QsXG4gIC8vIGFzc2lnbiBjb2xvciBhbmQgYmFja2dyb3VuZC1jb2xvci5cbiAgQGlmICRvZmYtaXMtbGlzdCB7XG4gICAgY29sb3I6IG50aCgkb2ZmLCAxKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9mZiwgMik7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvciwgY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBUUlVFLFxuICAvLyBhc3NpZ24gYmFja2dyb3VuZC1jb2xvci5cbiAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9mZi1pcy1saXN0KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgRkFMU0UsXG4gIC8vIGFzc2lnbiBjb2xvci5cbiAgQGVsc2Uge1xuICAgIGNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGNvbG9yO1xuICB9XG5cbiAgLy8gT25seSBzZXQtdXAgdHJhbnNpdGlvbiBpZiAkZHVyYXRpb24gIT0gMC5cbiAgQGlmICRkdXJhdGlvbiAhPSAwIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzO1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuXG4gICAgLy8gJG9uIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgJG9mZiwgYWJvdmUuXG4gICAgQGlmICRvbi1pcy1saXN0IHtcbiAgICAgIGNvbG9yOiBudGgoJG9uLCAxKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb24sIDIpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvbi1pcy1saXN0KSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb247XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgY29sb3I6ICRvbjtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtaGQtYnAgKFxuICAkcmF0aW86IDEuM1xuKSB7XG5cbiAgQG1lZGlhICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAoJHJhdGlvIC8gMSkpLFxuICAgICAgICAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgICAgICAgIChtaW4tcmVzb2x1dGlvbjogKHJvdW5kKDk2ICogJHJhdGlvKSAqIDFkcGkpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oaWRlLXZpc3VhbGx5IHtcblxuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcblxufVxuXG4lc2N1dC1oaWRlLXZpc3VhbGx5IHtcbiAgQGluY2x1ZGUgc2N1dC1oaWRlLXZpc3VhbGx5O1xufVxuQG1peGluIHNjdXQtaW1hZ2UtcmVwbGFjZSB7XG5cbiAgdGV4dC1pbmRlbnQ6IDEwMiU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG5cbn1cblxuJXNjdXQtaW1hZ2UtcmVwbGFjZSB7XG4gIEBpbmNsdWRlIHNjdXQtaW1hZ2UtcmVwbGFjZTtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LXJlbSBhbmQgc2N1dC1zdHJpcC11bml0XG5cbkBtaXhpbiBzY3V0LXJlbS1mYWxsYmFjayAoXG4gICRwaXhlbHMsXG4gICRwcm9wZXJ0eTogZm9udC1zaXplXG4pIHtcblxuICAkcHgtdmFsczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXB4OiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgKiAxcHg7XG4gICAgJHB4LXZhbHM6IGFwcGVuZCgkcHgtdmFscywgJHZhbC1pbi1weCk7XG4gIH1cbiAgJHJlbS12YWxzOiBzY3V0LXJlbSgkcGl4ZWxzKTtcblxuICAjeyRwcm9wZXJ0eX06ICRweC12YWxzO1xuICAjeyRwcm9wZXJ0eX06ICRyZW0tdmFscztcblxufVxuQG1peGluIHNjdXQtcmVzZXQtYm9yZGVyLWJveCB7XG4gIC8vIE1ha2UgZXZlcnl0aGluZyBhIGJvcmRlci1ib3gsIGJlY2F1c2Ugd2h5IG5vdD9cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1hbnRpYWxpYXMge1xuICAvLyBBbnRpYWxpYXMhXG4gIGJvZHkge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXNlbWFudGljaXplIHtcbiAgLy8gTWFrZSBoZWFkZXJzIGFuZCA8Yj4gc2VtYW50aWMsIG5vdCBwcmVzZW50YXRpb25hbC5cbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wb2ludGVyIHtcbiAgLy8gQ2xpY2thYmxlIGZvcm0gZWxlbWVudHMgc2hvdWxkIGhhdmUgYSBwb2ludGVyLlxuICBsYWJlbCxcbiAgc2VsZWN0LFxuICBvcHRpb24sXG4gIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZvcm0ge1xuICBmaWVsZHNldCB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWJ1dHRvbiB7XG4gIC8vIFJlc2V0IGRlZmF1bHQgYnV0dG9uIHN0eWxlcywgd2hpY2ggYXJlIG5ldmVyIHVzZWQuXG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdLFxuICBbdHlwZT1cInJlc2V0XCJdIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogYXV0bztcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBhcmFncmFwaCB7XG4gIC8vIFNvbWUgcGFyYWdyYXBoIG1hcmdpbnMganVzdCBnZXQgaW4gdGhlIHdheS5cbiAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LW1lZGlhIHtcbiAgLy8gWW91IHdhbnQgdGhlc2UgZWxlbWVudHMgZmx1aWQsIHByb2JhYmx5LlxuICBpbWcsXG4gIHZpZGVvIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZpZ3VyZSB7XG4gIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbnMuXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8vIENhbGwgdGhlbSBhbGwsIG1pbnVzIGV4Y2x1c2lvbnMhXG5AbWl4aW4gc2N1dC1yZXNldCAoJGV4Y2x1ZGU6IGZhbHNlKSB7XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJvcmRlci1ib3gpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1ib3JkZXItYm94O1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGFudGlhbGlhcykpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWFudGlhbGlhcztcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBzZW1hbnRpY2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXNlbWFudGljaXplO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBvaW50ZXIpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wb2ludGVyO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZvcm0pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1mb3JtO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJ1dHRvbikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJ1dHRvbjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwYXJhZ3JhcGgpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wYXJhZ3JhcGg7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgbWVkaWEpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1tZWRpYTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmaWd1cmUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1maWd1cmU7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtc2VsZWN0ZWQgKFxuICAkYWN0aXZlOiBmYWxzZVxuKSB7XG5cbiAgQGlmICRhY3RpdmUge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtdHJpYW5nbGUgKFxuICAkZGlyZWN0aW9uOiByaWdodCxcbiAgJHNpemU6IDAuNzVlbSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIC8vIEZvciBpbXByb3ZlZCBhcHBlYXJhbmNlIGluIHNvbWUgV2Via2l0IGJyb3dzZXJzXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcblxuICAvLyBTZXQgdXAgc29tZSB2YXJpYWJsZXNcbiAgJHdpZHRoOiBudWxsO1xuICAkaGVpZ2h0OiBudWxsO1xuICAkYm9yZGVyLXdpZHRoczogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gbGlzdCB7XG4gICAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR3aWR0aDogJHNpemU7XG4gICAgJGhlaWdodDogJHNpemU7XG4gIH1cblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICAvLyBGb3IgdXAgYW5kIGRvd24sIHdpZHRoIGdldHMgdHdvIGJvcmRlcnMgYnV0IGhlaWdodCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgc2Vjb25kIGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICRoZWlnaHQgKCR3aWR0aCAvIDIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgLy8gRm9yIHJpZ2h0IGFuZCBsZWZ0LCBoZWlnaHQgZ2V0cyB0d28gYm9yZGVycyBidXQgd2lkdGggb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIGZpcnN0IGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgJHdpZHRoO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBGb3IgcmlnaHQgdHJpYW5nbGVzICh0aGUgcmVzdCksIGJvdGggc2lkZXMgZ2V0IHR3byBib3JkZXJzLFxuICAgIC8vIHNvIGRpdmlkZSBib3RoIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAoJHdpZHRoIC8gMik7XG4gIH1cblxuICBib3JkZXItd2lkdGg6ICRib3JkZXItd2lkdGhzO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG5cbiAgLy8gU1RBTkRBUkQgVFJJQU5HTEVTXG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cblxuICAvLyBDT1JORVIgVFJJQU5HTEVTXG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdG9wLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdHJpYW5nbGUge1xuICBAaW5jbHVkZSBzY3V0LXRyaWFuZ2xlO1xufVxuQG1peGluIHNjdXQtY2VudGVyLWFic29sdXRlbHkgKFxuICAkZGltZW5zaW9uc1xuKSB7XG5cbiAgJHdpZHRoOiBudGgoJGRpbWVuc2lvbnMsIDEpO1xuICAkaGVpZ2h0OiBudGgoJGRpbWVuc2lvbnMsIDIpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJHdpZHRoICE9IG4ge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAoLSR3aWR0aCAvIDIpO1xuICB9XG5cbiAgQGlmICRoZWlnaHQgIT0gbiB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6ICgtJGhlaWdodCAvIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1ibG9jayAoXG4gICRtYXgtd2lkdGg6IGZhbHNlXG4pIHtcblxuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBAaWYgJG1heC13aWR0aCB7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICB9XG5cbn1cblxuJXNjdXQtY2VudGVyLWJsb2NrIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItYmxvY2s7XG59XG5cbkBtaXhpbiBzY3V0LWNlbnRlci10cmFuc2Zvcm0gKFxuICAkYXhpczogZmFsc2UgLy8gb3IgeCBvciB5XG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICRheGlzICE9IHgge1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgfVxuXG4gIEBpZiAkYXhpcyAhPSB5IHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgJHRyYW5zbGF0ZS12YWw6IG51bGw7XG5cbiAgQGlmIG5vdCgkYXhpcykge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geCB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIC1tcy10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICB0cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXgge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeCk7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuQG1peGluIHNjdXQtZmlsbCAoXG4gICR3aWR0aC1oZWlnaHQ6IGZhbHNlXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgQGlmICR3aWR0aC1oZWlnaHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtZmlsbCB7XG4gIEBpbmNsdWRlIHNjdXQtZmlsbDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtY3VzdG9tIChcbiAgJGNvbnRlbnQ6IFwiXFwyMDIyXCIsXG4gICRtYXJrZXItd2lkdGg6IDAuNzVlbSxcbiAgJHBhZDogMCxcbiAgJG5vLW1hcmdpbjogZmFsc2Vcbikge1xuXG4gICRjb250ZW50LXZhbDogbnVsbDtcbiAgJGNvdW50ZXI6IGluZGV4KCRjb250ZW50LCBjb3VudCk7XG4gIEBpZiAkY291bnRlciB7XG4gICAgQGlmIGxlbmd0aCgkY29udGVudCkgPT0gMyB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyLCBudGgoJGNvbnRlbnQsIDMpKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAyIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICRjb250ZW50LXZhbDogJGNvbnRlbnQ7XG4gIH1cblxuICBwYWRkaW5nLWxlZnQ6ICRtYXJrZXItd2lkdGggKyAkcGFkO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gICYgPiBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiAkY291bnRlciB7XG4gICAgICBjb3VudGVyLWluY3JlbWVudDogc2N1dGxpc3Rjb3VudGVyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkY29udGVudC12YWw7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IC0kbWFya2VyLXdpZHRoO1xuICAgICAgd2lkdGg6ICRtYXJrZXItd2lkdGg7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC1mbG9hdGVkYCwgd2hpY2ggZGVwZW5kcyBpbiB0dXJuIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1kaXZpZGVkIChcbiAgJGRpdmlkZXI6IFwifFwiLFxuICAkc3BhY2U6IDAuNWVtLFxuICAkZGlyOiBsZWZ0LFxuICAkaGVpZ2h0OiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQoJGRpcjogJGRpciwgJG5vLW1hcmdpbjogJG5vLW1hcmdpbik7XG5cbiAgJHBzZXVkbzogaWYoJGRpciA9PSBsZWZ0LCAnYmVmb3JlJywgJ2FmdGVyJyk7XG5cbiAgLy8gSWYgYW4gZXhwbGljaXQgaGVpZ2h0IGlzIHBhc3NlZCxcbiAgLy8gdGhpbmdzIGFyZSBkaWZmZXJlbnQ6IEFsbCA8bGk+c1xuICAvLyBuZWVkIHRoZSBwc2V1ZG8tZWxlbWVudCAodG8gZm9yY2UgaGVpZ2h0KSxcbiAgLy8gYnV0IHRoZSBmaXJzdCdzIG11c3QgYmUgaGlkZGVuLlxuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICAmID4gbGkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICAmID4gbGk6I3skcHNldWRvfSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgJiA+IGxpOmZpcnN0LWNoaWxkOiN7JHBzZXVkb30ge1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gICYgPiBsaSArIGxpOiN7JHBzZXVkb30ge1xuICAgIEBpZiBub3QoJGhlaWdodCkge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjZTtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtYmFyIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQ7XG59XG5cbiVzY3V0LWxpc3QtYnJlYWRjcnVtYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKFwiL1wiKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWlubGluZSAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtaW5saW5lO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtcHVuY3R1YXRlZCAoXG4gICRkaXZpZGVyOiBcIiwgXCIsXG4gICRkaXNwbGF5OiBpbmxpbmUsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6ICRkaXNwbGF5O1xuICAgICY6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWNvbW1hIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXB1bmN0dWF0ZWQ7XG59XG5AbWl4aW4gc2N1dC1tYXJnaW4gKFxuICAkbWFyZ2luXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDEgYW5kICRtYXJnaW4gIT0gbiB7XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMiB7XG4gICAgJG1hcmdpbi15OiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgQGlmICRtYXJnaW4teSAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDMge1xuICAgICRtYXJnaW4teS10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLXktYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgQGlmICRtYXJnaW4teS10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi15LWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSA0IHtcbiAgICAkbWFyZ2luLXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4tcmlnaHQ6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgICRtYXJnaW4tbGVmdDogbnRoKCRtYXJnaW4sIDQpO1xuICAgIEBpZiAkbWFyZ2luLXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1yaWdodCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi1yaWdodDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWxlZnQgIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi1sZWZ0O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1wYWRkaW5nIChcbiAgJHBhZGRpbmdcbikge1xuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDEgYW5kICRwYWRkaW5nICE9IG4ge1xuICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDIge1xuICAgICRwYWRkaW5nLXk6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICBAaWYgJHBhZGRpbmcteSAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15O1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXk7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAzIHtcbiAgICAkcGFkZGluZy15LXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLXktYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgIEBpZiAkcGFkZGluZy15LXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15LXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteS1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gNCB7XG4gICAgJHBhZGRpbmctdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXJpZ2h0OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICAkcGFkZGluZy1sZWZ0OiBudGgoJHBhZGRpbmcsIDQpO1xuICAgIEBpZiAkcGFkZGluZy10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmctdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctcmlnaHQgIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy1yaWdodDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1sZWZ0ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy1sZWZ0O1xuICAgIH1cbiAgfVxufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1hYnNvbHV0ZSAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWFic29sdXRlIHtcbiAgQGluY2x1ZGUgc2N1dC1hYnNvbHV0ZTtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtZml4ZWQgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1maXhlZCB7XG4gIEBpbmNsdWRlIHNjdXQtZml4ZWQ7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LXJlbGF0aXZlIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cbkBtaXhpbiBzY3V0LXJhdGlvLWJveCAoXG4gICRyYXRpbzogMS8xXG4pIHtcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVGhlIGNvbnRhaW5lcidzIGhlaWdodCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZVxuICAvLyBjb250YWluZXIncyB3aWR0aCwgaXMgc2V0IGJ5IGFzc2lnbmluZ1xuICAvLyBwYWRkaW5nLXRvcCB0byBhIHBzZXVkby1lbGVtZW50LlxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgcGFkZGluZy10b3A6ICgxIC8gJHJhdGlvKSAqIDEwMCU7XG4gIH1cblxufVxuXG4lc2N1dC1yYXRpby1ib3gge1xuICBAaW5jbHVkZSBzY3V0LXJhdGlvLWJveDtcbn1cbkBtaXhpbiBzY3V0LXNpemUoXG4gICRzaXplXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAxIHtcbiAgICB3aWR0aDogICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICB3aWR0aDogIG50aCgkc2l6ZSwgMSk7XG4gICAgaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAtJGhlaWdodDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAjeyR3cmFwcGVyfTphZnRlcixcbiAgI3skZm9vdGVyfSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG5cbn1cblxuLy8gZGVwcmVjYXRlZFxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3RlciAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbil7XG4gIEBpbmNsdWRlIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCgkaGVpZ2h0LCAkd3JhcHBlciwgJGZvb3Rlcik7XG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZsdWlkIChcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICN7JGZvb3Rlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcbiAgICBoZWlnaHQ6IDFweDtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLWliIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICAvLyBUaGUgaW5uZXIgZWxlbWVudCBpcyB2ZXJ0aWNhbGx5IGNlbnRlcmVkXG4gIC8vIGJ5IG1pZGRsZS1hbGlnbmluZyBpdCB3aXRoIGFuIGlubGluZSBwc2V1ZG8tZWxlbWVudFxuICAvLyB3aG9zZSBoZWlnaHQgaXMgMTAwJS5cblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgLy8gQSBzbWFsbCBuZWdhdGl2ZSByaWdodCBtYXJnaW4gaXMgc2V0XG4gICAgLy8gdG8gYWNjb3VudCBmb3IgdGhlIGRlZmF1bHRcbiAgICAvLyB3b3JkLXNwYWNpbmcgb2YgaW5saW5lLWJsb2NrLlxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVlbTtcbiAgfVxuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC12Y2VudGVyLWliIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLWliO1xufVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLWxoIChcbiAgJGhlaWdodFxuKSB7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJGhlaWdodDtcblxufVxuQG1peGluIHNjdXQtdmNlbnRlci10ZCAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgZGlzcGxheTogdGFibGU7XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG5cbiVzY3V0LXZjZW50ZXItdGQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdGQ7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1jZW50ZXItdHJhbnNmb3JtXG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItdHQgKCkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbiVzY3V0LXZjZW50ZXItdHQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdHQ7XG59XG4vLyBzcGFjZVxuJHNjdXQtc3BhY2U6IFwiXFwwMDIwXCI7XG4vLyBub24tYnJlYWtpbmcgc3BhY2VcbiRzY3V0LW5ic3A6IFwiXFwwMGEwXCI7XG5cbi8vIHF1b3RhdGlvbiBtYXJrXG4kc2N1dC1xdW90OiBcIlxcMDAyMlwiO1xuLy8gbGVmdCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LWxzcXVvOiBcIlxcMjAxOFwiO1xuLy8gcmlnaHQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1yc3F1bzogXCJcXDIwMTlcIjtcbi8vIGxlZnQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1sZHF1bzogXCJcXDIwMUNcIjtcbi8vIHJpZ2h0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtcmRxdW86IFwiXFwyMDFEXCI7XG4vLyBsZWZ0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbHNhcXVvOiBcIlxcMjAzOVwiO1xuLy8gcmlnaHQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yc2FxdW86IFwiXFwyMDNBXCI7XG4vLyBsZWZ0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbGFxdW86IFwiXFwwMGFiXCI7XG4vLyByaWdodCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJhcXVvOiBcIlxcMDBiYlwiO1xuXG4vLyBlbSBkYXNoIChtdXR0b24pXG4kc2N1dC1tZGFzaDogXCJcXDIwMTRcIjtcbi8vIGVuIGRhc2ggKG51dClcbiRzY3V0LW5kYXNoOiBcIlxcMjAxM1wiO1xuLy8gaHlwaGVuXG4kc2N1dC1oeXBoZW46IFwiXFwyMDEwXCI7XG5cbi8vIGFtcGVyc2FuZFxuJHNjdXQtYW1wOiBcIlxcMDAyNlwiO1xuLy8gZ3JlYXRlciB0aGFuXG4kc2N1dC1ndDogXCJcXDAwM2VcIjtcbi8vIGxlc3MgdGhhblxuJHNjdXQtbHQ6IFwiXFwwMDNjXCI7XG4vLyB0aW1lc1xuJHNjdXQtdGltZXM6IFwiXFwwMEQ3XCI7XG4vLyBiaWcgdGltZXNcbiRzY3V0LWJpZ3RpbWVzOiBcIlxcMjcxNVwiO1xuLy8gY2hlY2ttYXJrXG4kc2N1dC1jaGVja21hcms6IFwiXFwyNzEzXCI7XG5cbi8vIHNlY3Rpb24gc2lnbiAoZG91YmxlIFMsIGh1cnJpY2FuZSwgc2VjdGlvbmFsIHN5bWJvbCwgdGhlIGxlZ2FsIGRvdWdobnV0LCBzaWdudW0gc2VjdGlvbmlzKVxuJHNjdXQtc2VjdDogXCJcXDAwYTdcIjtcbi8vIHBhcmFncmFwaCBzeW1ib2wgKHBpbGNyb3cpXG4kc2N1dC1wYXJhOiBcIlxcMDBiNlwiO1xuXG4vLyBtaWRkb3QgKGludGVycHVuY3QsIGludGVycG9pbnQpXG4kc2N1dC1taWRkb3Q6IFwiXFwwMGI3XCI7XG4vLyBvLXNsYXNoIChzbGFzaGVkIG8pXG4kc2N1dC1vc2xhc2g6IFwiXFwwMGY4XCI7XG4vLyBidWxsZXRcbiRzY3V0LWJ1bGw6IFwiXFwyMDIyXCI7XG4vLyB3aGl0ZSBidWxsZXRcbiRzY3V0LXdoaWJ1bGw6IFwiXFwyNUU2XCI7XG4vLyBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1oZWxsaXA6IFwiXFwyMDI2XCI7XG4vLyB2ZXJ0aWNhbCBlbGxpcHNpc1xuJHNjdXQtdmVsbGlwOiBcIlxcMjJFRVwiO1xuLy8gbWlkbGluZSBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1taWRoZWxsaXA6IFwiXFwyMkVGXCI7XG5cbi8vIHVwLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC11dHJpOiBcIlxcMjViMlwiO1xuLy8gZG93bi1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtZHRyaTogXCJcXDI1YmNcIjtcbi8vIGxlZnQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWx0cmk6IFwiXFwyNWMwXCI7XG4vLyByaWdodC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtcnRyaTogXCJcXDI1YjZcIjtcbi8vIHVwLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC11c3RyaTogXCJcXDI1YjRcIjtcbi8vIGRvd24tcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWRzdHJpOiBcIlxcMjViZVwiO1xuLy8gbGVmdC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtbHN0cmk6IFwiXFwyNWMyXCI7XG4vLyByaWdodC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtcnN0cmk6IFwiXFwyNWI4XCI7XG4vLyBkaWFtb25kXG4kc2N1dC1kaWFtb25kOiBcIlxcMjVjNlwiO1xuLy8gZmlzaGV5ZVxuJHNjdXQtZmlzaGV5ZTogXCJcXDI1YzlcIjtcbi8vIGJ1bGxzZXllXG4kc2N1dC1idWxsc2V5ZTogXCJcXDI1Y2VcIjtcbi8vIGNpcmNsZVxuJHNjdXQtY2lyY2xlOiBcIlxcMjVjZlwiO1xuLy8gd2hpdGUgY2lyY2xlXG4kc2N1dC13aGl0ZWNpcmNsZTogXCJcXDI1Y2JcIjtcbi8vIHNxdWFyZVxuJHNjdXQtc3F1YXJlOiBcIlxcMjVhMFwiO1xuLy8gd2hpdGUgc3F1YXJlXG4kc2N1dC13aGl0ZXNxdWFyZTogXCJcXDI1YTFcIjtcbi8vIHNtYWxsIHNxdWFyZVxuJHNjdXQtc3NxdWFyZTogXCJcXDI1YWFcIjtcbi8vIHNtYWxsIHdoaXRlIHNxdWFyZVxuJHNjdXQtc3doaXRlc3F1YXJlOiBcIlxcMjVhYlwiO1xuXG4vLyBnZW5lcmFsIGN1cnJlbmN5XG4kc2N1dC1jdXJyZW5jeTogXCJcXDAwYTRcIjtcbi8vIGNlbnRcbiRzY3V0LWNlbnQ6IFwiXFwwMGEyXCI7XG4vLyBkb2xsYXJcbiRzY3V0LWRvbGxhcjogXCJcXDAwMjRcIjtcbi8vIHBvdW5kXG4kc2N1dC1wb3VuZDogXCJcXDAwYTNcIjtcbi8vIGV1cm9cbiRzY3V0LWV1cm86IFwiXFwyMGFjXCI7XG4vLyB5ZW5cbiRzY3V0LXllbjogXCJcXDAwYTVcIjtcbi8vIHJ1cGVlXG4kc2N1dC1ydXBlZTogXCJcXDIwQjlcIjtcbkBmdW5jdGlvbiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KSB7XG4gIC8vIFJldHVybiB0aGUgbGlzdCBvZiBgc3JjYCB2YWx1ZXMsIGluIG9yZGVyLCB0aGF0XG4gIC8vIGEgZ29vZCBgQGZvbnQtZmFjZWAgd2lsbCBuZWVkLCBpbmNsdWRpbmcgb25seVxuICAvLyB0aG9zZSBmb3JtYXRzIHNwZWNpZmllZCBpbiB0aGUgbGlzdCBgJGZvcm1hdHNgLlxuICAkcmVzdWx0OiAoKTtcbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAkZW90LXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRlb3QtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmMikge1xuICAgICR3b2ZmMi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYyLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZikge1xuICAgICR3b2ZmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB0dGYpIHtcbiAgICAkdHRmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHR0Zi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHN2Zykge1xuICAgICRzdmctdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fScpIGZvcm1hdCgnc3ZnJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRzdmctdmFsLCBjb21tYSk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AbWl4aW4gc2N1dC1mb250LWZhY2UgKFxuICAkZm9udC1mYW1pbHksXG4gICRmaWxlLXBhdGgsXG4gICR3ZWlnaHQ6IG5vcm1hbCxcbiAgJHN0eWxlOiBub3JtYWwsXG4gICRmb3JtYXRzOiBlb3Qgd29mZjIgd29mZiB0dGYgc3ZnXG4pIHtcblxuICBAaWYgaW5kZXgoJ2l0YWxpYycgJ29ibGlxdWUnLCAkd2VpZ2h0KSB7XG4gICAgJHN0eWxlOiAkd2VpZ2h0O1xuICAgICR3ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuXG4gICAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAgIHNyYzogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgIH1cbiAgICBzcmM6IG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpO1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGFuZ2luZy1pbmRlbnQgKFxuICAkaW5kZW50OiAxZW1cbikge1xuXG4gIC8vIHBhZGRpbmctbGVmdCBjcmVhdGVzIHRoZSBpbmRlbnQsXG4gIC8vIHdoaWxlIHRleHQtaW5kZW50IHB1bGxzIHRoZSBmaXJzdCBsaW5lXG4gIC8vIGJhY2sgdG8gdGhlIGVkZ2UuXG5cbiAgcGFkZGluZy1sZWZ0OiAkaW5kZW50O1xuICB0ZXh0LWluZGVudDogLSRpbmRlbnQ7XG5cbn1cblxuJXNjdXQtaGFuZ2luZy1pbmRlbnQge1xuICBAaW5jbHVkZSBzY3V0LWhhbmdpbmctaW5kZW50O1xufVxuQG1peGluIHNjdXQtaW5kZW50ZWQtcHMgKFxuICAkaW5kZW50OiAxLjVlbSxcbiAgJG5vLWZpcnN0LWluZGVudDogdHJ1ZVxuKSB7XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtaW5kZW50OiAkaW5kZW50O1xuICB9XG5cbiAgQGlmICRuby1maXJzdC1pbmRlbnQge1xuICAgIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB0ZXh0LWluZGVudDogMDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1pbmRlbnRlZC1wcyB7XG4gIEBpbmNsdWRlIHNjdXQtaW5kZW50ZWQtcHM7XG59XG5AbWl4aW4gc2N1dC1rZXktdmFsIChcbiAgJGRpdmlkZXI6IFwiOlwiLFxuICAkcGFkOiAwLjI1ZW0sXG4gICRpbmRlbnQ6IDFlbSxcbiAgJHNwYWNpbmc6IDAsXG4gICRwYWQtbGVmdDogMFxuKSB7XG5cbiAgJiA+IGR0IHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkcGFkO1xuICAgICAgQGlmICRwYWQtbGVmdCAhPSAwIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRwYWQtbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmID4gZGQge1xuICAgIG1hcmdpbi1sZWZ0OiAkaW5kZW50O1xuICAgIEBpZiAkc3BhY2luZyAhPSAwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWtleS12YWwge1xuICBAaW5jbHVkZSBzY3V0LWtleS12YWw7XG59XG5AbWl4aW4gc2N1dC1saW5rLWJiIChcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkd2lkdGg6IDFweFxuKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gIGJvcmRlci1ib3R0b20td2lkdGg6ICR3aWR0aDtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgfVxuXG59XG5cbiVzY3V0LWxpbmstYmIge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstYmI7XG59XG4vLyBTQ1VUIExJTksgVU5TVFlMRURcbi8vIGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0LyNsaW5rLXVuc3R5bGVkXG5cbkBtaXhpbiBzY3V0LWxpbmstdW5zdHlsZWQoKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcblxufVxuXG4lc2N1dC1saW5rLXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLXVuc3R5bGVkKCk7XG59XG5cbkBtaXhpbiBzY3V0LXJldmVyc2UtaXRhbGljcyAoXG4gICRlbGVtZW50czogbnVsbFxuKSB7XG5cbiAgJGVsZW1lbnQtbGlzdDogZW0sIGNpdGUsIGk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgI3tqb2luKCRlbGVtZW50LWxpc3QsICRlbGVtZW50cyl9IHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cblxufVxuXG4lc2N1dC1yZXZlcnNlLWl0YWxpY3Mge1xuICBAaW5jbHVkZSBzY3V0LXJldmVyc2UtaXRhbGljcztcbn1cblxuQG1peGluIHNjdXQtc2lkZS1saW5lZCAoXG4gICRoZWlnaHQ6IDFweCxcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkdi1hZGp1c3Q6IGZhbHNlLFxuICAkZG91YmxlOiBmYWxzZVxuKSB7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDUwJTtcblxuICAgIGJvcmRlci10b3Atc3R5bGU6ICRzdHlsZTtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAkaGVpZ2h0O1xuXG4gICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgJHYtYWRqdXN0ICE9IGZhbHNlIHtcbiAgICAgIGJvdHRvbTogJHYtYWRqdXN0O1xuICAgIH1cblxuICAgIEBpZiAkZG91YmxlICE9IGZhbHNlIHtcbiAgICAgIGhlaWdodDogJGRvdWJsZTtcbiAgICAgIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6ICRoZWlnaHQ7XG4gICAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0OiAkc3BhY2U7XG4gICAgbWFyZ2luLWxlZnQ6IC01MCU7XG4gIH1cbiAgJjphZnRlciB7XG4gICAgbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXNpZGUtbGluZWQge1xuICBAaW5jbHVkZSBzY3V0LXNpZGUtbGluZWQ7XG59XG5AbWl4aW4gc2N1dC10cnVuY2F0ZSB7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbn1cblxuJXNjdXQtdHJ1bmNhdGUge1xuICBAaW5jbHVkZSBzY3V0LXRydW5jYXRlO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInRvb2xraXQvcGxhY2Vob2xkZXJzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcInRvb2xraXQvY29sb3JzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9mb250c1wiO1xuQGltcG9ydCBcInRvb2xraXQvaW50cmluc2ljLXJhdGlvXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9uZXN0ZWQtY29udGV4dFwiO1xuQGltcG9ydCBcInRvb2xraXQvcGFyYWxsYXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3J0bFwiO1xuQGltcG9ydCBcInRvb2xraXQvdGFyZ2V0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC90cmlhbmdsZVwiO1xuQGltcG9ydCBcInRvb2xraXQvY2VudGVyXCI7XG5AaW1wb3J0IFwidG9vbGtpdC92aWV3cG9ydFwiO1xuQGltcG9ydCBcInRvb2xraXQvdW5kZXJsaW5lXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9hcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3NldC1tdWx0aXBsZVwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRUb29sa2l0LVNldHRpbmdzOiAoXG4gICdjbGVhcmZpeCBleHRlbmQnOiBmYWxzZSxcbiAgJ2NvbG9yIHN0YWNrIGFtb3VudHMnOiAyNSUgNTAlIDc1JSA4NSUgOTAlLFxuICAndGludCBzaGFkZSBhbW91bnRzJzogNzUlIDUwJSAyNSUsXG4gICd0aW50IGNvbG9yJzogI2ZmZixcbiAgJ3NoYWRlIGNvbG9yJzogIzAwMCxcbiAgJ2NvbG9yIHNjYWxlIHN0ZXBzJzogNixcbiAgJ2xpZ2F0dXJlIGV4dGVuZCc6IGZhbHNlLFxuICAnZm9udCBmYWNlIHdlaWdodCc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBzdHlsZSc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZic6IGZhbHNlLFxuICAnaWNvbiBmb250IGV4dGVuZCc6IGZhbHNlLFxuICAnaWNvbiBmb250IHNwZWFrJzogZmFsc2UsXG4gICdmYWRlIGluIGR1cmF0aW9uJzogMXMsXG4gICdmYWRlIGluIGxvYWRpbmcgY2xhc3MnOiAnLndmLWxvYWRpbmcnLFxuICAnZmFkZSBpbiBleHRlbmQnOiBmYWxzZSxcbiAgJ2ludHJpbnNpYyByYXRpbyc6IDE2LzksXG4gICdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnOiAxMDAlLFxuICAnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJzogJz4gKicsXG4gICdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nOiB0b3AsXG4gICdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJzogZmFsc2UsXG4gICduZXN0ZWQgY29udGV4dCBjb250ZXh0cyc6IDEwMCUsXG4gICduZXN0ZWQgY29udGV4dCBwb3NpdGlvbic6IGxlZnQsXG4gICd0cmlhbmdsZSBjb2xvcic6ICMwMDAsXG4gICd0cmlhbmdsZSBoZWlnaHQnOiAxZW0sXG4gICd0cmlhbmdsZSB3aWR0aCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIGFuZ2xlJzogMCxcbiAgJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJzogMSxcbiAgJ3BhcmFsbGF4IGVsZW1lbnQnOiAnYm9keScsXG4gICdwYXJhbGxheCBpb3MnOiB0cnVlLFxuICAncGFyYWxsYXggZGlzdGFuY2UnOiAwLFxuICAndmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICd2ZXJ0aWNhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnOiA1MCUsXG4gICdob3Jpem9udGFsIGZpeGVkJzogZmFsc2UsXG4gICdob3Jpem9udGFsIGV4dGVuZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJzogZmFsc2UsXG4gICd1bmRlcmxpbmUgYmFja2dyb3VuZCc6ICNmZmYsXG4gICd1bmRlcmxpbmUgY29sb3InOiAjMDBlLFxuICAndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnOiB0cnVlLFxuICAndW5kZXJsaW5lIGRpc3RhbmNlJzogMSxcbiAgJ3VuZGVybGluZSB3aWR0aCc6IDIsXG4gICd1bmRlcmxpbmUgZXh0ZW5kJzogZmFsc2UsXG4gICdhcnQgcGl4ZWwgc2l6ZSc6IDFweCxcbiAgJ2FydCBjb2xvcic6IGJsYWNrLFxuICAnYXJ0IGJvcmRlciByYWRpdXMnOiAwJVxuKTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBOZXcgU2V0dGluZ3MgbW9kdWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdsb2JhbFxuJEdsb2JhbFNldHRpbmdzOiAkVG9vbGtpdC1TZXR0aW5ncyAhZGVmYXVsdDtcbi8vIFVzZXJcbiRVc2VyU2V0dGluZ3M6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVzZXIgU2V0dGluZyBFeGlzdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJFJldHVybjtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1oYXMoJHNldHRpbmcpIHtcbiAgQHJldHVybiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIEdldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEdsb2JhbFNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctZ2V0LW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkdmFsdWVzOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkdmFsdWVzOiBtYXAtbWVyZ2UoJHZhbHVlcywgKCRzZXR0aW5nOiBzZXR0aW5nLWdldCgkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICR2YWx1ZXM7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtZ2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1nZXQoJHNldHRpbmcpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZ3MgU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgJHNldHRpbmdzKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZS1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJFJldHVybjogKCk7XG5cbiAgQGVhY2ggJEtleSwgJFZhbHVlIGluICRVc2VyU2V0dGluZ3Mge1xuICAgICRSZXR1cm46IGlmKCRzZXR0aW5nID09ICRLZXksICRSZXR1cm4sIG1hcC1tZXJnZSgkUmV0dXJuLCAoJEtleTogJFZhbHVlKSkpO1xuICB9XG5cbiAgJFVzZXJTZXR0aW5nczogJFJldHVybiAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRjbGVhci10aGUtc2V0dGluZ3M6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcmVzZXQoKSB7XG4gICRVc2VyU2V0dGluZ3M6ICgpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLXJlc2V0KCk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBQaWNrXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2soJHNldHRpbmcsICRpbnB1dCkge1xuICBAcmV0dXJuIGlmKCRpbnB1dCAhPSBudWxsLCAkaW5wdXQsIHNldHRpbmctZ2V0KCRzZXR0aW5nKSk7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2stbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZywgJGlucHV0IGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogc2V0dGluZy1waWNrKCRpbnB1dCwgJHNldHRpbmcpKSk7XG4gIH1cblxuICBAcmV0dXJuICRSZXR1cm47XG59IiwiJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFBsYWNlaG9sZGVyIEdldC9TZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCkge1xuICAkdW5pcXVlLWlkOiB1bmlxdWUtaWQoKTtcbiAgJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6IG1hcC1tZXJnZSgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgKCRpZDogJHVuaXF1ZS1pZCkpICFnbG9iYWw7XG4gIEByZXR1cm4gJHVuaXF1ZS1pZDtcbn1cblxuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCkge1xuICBAcmV0dXJuIG1hcC1nZXQoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICRpZCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhdGUgUGxhY2Vob2xkZXIgQ2xhc3MgYW5kIEV4dGVuZFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKTtcblxuICBAaWYgJHBsYWNlaG9sZGVyLWlkID09IG51bGwge1xuICAgICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKTtcbiAgICBAYXQtcm9vdCAlI3skcGxhY2Vob2xkZXItaWR9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZXh0ZW5kICUjeyRwbGFjZWhvbGRlci1pZH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU3RhdGljIE1peGluIEhlbHBlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gbWl4aW4tZHJ5ZXIoJGlkLCAkZXh0ZW5kOiB0cnVlKSB7XG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNb2Rlcm4gQ2xlYXJmaXggTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNsZWFyZml4KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnY2xlYXJmaXggZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjbGVhcmZpeCcpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb21wYXNzIEV4dGVuc2lvbiBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUaW50IGFuZCBTaGFkZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMdW1hXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBsdW1hKCRjb2xvcikge1xuICBAcmV0dXJuIChyZWQoJGNvbG9yKSAqIC4yOTkpICsgKGdyZWVuKCRjb2xvcikgKiAuNTg3KSArIChibHVlKCRjb2xvcikgKiAuMTE0KTtcbn1cblxuQGZ1bmN0aW9uIGx1bWEtZ3RlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPj0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWx0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpIDw9IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1kaWZmKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQHJldHVybiBsdW1hKCRjb2xvcjEpIC0gbHVtYSgkY29sb3IyKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTdGFja3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXN0YWNrKCRtYWluLCAkc2Vjb25kYXJ5LCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ2NvbG9yIHN0YWNrIGFtb3VudHMnKTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJGFtb3VudHMpID09IDEge1xuICAgICRhbW91bnRzOiBudGgoJGFtb3VudHMsIDEpO1xuICB9XG5cbiAgJHN0YWNrOiAkbWFpbjtcblxuICBAZWFjaCAkYW1vdW50IGluICRhbW91bnRzIHtcbiAgICAkc3RhY2s6IGpvaW4oJHN0YWNrLCBtaXgoJHNlY29uZGFyeSwgbnRoKCRzdGFjaywgMSksICRhbW91bnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0YWNrO1xufVxuXG4vLyBUaW50IFN0YWNrXG5AZnVuY3Rpb24gdGludC1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFNoYWRlIFN0YWNrXG5AZnVuY3Rpb24gc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFRpbnQvU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgJGNvbG9yczogKCk7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgndGludCBzaGFkZSBhbW91bnRzJyk7XG4gIH1cbiAgJGxlbmd0aDogbGVuZ3RoKCRhbW91bnRzKTtcblxuICAvLyBTaGFkZXNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgc2hhZGUoJGNvbG9yLCBudGgoJGFtb3VudHMsICRpKSkpO1xuICB9XG5cbiAgLy8gQmFzZVxuICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgJGNvbG9yKTtcblxuICAvLyBUaW50c1xuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRsZW5ndGggLSAxIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgdGludCgkY29sb3IsIG50aCgkYW1vdW50cywgJGxlbmd0aCAtICRpKSkpO1xuICB9XG5cbiAgQHJldHVybiAkY29sb3JzO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFNjYWxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc2NhbGUoJG1haW4sICRzZWNvbmRhcnksICRzdGVwczogbnVsbCkge1xuICAkc3RlcHM6IGlmKCRzdGVwcyAhPSBudWxsLCAkc3RlcHMsIHRvb2xraXQtZ2V0KCdjb2xvciBzY2FsZSBzdGVwcycpKTtcblxuICAkbGlzdDogJG1haW47XG5cbiAgJHJlZDE6IHJlZCgkbWFpbik7XG4gICRyZWQyOiByZWQoJHNlY29uZGFyeSk7XG4gICRyZWQtZGlmZjogKCgkcmVkMSAtICRyZWQyKSAvICgoJHN0ZXBzIC0gMSkpKTtcblxuICAkaHVlMTogaHVlKCRtYWluKTtcbiAgJGh1ZTI6IGh1ZSgkc2Vjb25kYXJ5KTtcbiAgQGlmICgkaHVlMiArIDM1OSAtICRodWUxKSA8IGFicygkaHVlMSAtICRodWUyKSB7XG4gICAgJGh1ZTI6ICRodWUyICsgMzU5O1xuICB9XG4gICRodWUtZGlmZjogKCRodWUyIC0gJGh1ZTEpIC8gKCRzdGVwcyAtIDEpO1xuXG4gICRzYXQxOiBzYXR1cmF0aW9uKCRtYWluKTtcbiAgJHNhdDI6IHNhdHVyYXRpb24oJHNlY29uZGFyeSk7XG4gICRzYXQtZGlmZjogMDtcbiAgQGlmICRzYXQxID4gJHNhdDIge1xuICAgICRzYXQtZGlmZjogKCRzYXQyIC0gJHNhdDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MSAtICRzYXQyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRsdGUxOiBsaWdodG5lc3MoJG1haW4pO1xuICAkbHRlMjogbGlnaHRuZXNzKCRzZWNvbmRhcnkpO1xuICAkbHRlLWRpZmY6IDA7XG4gIEBpZiAkbHRlMSA+ICRsdGUyIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMiAtICRsdGUxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTEgLSAkbHRlMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkYWxwMTogYWxwaGEoJG1haW4pO1xuICAkYWxwMjogYWxwaGEoJHNlY29uZGFyeSk7XG4gICRhbHAtZGlmZjogMDtcbiAgQGlmICRhbHAxID4gJGFscDIge1xuICAgICRhbHAtZGlmZjogKCRhbHAyIC0gJGFscDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMSAtICRhbHAyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRodWUtaG9sZDogJGh1ZTE7XG4gICRzYXQtaG9sZDogJHNhdDE7XG4gICRsdGUtaG9sZDogJGx0ZTE7XG4gICRhbHAtaG9sZDogJGFscDE7XG4gICRjb2xvci1ob2xkOiAwO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJHN0ZXBzIHtcbiAgICAkaHVlLWhvbGQ6ICRodWUtaG9sZCArICRodWUtZGlmZjtcbiAgICAkc2F0LWhvbGQ6ICRzYXQtaG9sZCArICRzYXQtZGlmZjtcbiAgICAkbHRlLWhvbGQ6ICRsdGUtaG9sZCArICRsdGUtZGlmZjtcbiAgICAkYWxwLWhvbGQ6ICRhbHAtaG9sZCArICRhbHAtZGlmZjtcblxuICAgICRjb2xvci1ob2xkOiBoc2xhKCRodWUtaG9sZCwgJHNhdC1ob2xkLCAkbHRlLWhvbGQsICRhbHAtaG9sZCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGNvbG9yLWhvbGQpO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFbmFibGUgbGlnYXR1cmVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnbGlnYXR1cmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnZW5hYmxlIGxpZ2F0dXJlcycpIHtcbiAgICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXM7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2E9MSwgZGxpZz0xXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1zLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtby1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIixcImRsaWdcIjtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFjZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZm9udC1mYWNlKCRuYW1lLCAkZmlsZXMsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGlubGluZS13b2ZmOiBudWxsKSB7XG4gICR3ZWlnaHQ6IGlmKCR3ZWlnaHQgIT0gbnVsbCwgJHdlaWdodCwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSB3ZWlnaHQnKSk7XG4gICRzdHlsZTogaWYoJHN0eWxlICE9IG51bGwsICRzdHlsZSwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBzdHlsZScpKTtcbiAgJGlubGluZS13b2ZmOiBpZigkaW5saW5lLXdvZmYgIT0gbnVsbCwgJGlubGluZS13b2ZmLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIGlubGluZSB3b2ZmJykpO1xuXG4gICRmb250LXN0YWNrOiAoKTtcbiAgJGZvbnQtc3JjOiAnJztcbiAgJGVvdDogZmFsc2U7XG4gICRmb250LWV4dGVuc2lvbnM6ICgnZW90JzogJ2VtYmVkZGVkLW9wZW50eXBlJywgJ3dvZmYyJzogJ3dvZmYyJywgJ3dvZmYnOiAnd29mZicsICd0dGYnOiAndHJ1ZXR5cGUnLCAnc3ZnJzogJ3N2ZycpO1xuXG4gIEBlYWNoICRleHQsICRmb3JtYXQgaW4gJGZvbnQtZXh0ZW5zaW9ucyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRmaWxlcywgJGV4dCkge1xuICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhpbmxpbmUtZm9udC1maWxlcykgYW5kICRpbmxpbmUtd29mZiA9PSB0cnVlIGFuZCAoJGV4dCA9PSAnd29mZicgb3IgJGV4dCA9PSAnd29mZjInKSB7XG4gICAgICAgICRmb250LXNyYzogaW5saW5lLWZvbnQtZmlsZXMobWFwLWdldCgkZmlsZXMsICRleHQpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIGZ1bmN0aW9uLWV4aXN0cyhmb250LXVybCkge1xuICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkZm9udC1zdGFjazogYXBwZW5kKCRmb250LXN0YWNrLCAkZm9udC1zcmMsICdjb21tYScpO1xuICAgIH1cblxuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRuYW1lO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6ICRlb3Q7XG4gICAgfVxuICAgIEBpZiBsZW5ndGgoJGZvbnQtc3RhY2spID4gMCB7XG4gICAgICBzcmM6ICRmb250LXN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEljb24gRm9udFxuLy8gRnJvbSBodHRwOi8vaWNvbW9vbi5pb1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaWNvbi1mb250KCRmb250LXN0YWNrLCAkc3BlYWs6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHNwZWFrOiBpZigkc3BlYWsgIT0gbnVsbCwgJHNwZWFrLCB0b29sa2l0LWdldCgnaWNvbiBmb250IHNwZWFrJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjaztcbiAgQGlmICRzcGVhayA9PSBmYWxzZSB7XG4gICAgc3BlYWs6IG5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gaWNvbi1mb250LS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCAge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpY29uIGZvbnQgY29yZScpIHtcbiAgICAgIEBpbmNsdWRlIGljb24tZm9udC0tY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZCk7XG5cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWRlIEluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjb250ZW50LWZhZGUtaW4oJGR1cmF0aW9uOiBudWxsLCAkbG9hZGluZzogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZHVyYXRpb246IGlmKCRkdXJhdGlvbiAhPSBudWxsLCAkZHVyYXRpb24sIHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykpO1xuICAkbG9hZGluZzogaWYoJGxvYWRpbmcgIT0gbnVsbCwgJGxvYWRpbmcsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUgYW5kICRkdXJhdGlvbiA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpIGFuZCAkbG9hZGluZyA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjb250ZW50IGZhZGUgaW4nKSB7XG4gICAgICBAaW5jbHVkZSBjb250ZW50LWZhZGUtaW4oJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaWYgbm90IG1peGluLWV4aXN0cygnc2luZ2xlLXRyYW5zaXRpb24nKSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG9wYWNpdHkgJGR1cmF0aW9uKTtcbiAgICB9XG5cbiAgICAjeyRsb2FkaW5nfSAmIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZsdWlkIEVtYmVkcyBhbmQgd2hhdGV2ZXIgV0lUSCBOTyBKQVZBU0NJUFQhXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBwYXJlbnQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gY2hpbGQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICB0b3A6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG5cbiAgcGFkZGluZy0jeyRwb3NpdGlvbn06ICgxIC8gJHJhdGlvKSAqICR3aWR0aDtcbiAgd2lkdGg6ICR3aWR0aDtcbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRlbGVtZW50czogaWYoJGVsZW1lbnRzICE9IG51bGwsICRlbGVtZW50cywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZCk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xuXG4gIEBlYWNoICRlbGVtZW50IGluICRlbGVtZW50cyB7XG4gICAgI3skZWxlbWVudH0ge1xuICAgIFx0QGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXIoJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpbygkcmF0aW8sICR3aWR0aCwgJGVsZW1lbnRzLCAkZXh0ZW5kLCAkcG9zaXRpb24pO1xufVxuXG5AbWl4aW4gaXItcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG59IiwiLy8gc2ltcGxlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbnRleHQgb2YgYSBuZXN0ZWQgcGVyY2VudGFnZS5cbkBmdW5jdGlvbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG5cbiAgLy8gRmlyc3QgbGV2ZWwgZGVlcCBpcyBhbHdheXMgMTAwJVxuICAkcGVyY2VudGFnZTogMTAwJTtcblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBsZXZlbFxuICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgIC8vIEludmVydCB0aGUgcGVyY2VudGFnZSB0byBmaW5kIGNvbnRleHRcbiAgICAkcGVyY2VudGFnZTogcGVyY2VudGFnZSgkcGVyY2VudGFnZSAvICRjb250ZXh0KTtcbiAgfVxuICAvLyBSZXR1cm4gZmluYWwgcGVyY2VudGFnZVxuICBAcmV0dXJuICRwZXJjZW50YWdlO1xufVxuXG4vLyBtaXhpbiB0byBtYWtlIHRoaW5ncyBlYXNpZXJcbkBtaXhpbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nKSk7XG5cbiAgd2lkdGg6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cyk7XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJjZW50ZXJcIiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0uNTtcbiAgfVxuICBAaWYgJHBvc2l0aW9uID09IFwicmlnaHRcIiB7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtMSArIDEwMCU7XG4gIH1cbn0iLCIvLyBNYWdpYyBwYXJhbGxheCBtaXhpbnNcbkBtaXhpbiBwYXJhbGxheC1pbml0KCRwZXJzcGVjdGl2ZTogbnVsbCwgJGVsZW1lbnQ6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcblxuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJGVsZW1lbnQ6IGlmKCRlbGVtZW50ICE9IG51bGwsICRlbGVtZW50LCB0b29sa2l0LWdldCgncGFyYWxsYXggZWxlbWVudCcpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIEBpZiAkZWxlbWVudCA9PSAnYm9keScge1xuICAgIEBhdC1yb290IHtcbiAgICAgIGh0bWwsIGJvZHkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICBib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGVsZW1lbnQgPT0gdGhpcyB7XG4gICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGF0LXJvb3QgI3skZWxlbWVudH0ge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmU6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBvdmVyZmxvdzogYXV0bztcbiAgQGlmIG1peGluLWV4aXN0cyhwZXJzcGVjdGl2ZSkge1xuICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSAqIDFweCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgICBwZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICB9XG4gIC8vIEFsbG93cyBmb3Igc21vb3RoIHNjcm9sbGluZyBidXQgZGlzYWJsZXMgcGFyYWxsYXggZWZmZWN0cy5cbiAgQGlmICRwYXJhbGxheC1pb3MgPT0gZmFsc2Uge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAvLyBNYWtlIHN1cmUgM0QgcGVyc3BlY3RpdmUgaXMgcHJlc2VydmVkXG4gICYsICYgKiB7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0tc3R5bGUpIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZShwcmVzZXJ2ZS0zZCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheCgkZGlzdGFuY2U6IG51bGwsICRwZXJzcGVjdGl2ZTogbnVsbCkge1xuXG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGRpc3RhbmNlJykpO1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcblxuICAkdHJhbnNmb3JtOiB0cmFuc2xhdGVaKCRkaXN0YW5jZSAqICRwZXJzcGVjdGl2ZSAqIDFweCkgc2NhbGUoYWJzKCRkaXN0YW5jZSAtIDEpKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnNmb3JtKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gICAgdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICB9XG5cbiAgei1pbmRleDogJGRpc3RhbmNlICogMTAwO1xufVxuIiwiQG1peGluIHJ0bCgkcHJvcGVydHksICR2YWx1ZSkge1xuICAkX3Byb3BlcnR5OiAkcHJvcGVydHk7XG4gICN7JHByb3BlcnR5fTogJHZhbHVlO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA9PSA0IHtcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgI3skcHJvcGVydHl9OiBudGgoJHZhbHVlLCAxKSBudGgoJHZhbHVlLCA0KSBudGgoJHZhbHVlLCAzKSBudGgoJHZhbHVlLCAyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpIC0gMSkgKyAncmlnaHQnO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykgLSAxKSArICdsZWZ0JztcbiAgICB9XG5cbiAgICBAaWYgJHByb3BlcnR5ICE9ICRfcHJvcGVydHkge1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiQG1peGluIHRhcmdldCgkdGFyZ2V0KSB7XG4gIEBhdC1yb290IHtcbiAgICAvKiEgQHt0YXJnZXQ6ICN7JHRhcmdldH19ICovXG4gICAgJiB7XG4gICAgICBAY29udGVudDsgIFxuICAgIH1cbiAgICAvKiEge3RhcmdldDogI3skdGFyZ2V0fX1AICovICBcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRHJhdyB0cmlhbmdsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gdHJpYW5nbGUoJGNvbG9yOiBudWxsLCAkaGVpZ2h0OiBudWxsLCAkd2lkdGg6IG51bGwsICRhbmdsZTogbnVsbCkge1xuXG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGNvbG9yJykpO1xuICAkaGVpZ2h0OiBpZigkaGVpZ2h0ICE9IG51bGwsICRoZWlnaHQsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBoZWlnaHQnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIHdpZHRoJykpO1xuICAkYW5nbGU6IGlmKCRhbmdsZSAhPSBudWxsLCAkYW5nbGUsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBhbmdsZScpKTtcblxuICBAaWYgbnRoKCRhbmdsZSwgMSkgPT0gXCJ0b3BcIiBvciBudGgoJGFuZ2xlLCAxKSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IFwiI3skYW5nbGV9XCI7XG4gIH1cblxuICBAaWYgJGFuZ2xlID09IFwidG9wXCIge1xuICAgICRhbmdsZTogMDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiA3O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJyaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAxO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDQ7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiAzO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA2O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNTtcbiAgfVxuXG4gIEBpZiB1bml0KCRoZWlnaHQpID09IFwiXCIgb3IgdW5pdCgkaGVpZ2h0KSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skaGVpZ2h0fSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIGhlaWdodC5cIlxuICB9XG5cbiAgQGlmIHVuaXQoJHdpZHRoKSA9PSBcIlwiIG9yIHVuaXQoJHdpZHRoKSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skd2lkdGh9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3Igd2lkdGguXCJcbiAgfVxuXG4gIC8vIG9mZnNldCA0NWRlZyB0byBtYWtlIGVhY2ggc2lkZSBzdGFydCBhdCAwXG4gICRkZWc6ICRhbmdsZSArIDQ1O1xuICAvLyBpZiB1bml0cywgcmVtb3ZlIHVuaXRzXG4gIEBpZiB1bml0KCRkZWcpID09IGRlZyB7XG4gICAgJGRlZzogJGRlZyAvIDFkZWc7XG4gIH1cbiAgLy8gc2hpZnQgdG8gYmUgb24gYSBzY2FsZSBmcm9tIDAgdG8gOTAuXG4gIEB3aGlsZSAkZGVnID4gOTAge1xuICAgICRkZWc6ICRkZWcgLSA5MDtcbiAgfVxuICBAd2hpbGUgJGRlZyA8IDAge1xuICAgICRkZWc6ICRkZWcgKyA5MDtcbiAgfVxuICAvLyBHZXQgYSByYXRpbyBvZiA5MCB0byBtdWx0aXBseSBieS5cbiAgJGRlZzogJGRlZyAvIDkwO1xuXG4gIC8vIG1ha2Ugc3VyZSBtZXRyaWNzIGFyZSByZXNldFxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gIC8vIHJ1biB0aHJvdWdoIHNpZGVzXG4gIEBpZiAkYW5nbGUgPD0gNDUgb3IgJGFuZ2xlID4gMzE1IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKSAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gNDUgYW5kICRhbmdsZSA8PSAxMzUge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqICRkZWcpIDAgKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGg7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDEzNSBhbmQgJGFuZ2xlIDw9IDIyNSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAoJHdpZHRoICogJGRlZykgMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDIyNSBhbmQgJGFuZ2xlIDw9IDMxNSB7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aCAoJGhlaWdodCAqICRkZWcpIDA7XG4gIH1cbn0iLCIvLyBWZXJ0aWNhbGx5IGNlbnRlciBhbnl0aGluZywgbGl0ZXJhbGx5IGFueXRoaW5nLlxuLy8gaHR0cDovL3plcm9zaXh0aHJlZS5zZS92ZXJ0aWNhbC1hbGlnbi1hbnl0aGluZy13aXRoLWp1c3QtMy1saW5lcy1vZi1jc3MvXG5AbWl4aW4gdmVydGljYWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuXG4gIHRvcDogJG1pZHBvaW50O1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3ZlcnRpY2FsIGNlbnRlcicpIHtcbiAgICAgIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhvcml6b250YWwgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgQGlmICRtaWRwb2ludCAhPSAwJSB7XG4gICAgbGVmdDogJG1pZHBvaW50O1xuICB9XG5cbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBYnNvbHV0ZSBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFic29sdXRlLWNlbnRlcigkdmVydGljYWw6IG51bGwsICRob3Jpem9udGFsOiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHZlcnRpY2FsOiBpZigkdmVydGljYWwgIT0gbnVsbCwgJHZlcnRpY2FsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgdG9wOiAkdmVydGljYWw7XG4gIEBpZiAkaG9yaXpvbnRhbCAhPSAwJSB7XG4gICAgbGVmdDogJGhvcml6b250YWw7XG4gIH1cblxuICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENTUyBsZXZlbCA0IFZpZXdwb3J0XG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtZGV2aWNlLWFkYXB0LyN0aGUtYXR2aWV3cG9ydC1ydWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiB2aWV3cG9ydCB7XG4gIEAtd2Via2l0LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tcy12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQHZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4iLCJAbWl4aW4gdW5kZXJsaW5lKCRiYWNrZ3JvdW5kOiBudWxsLCAkY29sb3I6IG51bGwsICRjbGVhci1kZXNjZW5kZXJzOiBudWxsLCAkZGlzdGFuY2U6IG51bGwsICR3aWR0aDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkYmFja2dyb3VuZDogaWYoJGJhY2tncm91bmQgIT0gbnVsbCwgJGJhY2tncm91bmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgYmFja2dyb3VuZCcpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNvbG9yJykpO1xuICAkY2xlYXItZGVzY2VuZGVyczogaWYoJGNsZWFyLWRlc2NlbmRlcnMgIT0gbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnMsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycycpKTtcbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGRpc3RhbmNlJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgd2lkdGgnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgJFBYOiAuMDYyNWVtO1xuXG4gIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKCRleHRlbmQpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHMoYmFja2dyb3VuZC1pbWFnZSkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhsaW5lYXItZ3JhZGllbnQpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKFxuICAgICAgbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKVxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSk7XG4gIH1cbiAgYmFja2dyb3VuZC1zaXplOiAoMiAqICRQWCkgKCgxICsgJHdpZHRoKSAqICRQWCk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgKCgkd2lkdGgpICogJFBYKSArICRkaXN0YW5jZTtcblxuICBAaWYgJGNsZWFyLWRlc2NlbmRlcnMge1xuICAgIHRleHQtc2hhZG93OiAoMSAqICRQWCkgKDEgKiAkUFgpIDAgJGJhY2tncm91bmQsICgtMSAqICRQWCkgMCAwICRiYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd1bmRlcmxpbmUnKSB7XG4gICAgICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBUlQhXG4vLyBJbnNwaXJlZCBieSBodHRwOi8vZWxydW1vcmRlbGFsdXouZ2l0aHViLmlvL1BpeGVsYXRvci9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFydCgkYXJ0LCAkcHgtc2l6ZTogbnVsbCwgJGNvbG9yOiBudWxsLCAkcmFkaXVzOiBudWxsKSB7XG4gICRweC1zaXplOiBpZigkcHgtc2l6ZSAhPSBudWxsLCAkcHgtc2l6ZSwgdG9vbGtpdC1nZXQoJ2FydCBwaXhlbCBzaXplJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCdhcnQgY29sb3InKSk7XG4gICRyYWRpdXM6IGlmKCRyYWRpdXMgIT0gbnVsbCwgJHJhZGl1cywgdG9vbGtpdC1nZXQoJ2FydCBib3JkZXIgcmFkaXVzJykpO1xuXG4gICRidWlsZDogKCk7XG4gICR5OiAkcHgtc2l6ZTtcbiAgJHg6IDA7XG5cbiAgaGVpZ2h0OiAkcHgtc2l6ZTtcbiAgd2lkdGg6ICRweC1zaXplO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyX2xlbmd0aCgkYXJ0KSB7XG4gICAgJGNoYXI6IHN0cl9zbGljZSgkYXJ0LCAkaSwgJGkpO1xuICAgICR4OiAkeCArICRweC1zaXplO1xuXG4gICAgQGlmICRjaGFyID09ICduJyB7XG4gICAgICAkeTogJHkgKyAkcHgtc2l6ZTtcbiAgICAgICR4OiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY2hhciAhPSAnICcge1xuICAgICAgJGJvcmRlcjogJHggJHkgMCAkY29sb3I7XG4gICAgICAkYnVpbGQ6IGFwcGVuZCgkYnVpbGQsICRib3JkZXIsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBib3gtc2hhZG93OiAkYnVpbGQ7XG59IiwiQG1peGluIHNldC1tdWx0aXBsZSgkdmFsdWUsICRwcm9wZXJ0aWVzLi4uKSB7XG4gICRwcm9wZXJ0eS1sZW5ndGg6IGxlbmd0aCgkcHJvcGVydGllcyk7XG4gICRlcnJvci1tc2c6IFwiVGhlIGBzZXQtbXVsdGlwbGVgIG1peGluIHJlcXVpcmVzIHlvdSB0byBwYXNzIGluIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzIHRoZSBzZWNvbmQgYXJndW1lbnRcIjtcblxuICBAaWYgJHByb3BlcnR5LWxlbmd0aCA8IDEge1xuICAgIEBpZiBmZWF0dXJlLWV4aXN0cyhhdC1lcnJvcikge1xuICAgICAgQGVycm9yICRlcnJvci1tc2c7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICRlcnJvci1tc2c7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCBpbiBpcyBhIHdoaXRlLXNwYWNlZCBzZXBhcmF0ZWQgbGlzdC5cbiAgJHByb3BlcnRpZXM6IGlmKCRwcm9wZXJ0eS1sZW5ndGggPT0gMSwgbnRoKCRwcm9wZXJ0aWVzLCAxKSwgJHByb3BlcnRpZXMpO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSBpbiAkcHJvcGVydGllcyB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWVcbiAgfVxufVxuIiwiLy8gIE1vZHVsZSBTY2FsZSBhbmQgYmFzZSBmb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJGJhc2UtZm9udC1zaXplOiAgIDE0cHg7XG4kaWRlYWwtZm9udC1zaXplOiAgMjJweDtcbi8vICRiYXNlLWxpbmUtaGVpZ2h0OiBtcygxLCAkYmFzZS1mb250LXNpemUpO1xuXG4kcmh5dGhtLXVuaXQ6IFwicmVtXCI7XG4kcmh5dGhtLWdhcDogOHB4O1xuJHJlbS13aXRoLXB4LWZhbGxiYWNrOiBmYWxzZTtcblxuJHNjdXQtcmVtLWJhc2U6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZS1mb250LXNpemUpO1xuXG5cbi8vIHt7IENvbXBvbmVudCBzaXplIH19XG4kZ2xvYmFsLXJhZGl1czogM3B4O1xuIiwiLy8gIEdyaWQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG5cbiRsYXlvdXQtYmFzZTogKFxuICBndXR0ZXJzOiAxLzUsXG4gIGNvbHVtbi13aWR0aDogODBweCxcbiAgLy8gZ3V0dGVyLXBvc2l0aW9uOiBpbnNpZGUtc3RhdGljLFxuICBkZWJ1ZzogKFxuICAgIC8vIGltYWdlOiBzaG93LFxuICApLFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IHRydWUsXG4gICAgcmVtOiBmYWxzZSxcbiAgKSxcbik7XG4kc3VzeTogbGF5b3V0KDUgJGxheW91dC1iYXNlKTtcblxuLy8ge3sgRWxlbWVudCB0d2ljayBwb2ludHMgfX1cblxuLy8ge3sgRGV2aWNlIGxheW91dHMgfX1cbiRzdXN5LW1lZGlhOiAoXG4gICdtb2JpbGUnOiAnKG1heC13aWR0aDogNDE0cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6ICcobWF4LXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiAnKG1heC13aWR0aDogMTAyNHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3RhYmxldCc6ICcobWluLXdpZHRoOiA3NjhweCknLFxuICAndGFibGV0LXBvcnRyYWl0LW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ2Rlc2t0b3AnOiAnKG1pbi13aWR0aDogMTIwMHB4KScsXG4gICdjYXRlZ29yeS1tZW51JzogJyhtaW4td2lkdGg6IDEwMjRweCknXG4pO1xuJHRhYmxldDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgdGFibGV0KSxcbiAgbGF5b3V0OiA5IC41XG4pO1xuJHRhYmxldC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCR0YWJsZXQsIGxheW91dCkpO1xuJGRlc2t0b3A6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIGRlc2t0b3ApLFxuICBsYXlvdXQ6IDEyIDEuNSBzcGxpdFxuKTtcbiRkZXNrdG9wLWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJGRlc2t0b3AsIGxheW91dCkpO1xuJGRlc2t0b3AtZ3JpZC1wYWRkaW5nOiBzY3V0LXJlbSgxNSk7XG5cbi8vICB7eyBMYXllcnMgLS0tLS0tIH19XG4kbGF5ZXJzOiAoXG4gIGJhc2UsXG4gIGhlYWRlci1tZW51LFxuICBkcmF3ZXIsXG4gIGRyYXdlci1zaGFkb3csXG4gIGRyYXdlci1uYXYsXG4pOyIsIi8vICBTZXR0aW5nc1xuLy8gID09PT09PT09XG5cbiRjb2xvci1saWdodC1zYXR1cmF0aW9uOiA5MyU7XG5cbi8vICBDb2xvcnNcbi8vICA9PT09PT1cblxuJGdyYXktYmFzZTogICAgICMwMDAgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrZXI6ICAgdGludCgkZ3JheS1iYXNlLCAxMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrOiAgICAgdGludCgkZ3JheS1iYXNlLCAyMCUpICAgIWRlZmF1bHQ7XG4kZ3JheTogICAgICAgICAgdGludCgkZ3JheS1iYXNlLCAzMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodDogICAgdGludCgkZ3JheS1iYXNlLCA0Ni41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodGVyOiAgdGludCgkZ3JheS1iYXNlLCA5My41JSkgIWRlZmF1bHQ7XG5cbi8vICBUZXh0c1xuLy8gIC0tLS0tXG5cbiR0ZXh0LWNvbG9yOiAkZ3JheS1kYXJrO1xuXG4vLyAgUGFsbGV0ZVxuLy8gIC0tLS0tLS0tLS0tXG5cbiRibHVlOiAjMmQ2ZWM2O1xuJGJsdWUtZGFyazogcmdiKDAsIDY5LCAxNjQpO1xuJGJsdWUtbGlnaHQ6ICNkOGU5ZmY7XG4keWVsbG93OiAjZmM5NjAwO1xuJHllbGxvdy1kYXJrOiAjYjg2ZTAwO1xuJHllbGxvdy1saW5rOiAjZmZkODAwO1xuJG9yYW5nZTogI2ZjNDcwMDtcbiRvcmFuZ2UtZGFyazogI2I4NmUwMDtcbiRyZWQ6IHJnYigyMDYsIDY4LCA2Mik7XG4kZ3JlZW46IHJnYigyOCwgMTQ5LCAyMik7XG4kcGluazogcmdiKDE5NywgMzEsIDEyNCk7XG5cbiRwcmltYXJ5OiBzaGFkZSgjNDI4YmNhLCA2LjUlKTtcbiRzdWNjZXNzOiAjNWNiODVjO1xuJGluZm86ICAgICM1YmMwZGM7XG4kd2FybmluZzogI2YwYWQ0ZTtcbiRkYW5nZXI6ICAjZDk1MzRmO1xuXG4kaW5wdXQtYm9yZGVyOiAjZTRlNGU0O1xuJGJvcmRlci1ncmF5OiAjOTE5MTkxO1xuJGJhY2tncm91bmQtZ3JheTogI2U5ZTllOTtcblxuLy8gIExpbmtzXG4vLyAgLS0tLS1cblxuJGxpbmstY29sb3I6ICAgICAgICAgICAjMDAwICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICBzaGFkZSgkbGluay1jb2xvciwgMTUlKSAhZGVmYXVsdDtcbiRsaW5rLWZvY3VzLWNvbG9yOiAgICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLWFjdGl2ZS1jb2xvcjogICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLXZpc2l0ZWQtY29sb3I6ICAgJGdyYXktZGFyayAhZGVmYXVsdDtcblxuLy8gIE5Qcm9ncmVzc1xuLy8gIC0tLS0tLS0tLVxuJG5wcm9ncmVzcy1jb2xvcjogICAgJHByaW1hcnk7XG4iLCIvLyAgRm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiAgIHJpZ2h0O1xuXG4vLyDlg4Xph53lsI3oi7Hmlodcbi8vIEBmb250LWZhY2Uge1xuLy8gICBmb250LWZhbWlseTogRW5nbGlzaDtcbi8vICAgdW5pY29kZS1yYW5nZTogVSswMC0wMjRGO1xuLy8gICBzcmM6IGxvY2FsKEhlbHZldGljYSk7XG4vLyB9XG5cbiRzYW5zOiAgICBIZWx2ZXRpY2FOZXVlLUxpZ2h0XG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUgTGlnaHQnXG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUnXG4gICAgICAgLCAgSGVsdmV0aWNhXG4gICAgICAgLCAnSGVpdGkgVEMnXG4gICAgICAgLCAnTGlIZWkgUHJvJ1xuICAgICAgICwgJ01pY3Jvc29mdCBKaGVuZ0hlaSdcbiAgICAgICAsICflvq7ou5/mraPpu5Hpq5QnXG4gICAgICAgLCAgQXJpYWxcbiAgICAgICAsICBzYW5zLXNlcmlmO1xuXG4kc2VyaWY6ICAnUFQgU2VyaWYnXG4gICAgICAgLCBHZW9yZ2lhXG4gICAgICAgLCBUaW1lc1xuICAgICAgICwgJ1RpbWVzIE5ldyBSb21hbidcbiAgICAgICAsICdTb25ndGkgVEMnXG4gICAgICAgLCAnSGlyYWdpbm8gTWluY2hvIFByb04nXG4gICAgICAgLCBzZXJpZjtcblxuJGJhc2UtZm9udC1mYW1pbHk6ICRzYW5zOyJdLCJtYXBwaW5ncyI6IkE4Q0FBOzs7OztFQUtFO0E5Q01zQixBQUFBLGFBQWEsQ0FBQztFQUNwQyxXQUFXLEVDVG9CLEdBQVc7RURVMUMsZ0JBQWdCLEVrRThCQSxPQUFPLEdsRTdCeEI7O0FBQ0QsQUFBQSxzQkFBc0IsQ0FBQztFQUVyQixZQUFZLEVDZG1CLEdBQVc7RURlMUMsTUFBTSxFQUFFLENBQUMsQ0Nmc0IsSUFBVyxDRGUxQixDQUFDLENDakJLLENBQU87RURrQjdCLElBQUksRUFBRSxnQkFBaUI7RUFDdkIsZ0JBQWdCLEVrRUdYLE9BQU87RWxFRlosUUFBUSxFQUFFLFFBQVM7RUFDbkIsT0FBTyxFQUFFLENBQUssR0FrQmY7RUF6QkQsQUFBQSxzQkFBc0IsQUFTbkIsUUFBUSxDQUFDO0lBRVIsT0FBTyxFQUFFLEVBQUc7SThDNGRkLE9BQU8sRUFBRSxZQUFhO0lBQ3RCLE1BQU0sRUFBRSxDQUFFO0lBQ1YsS0FBSyxFQUFFLENBQUU7SUFFVCxpQkFBaUIsRUFBRSxjQUFNO0lBZ0N6QixZQUFZLEVBSE8sR0FBTyxDQUFPLEdBQU07SUFJdkMsWUFBWSxFQUFFLEtBQU07SUE2QmxCLGdCQUFnQixFb0JoaUJSLE9BQUc7SXBCaWlCWCxtQkFBbUIsRUFBRSxXQUFZO0lBTS9CLGlCQUFpQixFb0J2aUJYLE9BQUc7SXBCd2lCVCxrQkFBa0IsRUFBRSxXQUFZO0k5Q3BpQmxDLFFBQVEsRUFBRSxRQUFRLENDM0JFLENBQU8sQ0QyQkosQ0FBQyxDQVpWLElBQUcsQ0NmRyxDQUFPLEdENEI1QjtFQWRILEFBQUEsOEJBQXNCLENBZ0JWO0lBQ1IsZ0JBQWdCLEVrRU5YLE9BQU8sR2xFUWI7SUFuQkgsQUFBQSw4QkFBc0IsQUFrQmpCLFFBQVEsQ0FBQztNOENxZFosT0FBTyxFQUFFLFlBQWE7TUFDdEIsTUFBTSxFQUFFLENBQUU7TUFDVixLQUFLLEVBQUUsQ0FBRTtNQUVULGlCQUFpQixFQUFFLGNBQU07TUFnQ3pCLFlBQVksRUFITyxHQUFPLENBQU8sR0FBTTtNQUl2QyxZQUFZLEVBQUUsS0FBTTtNQTZCbEIsZ0JBQWdCLEVvQjdoQk4sT0FBTztNcEI4aEJqQixtQkFBbUIsRUFBRSxXQUFZO01BTS9CLGlCQUFpQixFb0JwaUJULE9BQU87TXBCcWlCZixrQkFBa0IsRUFBRSxXQUFZLEc5Qy9oQjRDO0VBbEJsRixBQUFBLDhCQUFzQixDQXFCVjtJQUNSLGdCQUFnQixFa0VSWCxPQUFPLEdsRVViO0lBeEJILEFBQUEsOEJBQXNCLEFBdUJqQixRQUFRLENBQUM7TThDZ2RaLE9BQU8sRUFBRSxZQUFhO01BQ3RCLE1BQU0sRUFBRSxDQUFFO01BQ1YsS0FBSyxFQUFFLENBQUU7TUFFVCxpQkFBaUIsRUFBRSxjQUFNO01BZ0N6QixZQUFZLEVBSE8sR0FBTyxDQUFPLEdBQU07TUFJdkMsWUFBWSxFQUFFLEtBQU07TUE2QmxCLGdCQUFnQixFb0IxaEJOLE9BQU87TXBCMmhCakIsbUJBQW1CLEVBQUUsV0FBWTtNQU0vQixpQkFBaUIsRW9CamlCVCxPQUFPO01wQmtpQmYsa0JBQWtCLEVBQUUsV0FBWSxHOUMxaEI0Qzs7QUFHbEYsQUFBQSxzQkFBc0IsQ0FBQztFQUNyQixPQUFPLEVDdkN3QixHQUFXLEdENkMzQztFQVBELEFBR0Usc0JBSG9CLENBR3BCLFVBQVUsQ0FBQztJQUNULE1BQU0sRUMxQ3VCLEdBQVcsQ0FGcEIsQ0FBTztJRDZDM0IsWUFBWSxFQzNDaUIsSUFBVyxHRDRDekMiLCJuYW1lcyI6W119 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.feature-section__heading {
  position: relative;
  fill: currentColor; }

.feature-section__heading::before {
  content: "";
  display: block;
  height: 3px;
  right: 0;
  bottom: 10px;
  left: 40px;
  position: absolute;
  background-color: currentColor; }

.feature-section__heading--red {
  color: #ce443e; }

.feature-section__heading--green {
  color: #1c9516; }

.feature-section__heading .text {
  padding-right: 8px;
  bottom: 0;
  left: 40px;
  position: absolute;
  font-style: normal;
  font-size: 18px;
  background-color: #fff; }

.feature-section__heading .icon {
  width: 35px;
  height: 35px;
  background-color: #fff; }

.feature-section__heading .more {
  display: inline-block;
  padding-left: 8px;
  right: 0;
  bottom: 6px;
  position: absolute;
  color: currentColor;
  font-size: 12px;
  line-height: 1;
  background-color: #fff; }

.feature-section__content:after {
  content: '';
  display: block;
  clear: both; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2ZlYXR1cmUtc2VjdGlvbi5zY3NzIiwic291cmNlcyI6WyIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fZmVhdHVyZS1zZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX21peGlucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19jbGFzc2VzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2N1dC9kaXN0L19zY3V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL190b29sa2l0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BsYWNlaG9sZGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fZm9udHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9faW50cmluc2ljLXJhdGlvLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX25lc3RlZC1jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BhcmFsbGF4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3J0bC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190YXJnZXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdHJpYW5nbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2VudGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3ZpZXdwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3VuZGVybGluZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19hcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0LW11bHRpcGxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3NjYWxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2ZvbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tIHZlbmRvciBtaXhpbiBsaWJyYXJpZXMgLS0tLVxuQGltcG9ydCBcIm1peGluc1wiLFxuICAgICAgICBcImNsYXNzZXNcIixcbiAgICAgICAgXCJ+c3VzeVwiLFxuICAgICAgICBcIn5zY3V0XCIsXG4gICAgICAgIFwifnNhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0XCI7XG5cbi8vIC0tLS0gdmFyaWFibGVzIGFuZCBjb25maWcgLS0tLVxuQGltcG9ydCBcInNldHRpbmdzL3NjYWxlXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZ3JpZFwiLFxuICAgICAgICBcInNldHRpbmdzL2NvbG9yc1wiLFxuICAgICAgICBcInNldHRpbmdzL2ZvbnRcIjsuZmVhdHVyZS1zZWN0aW9uX19oZWFkaW5nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmaWxsOiBjdXJyZW50Q29sb3I7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogM3B4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSBuKCkgMCAxMHB4IHIoNSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICB9XG5cbiAgJi0tcmVkIHsgY29sb3I6ICRyZWQ7IH1cbiAgJi0tZ3JlZW4geyBjb2xvcjogJGdyZWVuOyB9XG4gIFxuICAudGV4dCB7XG4gICAgcGFkZGluZy1yaWdodDogcigxKTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgbigpIG4oKSAwIHIoNSk7XG4gICAgdGV4dDogbm9ybWFsIDE4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgfVxuXG4gIC5pY29uIHtcbiAgICBzaXplOiAzNXB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIH1cblxuICAubW9yZSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmctbGVmdDogcigxKTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGUgbigpIDAgKHIoMSkgLSAycHgpIG4oKTtcbiAgICB0ZXh0OiBjdXJyZW50Q29sb3IgMTJweCAxO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIH1cbn1cblxuLmZlYXR1cmUtc2VjdGlvbl9fY29udGVudCB7IGNsZWFyOiBmaXg7IH0iLCIvLyB7e1Nhc3MgbWl4aW5zIC0tLS0tLS0tfX1cbkBmdW5jdGlvbiBuKCkgeyBAcmV0dXJuIHVucXVvdGUoXCIqXCIpOyB9XG5cbkBmdW5jdGlvbiByKCR0aW1lczogMSkgeyBAcmV0dXJuICRyaHl0aG0tZ2FwICogJHRpbWVzOyB9XG5cbkBtaXhpbiBzdXN5KCRtYXApIHtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJG1hcCwgcXVlcnkpLCBtYXAtZ2V0KCRtYXAsIGxheW91dCkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gcmV2ZXJzZS1oaWRlLXZpc3VhbGx5KCkge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG59XG5cbkBtaXhpbiBzaGFyZS1icmVha3BvaW50cygkbWFwLCAkY3NzcHJvcDogY29udGVudCkge1xuICAkZGVzY3JpcHRpb246ICcnO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRtYXAge1xuICAgIEBpZiAkZGVzY3JpcHRpb24gIT0gICcnIHtcbiAgICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJyB8ICc7XG4gICAgfVxuICAgIFxuICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJHByb3BlcnR5ICsnOiAnKyBpbnNwZWN0KCR2YWx1ZSk7XG4gIH1cblxuICBkaXNwbGF5OiBub25lO1xuICAjeyRjc3Nwcm9wfTogICRkZXNjcmlwdGlvbjtcbn1cblxuQG1peGluIHRvZ2dsZS1mYWRlKCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICB9XG59XG5cbkBtaXhpbiB0b2dnbGUtc2hvdygpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAwO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgfSAgXG59XG5cbkBtaXhpbiBzaG93KCkge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgaGVpZ2h0OiBhdXRvOyAgXG59XG5cbkBtaXhpbiBpbnB1dC1wbGFjZWhvbGRlcigpIHtcbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgXG4gICY6Oi1tb3otcGxhY2Vob2xkZXIsXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbn1cblxuQG1peGluIGRlYnVnKCRjb2xvcjogI2ZmZiByZ2JhKHRvbWF0bywgLjMpKSB7XG4gIGNvbG9yOiAkY29sb3Jcbn1cblxuQG1peGluIGxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpO1xuICA+IGxpICsgbGk6YmVmb3JlIHsgbWFyZ2luLWxlZnQ6ICRzcGFjZSArIDRweDsgfVxufVxuIiwiQG1peGluIEhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG5AbWl4aW4gU2VsZWN0IHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgcGFkZGluZzogMCByKDIpIDAgcigxKTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgLy8gaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICAvLyBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAvLyBiYWNrZ3JvdW5kOiB1cmwoXCJpbWFnZXMvYXJyb3ctZG93bi5zdmdcIilcbiAgLy8gICAgICAgICAgIDkyJSA1MCUgLyA4cHggMTBweFxuICAvLyAgICAgICAgICAgbm8tcmVwZWF0XG4gIC8vICAgICAgICAgICB0cmFuc3BhcmVudDtcbiAgLm5vLWNzcy1hcHBlYXJhbmNlICYge1xuICAgIEBpbmNsdWRlIHNjdXQtcGFkZGluZyhuIDApO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIE5vcm1hbGl6ZSgpIHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lIHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwO1xufSIsIi8vIFN1c3lcbi8vID09PT1cblxuQGltcG9ydCAnc3VzeS9sYW5ndWFnZS9zdXN5JztcbiIsIi8vIFN1c3kgTmV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuJHN1c3ktdmVyc2lvbjogMi4xO1xuXG5AaW1wb3J0IFwiLi4vc3VcIjtcbkBpbXBvcnQgXCIuLi9vdXRwdXQvZmxvYXRcIjtcblxuQGltcG9ydCBcInN1c3kvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdXN5L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdXN5L2dyaWRzXCI7XG5AaW1wb3J0IFwic3VzeS9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VzeS9jb250ZXh0XCI7XG5AaW1wb3J0IFwic3VzeS9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VzeS9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzdXN5L3NwYW5cIjtcbkBpbXBvcnQgXCJzdXN5L2d1dHRlcnNcIjtcbkBpbXBvcnQgXCJzdXN5L2lzb2xhdGVcIjtcbkBpbXBvcnQgXCJzdXN5L2dhbGxlcnlcIjtcbkBpbXBvcnQgXCJzdXN5L3Jvd3NcIjtcbkBpbXBvcnQgXCJzdXN5L21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzdXN5L3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2JsZWVkXCI7XG5AaW1wb3J0IFwic3VzeS9icmVha3BvaW50LXBsdWdpblwiO1xuIiwiLy8gU3Vcbi8vID09XG5cbkBpbXBvcnQgXCJzdS91dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJzdS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdS9ncmlkXCI7XG4iLCIvLyBNYXAgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gVHJ1bmNhdGUgTGlzdFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSBsaXN0LCB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBsZW5ndGhcbkBmdW5jdGlvbiBfc3VzeS10cnVuY2F0ZS1saXN0KFxuICAkbGlzdCxcbiAgJGxlbmd0aFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGlzdCkge1xuICAgICRfcmV0dXJuOiBpZigkaSA8PSAkbGVuZ3RoLCBhcHBlbmQoJF9yZXR1cm4sIG50aCgkbGlzdCwgJGkpKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIEdldFxuLy8gLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtZ2V0KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiAkbWFwO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiB0eXBlLW9mKCRfcmV0dXJuKSA9PSBtYXAge1xuICAgICAgJF9yZXR1cm46IG1hcC1nZXQoJF9yZXR1cm4sICRrZXkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBTZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFNldCBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLXNldChcbiAgJG1hcCxcbiAgJGtleXMtdmFsdWUuLi5cbikge1xuICAkX3ZhbHVlOiBudGgoJGtleXMtdmFsdWUsIC0xKTtcbiAgJF9rZXlzOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRrZXlzLXZhbHVlLCBsZW5ndGgoJGtleXMtdmFsdWUpIC0gMSk7XG4gICRfbGVuZ3RoOiBsZW5ndGgoJF9rZXlzKTtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJF9sZW5ndGgge1xuICAgICRfbjogMCAtICRpO1xuICAgICRfbGV2ZWw6IF9zdXN5LXRydW5jYXRlLWxpc3QoJF9rZXlzLCAkX2xlbmd0aCArICRfbik7XG4gICAgJF9sZXZlbDogX3N1c3ktZGVlcC1nZXQoJG1hcCwgJF9sZXZlbC4uLik7XG4gICAgJF9tZXJnZTogbnRoKCRfa2V5cywgJF9uKTtcbiAgICAkX21lcmdlOiAoJF9tZXJnZTogJF92YWx1ZSk7XG4gICAgJF9yZXR1cm46IGlmKCRfbGV2ZWwsIG1hcC1tZXJnZSgkX2xldmVsLCAkX21lcmdlKSwgJF9tZXJnZSk7XG4gICAgJF92YWx1ZTogJF9yZXR1cm47XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgTWVyZ2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiAyIG9iamVjdHMgb2YgYW55IGRlcHRoLCBtZXJnZWRcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLW1lcmdlKFxuICAkbWFwMSxcbiAgJG1hcDJcbikge1xuXG4gIEBpZiB0eXBlLW9mKCRtYXAxKSAhPSBtYXAgb3IgdHlwZS1vZigkbWFwMikgIT0gbWFwIHtcbiAgICAkbWFwMTogJG1hcDI7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwMiB7XG4gICAgICAkX25ldzogKCRrZXk6IF9zdXN5X2RlZXAtbWVyZ2UobWFwLWdldCgkbWFwMSwgJGtleSksICR2YWx1ZSkpO1xuICAgICAgJG1hcDE6IG1hcC1tZXJnZSgkbWFwMSwgJF9uZXcpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG1hcDE7XG59XG5cblxuLy8gRGVlcCBIYXMtS2V5XG4vLyAtLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIHRydWUgaWYgYSBkZWVwIGtleSBleGlzdHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWhhcy1rZXkoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46IG51bGw7XG4gICRfc3RvcDogZmFsc2U7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIG5vdCgkX3N0b3ApIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KTtcbiAgICB9XG5cbiAgICBAaWYgJF9yZXR1cm4ge1xuICAgICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfc3RvcDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU2V0dGluZ3Ncbi8vID09PT09PT09XG5cbi8vIFZlcnNpb25cbi8vIC0tLS0tLS1cbiRzdS12ZXJzaW9uOiAxLjE7XG5cblxuLy8gRGVmYXVsdCBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVGhlIGJhc2ljIHNldHRpbmdzXG4kc3VzeS1kZWZhdWx0czogKFxuICBjb2x1bW5zOiA0LFxuICBndXR0ZXJzOiAuMjUsXG4pO1xuXG5cbi8vIFVzZXIgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gRGVmaW5lIHRoZSAkc3VzeSB2YXJpYWJsZSB3aXRoIGEgbWFwIG9mIHlvdXIgb3duIHNldHRpbmdzLlxuLy8gLSBTZXQgRUlUSEVSICRjb2x1bW4td2lkdGggT1IgJGNvbnRhaW5lclxuLy8gLSBVc2UgJGNvbHVtbi13aWR0aCBmb3Igc3RhdGljIGxheW91dHNcbiRzdXN5OiAoKSAhZGVmYXVsdDtcblxuXG4vLyBTdXN5IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBBZGQgZGVmYXVsdHMgdG8gU3VzeVxuQG1peGluIHN1c3ktZGVmYXVsdHMoXG4gICRkZWZhdWx0c1xuKSB7XG4gICRzdXN5LWRlZmF1bHRzOiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRkZWZhdWx0cykgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IFNldFxuLy8gLS0tLS0tLS1cbi8vIENoYW5nZSBvbmUgc2V0dGluZ1xuLy8gLSAka2V5ICAgOiBzZXR0aW5nIG5hbWVcbi8vIC0gJHZhbHVlIDogc2V0dGluZyB2YWx1ZVxuQG1peGluIHN1c3ktc2V0KFxuICAka2V5LXZhbHVlLi4uXG4pIHtcbiAgJHN1c3k6IF9zdXN5LWRlZXAtc2V0KCRzdXN5LCAka2V5LXZhbHVlLi4uKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgR2V0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJuIG9uZSBzZXR0aW5nIGZyb20gYSBncmlkXG4vLyAtICRrZXkgICAgIDogPGtleXdvcmQ+XG4vLyAtICRsYXlvdXQgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIHN1c3ktZ2V0KFxuICAka2V5LFxuICAkbGF5b3V0OiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRzdXN5KVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfb3B0aW9uczogJGxheW91dCAkc3VzeSAkc3VzeS1kZWZhdWx0cztcbiAgJF9icmVhazogZmFsc2U7XG4gICRfcmV0dXJuOiBudWxsO1xuXG4gIEBlYWNoICRvcHQgaW4gJF9vcHRpb25zIHtcbiAgICBAaWYgdHlwZS1vZigkb3B0KSA9PSBtYXAgYW5kIG5vdCgkX2JyZWFrKSB7XG4gICAgICAkX2tleXNldDogX3N1c3ktZGVlcC1oYXMta2V5KCRvcHQsICRrZXkuLi4pO1xuICAgICAgQGlmICRfa2V5c2V0IHtcbiAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtZ2V0KCRvcHQsICRrZXkuLi4pO1xuICAgICAgICAkX2JyZWFrOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBNYXRoIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PVxuXG5cbi8vIFZhbGlkIENvbHVtbnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBjb2x1bW4gc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW5zKFxuICAkY29sdW1ucyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkY29sdW1ucyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGNvbHVtbnMpIHtcbiAgICAkcmV0dXJuOiAkY29sdW1ucztcbiAgfSBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAkZmFpbDogbnVsbDtcbiAgICBAZWFjaCAkY29sIGluICRjb2x1bW5zIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRjb2wpID09IG51bWJlciB7XG4gICAgICAgICRmYWlsOiAkZmFpbCBvciBpZih1bml0bGVzcygkY29sKSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGZhaWw6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgICRyZXR1cm46IGlmKCRmYWlsLCAkcmV0dXJuLCAkY29sdW1ucyk7XG4gIH1cblxuICBAaWYgJHJldHVybiAhPSAkY29sdW1ucyBhbmQgbm90KCRzaWxlbnQpIHtcbiAgICAkcmV0dXJuOiBudWxsO1xuICAgICR3YXJuOiAnJGNvbHVtbnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlciBvciBsaXN0IG9mIHVuaXRsZXNzIG51bWJlcnMuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRjb2x1bW5zfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cblxuLy8gVmFsaWQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGd1dHRlciBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWd1dHRlcnMoXG4gICRndXR0ZXJzLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRndXR0ZXJzKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkZ3V0dGVycykge1xuICAgICRyZXR1cm46ICRndXR0ZXJzO1xuICB9IEBlbHNlIGlmIG5vdCgkc2lsZW50KSB7XG4gICAgJHdhcm46ICckZ3V0dGVycyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skZ3V0dGVyc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQ29sdW1uIG1hdGhcbi8vID09PT09PT09PT09XG5cblxuLy8gSXMgU3ltbWV0cmljYWxcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgYSBncmlkIGlzIHN5bW1ldHJpY2FsLlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIGlzLXN5bW1ldHJpY2FsKFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaWYodHlwZS1vZigkY29sdW1ucykgPT0gbnVtYmVyLCAkY29sdW1ucywgbnVsbCk7XG59XG5cblxuLy8gU3VzeSBDb3VudFxuLy8gLS0tLS0tLS0tLVxuLy8gRmluZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gYSBnaXZlbiBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LWNvdW50KFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpIG9yIGxlbmd0aCgkY29sdW1ucyk7XG59XG5cblxuLy8gU3VzeSBTdW1cbi8vIC0tLS0tLS0tXG4vLyBGaW5kIHRoZSB0b3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeS1zdW0oXG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcblxuICAkc3ByZWFkOiBpZigkc3ByZWFkID09IHdpZGUsIDAsIGlmKCRzcHJlYWQgPT0gd2lkZXIsIDEsIC0xKSk7XG4gICRndXR0ZXItc3VtOiAoc3VzeS1jb3VudCgkY29sdW1ucykgKyAkc3ByZWFkKSAqICRndXR0ZXJzO1xuICAkY29sdW1uLXN1bTogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gIEBpZiBub3QoJGNvbHVtbi1zdW0pIHtcbiAgICBAZWFjaCAkY29sdW1uIGluICRjb2x1bW5zIHtcbiAgICAgICRjb2x1bW4tc3VtOiAoJGNvbHVtbi1zdW0gb3IgMCkgKyAkY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi1zdW0gKyAkZ3V0dGVyLXN1bTtcbn1cblxuXG4vLyBTdXN5IFNsaWNlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgb2YgY29sdW1ucyBhdCBhIGdpdmVuIGxvY2F0aW9uLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktc2xpY2UoXG4gICRzcGFuLFxuICAkbG9jYXRpb24sXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJHN1Yi1jb2x1bW5zOiAkc3BhbjtcblxuICBAaWYgbm90KGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSkge1xuICAgICRsb2NhdGlvbjogJGxvY2F0aW9uIG9yIDE7XG4gICAgJHN1Yi1jb2x1bW5zOiAoKTtcbiAgICBAZm9yICRpIGZyb20gJGxvY2F0aW9uIHRvICgkbG9jYXRpb24gKyAkc3Bhbikge1xuICAgICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRpKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3ViLWNvbHVtbnM7XG59XG5cblxuLy8gU3VzeVxuLy8gLS0tLVxuLy8gRmluZCB0aGUgc3VtIG9mIGEgY29sdW1uLXNwYW4uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbiAgICAgOiBmYWxzZSxcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgICAgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICAgICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAkc3Bhbjogc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG5cbiAgQHJldHVybiBzdXN5LXN1bSgkc3BhbiwgJGd1dHRlcnMsICRzcHJlYWQpO1xufVxuIiwiLy8gRmxvYXQgQVBJXG4vLyA9PT09PT09PT1cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5AaW1wb3J0IFwiZmxvYXQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiZmxvYXQvc3BhblwiO1xuQGltcG9ydCBcImZsb2F0L2VuZFwiO1xuQGltcG9ydCBcImZsb2F0L2lzb2xhdGVcIjtcbiIsIi8vIFNoYXJlZCBBUElcbi8vID09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnRcIjtcblxuQGltcG9ydCBcInNoYXJlZC9pbnNwZWN0XCI7XG5AaW1wb3J0IFwic2hhcmVkL291dHB1dFwiO1xuQGltcG9ydCBcInNoYXJlZC9kaXJlY3Rpb25cIjtcbkBpbXBvcnQgXCJzaGFyZWQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInNoYXJlZC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzaGFyZWQvbWFyZ2luc1wiO1xuQGltcG9ydCBcInNoYXJlZC9wYWRkaW5nXCI7XG5cblxuXG4iLCIvLyBTdXN5IEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnQvc3VwcG9ydFwiO1xuQGltcG9ydCBcInN1cHBvcnQvcHJlZml4XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9yZW1cIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2NsZWFyZml4XCI7XG4iLCIvLyBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IFN1cHBvcnQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogZmFsc2UsXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kLW9wdGlvbnM6IGZhbHNlLFxuICAgIGJyZWFrcG9pbnQ6IHRydWUsXG4gICAgYm94LXNpemluZzogdHJ1ZSxcbiAgICByZW06IHRydWUsXG4gICksXG4pKTtcblxuXG4vLyBTdXN5IFN1cHBvcnQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlbmQgcHJvcGVydHktdmFsdWUgcGFpcnMgdG8gdGhlIHByb3BlciBzdXBwb3J0IG1vZHVsZXMuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1zdXBwb3J0KFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gIC8vIEJhY2tncm91bmQgU3VwcG9ydFxuICBAaWYgJHByb3AgPT0gYmFja2dyb3VuZC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWltYWdlKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtc2l6ZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLXNpemUoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1vcmlnaW4ge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1jbGlwIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtY2xpcCgkdmFsKTtcbiAgfVxuXG4gIC8vIEJveC1TaXppbmcgU3VwcG9ydFxuICBAZWxzZSBpZiAkcHJvcCA9PSBib3gtc2l6aW5nIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJveC1zaXppbmcoJHZhbCk7XG4gIH1cblxuICAvLyBSZW0gU3VwcG9ydFxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJHByb3AsICR2YWwpO1xuICB9XG59XG5cblxuLy8gU3VzeSBTdXBwb3J0IFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3Igc3VwcG9ydCBvZiBhIGZlYXR1cmUuXG4vLyAtICRmZWF0dXJlICAgICAgIDogPHN0cmluZz5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyBcInJlbVwiIG9yIFwiYm94LXNpemluZ1wiXG4vLyAtICRyZXF1aXJlbWVudHMgIDogPG1hcD5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyAodmFyaWFibGU6IHJlbS13aXRoLXB4LWZhbGxiYWNrLCBtaXhpbjogcmVtKVxuLy8gLSAkd2FybiAgICAgICAgICA6IDxib29sPlxuQGZ1bmN0aW9uIHN1c3ktc3VwcG9ydChcbiAgJGZlYXR1cmUsXG4gICRyZXF1aXJlbWVudHM6ICgpLFxuICAkd2FybjogdHJ1ZVxuKSB7XG4gICRfc3VwcG9ydDogc3VzeS1nZXQodXNlLWN1c3RvbSAkZmVhdHVyZSk7XG5cbiAgQGlmICRfc3VwcG9ydCB7XG4gICAgJF9mYWlsOiBmYWxzZTtcblxuICAgIEBlYWNoICRfdHlwZSwgJF9yZXEgaW4gJHJlcXVpcmVtZW50cyB7XG4gICAgICBAZWFjaCAkX2kgaW4gJF9yZXEge1xuICAgICAgICAkX3Bhc3M6IGNhbGwodW5xdW90ZShcIiN7JF90eXBlfS1leGlzdHNcIiksICRfaSk7XG5cbiAgICAgICAgQGlmIG5vdCgkX3Bhc3MpIHtcbiAgICAgICAgICAkX2ZhaWw6IHRydWU7XG4gICAgICAgICAgQGlmICR3YXJuIHtcbiAgICAgICAgICAgIEB3YXJuIFwiWW91IHJlcXVlc3RlZCBjdXN0b20gc3VwcG9ydCBvZiAjeyRmZWF0dXJlfSwgYnV0IHRoZSAjeyRfaX0gI3skX3R5cGV9IGlzIG5vdCBhdmFpbGFibGUuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zdXBwb3J0OiBpZigkX2ZhaWwsIGZhbHNlLCAkX3N1cHBvcnQpO1xuICB9XG5cbiAgQHJldHVybiAkX3N1cHBvcnQ7XG59XG4iLCIvLyBTdXN5IFByZWZpeFxuLy8gPT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBzaW1wbGUgcHJlZml4ZWQgcHJvcGVydGllcy5cbi8vIC0gJHByb3AgICAgICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICAgICAgOiA8Y3NzIHZhbHVlPlxuLy8gLSBbJHByZWZpeF0gIDogPGJyb3dzZXIgcHJlZml4IGxpc3Q+XG5AbWl4aW4gc3VzeS1wcmVmaXgoXG4gICRwcm9wLFxuICAkdmFsLFxuICAkcHJlZml4OiBvZmZpY2lhbFxuKSB7XG4gIEBlYWNoICRmaXggaW4gJHByZWZpeCB7XG4gICAgJGZpeDogaWYoJGZpeCA9PSBvZmZpY2lhbCBvciBub3QoJGZpeCksICRwcm9wLCAnLSN7JGZpeH0tI3skcHJvcH0nKTtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkZml4LCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gQmFja2dyb3VuZCBQcm9wZXJ0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIEltYWdlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWltYWdlPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLWltYWdlLCAobWl4aW46IGJhY2tncm91bmQtaW1hZ2UpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS4uLik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgU2l6ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1zaXplPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1zaXplKFxuICAkc2l6ZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtc2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoJHNpemUpO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBPcmlnaW5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLW9yaWdpbj5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtb3JpZ2luKFxuICAkb3JpZ2luXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1vcmlnaW4pKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1vcmlnaW4oJG9yaWdpbik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkb3JpZ2luO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBDbGlwXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtY2xpcD5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtY2xpcChcbiAgJGNsaXBcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLWNsaXApKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1jbGlwKCRjbGlwKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcDtcbiAgfVxufVxuIiwiLy8gQm94IFNpemluZ1xuLy8gPT09PT09PT09PVxuXG4vLyBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJG1vZGVsOiA8Ym94LXNpemluZz5cbkBtaXhpbiBzdXN5LWJveC1zaXppbmcoXG4gICRtb2RlbDogY29udGVudC1ib3hcbikge1xuICBAaWYgJG1vZGVsIHtcbiAgICBAaWYgc3VzeS1zdXBwb3J0KGJveC1zaXppbmcsIChtaXhpbjogYm94LXNpemluZyksICR3YXJuOiBmYWxzZSkge1xuICAgICAgQGluY2x1ZGUgYm94LXNpemluZygkbW9kZWwpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByZWZpeDogKG1veiwgd2Via2l0LCBvZmZpY2lhbCk7XG4gICAgICBAaW5jbHVkZSBzdXN5LXByZWZpeChib3gtc2l6aW5nLCAkbW9kZWwsICRwcmVmaXgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRGVidWdnaW5nXG4vLyA9PT09PT09PT1cblxuLy8gU3VzeSBJbnNwZWN0XG4vLyAtLS0tLS0tLS0tLS1cbi8vIE91dHB1dCBhcmd1bWVudHMgcGFzc2VkIHRvIGEgaW5zcGVjdC5cbi8vIC0gJG1peGluICA6IDxzdXN5IG1peGluPlxuLy8gLSAkaW5zcGVjICAgOiA8bWl4aW4gYXJndW1lbnRzPlxuXG5AbWl4aW4gc3VzeS1pbnNwZWN0KFxuICAkbWl4aW4sXG4gICRpbnNwZWN0XG4pIHtcbiAgJHNob3c6IGZhbHNlO1xuXG4gIEBlYWNoICRpdGVtIGluICRpbnNwZWN0IHtcbiAgICBAaWYgaW5kZXgoJGl0ZW0sIGluc3BlY3QpIHtcbiAgICAgICRzaG93OiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2hvdyBvciBzdXN5LWdldChkZWJ1ZyBpbnNwZWN0KSB7XG4gICAgLXN1c3ktI3skbWl4aW59OiBpbnNwZWN0KCRpbnNwZWN0KTtcbiAgfVxufVxuIiwiLy8gT3V0cHV0XG4vLyA9PT09PT1cblxuLy8gT3V0cHV0XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBDU1Mgd2l0aCBwcm9wZXIgYnJvd3NlciBzdXBwb3J0LlxuLy8gLSAkc3R5bGVzICA6IDxtYXAgb2YgY3NzIHByb3BlcnR5LXZhbHVlIHBhaXJzPlxuQG1peGluIG91dHB1dChcbiAgJHN0eWxlc1xuKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsIGluICRzdHlsZXMge1xuICAgIEBpbmNsdWRlIHN1c3ktc3VwcG9ydCgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIERpcmVjdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEZsb3cgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgZmxvdzogbHRyLFxuKSk7XG5cbi8vIEdldCBEaXJlY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIG9yICd0bycgZGlyZWN0aW9uIG9mIGEgbHRyIG9yIHJ0bCBmbG93LlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuLy8gLSBbJGtleV0gICA6IGZyb20gfCB0b1xuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGtleTogZnJvbVxuKSB7XG4gICRyZXR1cm46IGlmKCRmbG93ID09IHJ0bCwgKGZyb206IHJpZ2h0LCB0bzogbGVmdCksIChmcm9tOiBsZWZ0LCB0bzogcmlnaHQpKTtcbiAgQHJldHVybiBtYXAtZ2V0KCRyZXR1cm4sICRrZXkpO1xufVxuXG4vLyBUb1xuLy8gLS1cbi8vIFJldHVybiB0aGUgJ3RvJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gdG8oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgdG8pO1xufVxuXG4vLyBGcm9tXG4vLyAtLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gZnJvbShcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCBmcm9tKTtcbn1cbiIsIi8vIEdyaWQgQmFja2dyb3VuZCBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cbi8vIC0gU3ViLXBpeGVsIHJvdW5kaW5nIGNhbiBsZWFkIHRvIHNldmVyYWwgcGl4ZWxzIHZhcmlhdGlvbiBiZXR3ZWVuIGJyb3dzZXJzLlxuXG4vLyBHcmlkIEJhY2tncm91bmQgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRpbWFnZTogYmFja2dyb3VuZC1pbWFnZVxuLy8gLSAkc2l6ZTogYmFja2dyb3VuZC1zaXplXG4vLyAtICRjbGlwOiBiYWNrZ3JvdW5kLWNsaXBcbi8vIC0gWyRmbG93XTogbHRyIHwgcnRsXG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkLW91dHB1dCAoXG4gICRpbWFnZSxcbiAgJHNpemU6IG51bGwsXG4gICRjbGlwOiBudWxsLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlLFxuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemUsXG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRjbGlwLFxuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogZnJvbSgkZmxvdykgdG9wLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFNoYXJlZCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICAgICAgICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGNvbnRhaW5lci1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICAkb3V0cHV0OiAoXG4gICAgI3skcHJvcGVydHl9OiAkd2lkdGggb3IgMTAwJSxcbiAgICBtYXJnaW4tbGVmdDogbnRoKCRqdXN0aWZ5LCAxKSxcbiAgICBtYXJnaW4tcmlnaHQ6IG50aCgkanVzdGlmeSwgMiksXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gTWFyZ2lucyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIE1hcmdpbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gbWFyZ2luLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3skZnJvbX06ICRiZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFBhZGRpbmcgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBQYWRkaW5nIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gcGFkZGluZy1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgQ29udGFpbmVyXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBmbG9hdC1jb250YWluZXIoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICBAaW5jbHVkZSBzdXN5LWNsZWFyZml4O1xuICBAaW5jbHVkZSBjb250YWluZXItb3V0cHV0KCR3aWR0aCwgJGp1c3RpZnksICRwcm9wZXJ0eSk7XG59XG4iLCIvLyBGbG9hdCBTcGFuIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgU3BhbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICR3aWR0aCAgICAgICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvYXRdICAgICAgICAgICA6IGZyb20gfCB0b1xuLy8gLSBbJG1hcmdpbi1iZWZvcmVdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJG1hcmdpbi1hZnRlcl0gICAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYmVmb3JlXSAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYWZ0ZXJdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICAgICAgICAgICAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1zcGFuLW91dHB1dChcbiAgJHdpZHRoLFxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb20sXG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbCxcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsLFxuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGwsXG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbCxcbiAgJGZsb3cgICAgICAgICAgICAgOiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0byAgICAgOiB0bygkZmxvdyk7XG4gICRmcm9tICAgOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGg6ICR3aWR0aCxcbiAgICBmbG9hdDogaWYoJGZsb2F0ID09IHRvLCAkdG8sIG51bGwpIG9yIGlmKCRmbG9hdCA9PSBmcm9tLCAkZnJvbSwgbnVsbCksXG4gICAgbWFyZ2luLSN7JGZyb219OiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJHBhZGRpbmctYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgRW5kcyBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRW5kIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgbGFzdC1mbG93OiB0byxcbikpO1xuXG4vLyBGbG9hdCBMYXN0XG4vLyAtLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtbGFzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAkbGFzdC1mbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBsYXN0LWZsb3cpLFxuICAkbWFyZ2luOiAwXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiBpZigkbGFzdC1mbG93ID09IHRvLCAkdG8sIG51bGwpLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4sXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG4vLyBGbG9hdCBGaXJzdFxuLy8gLS0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1maXJzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0je2Zyb20oJGZsb3cpfTogMCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBJc29sYXRpb24gQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIElzb2xhdGUgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkcHVzaCAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gaXNvbGF0ZS1vdXRwdXQoXG4gICRwdXNoLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogJGZyb20sXG4gICAgbWFyZ2luLSN7JGZyb219OiAkcHVzaCxcbiAgICBtYXJnaW4tI3skdG99OiAtMTAwJSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTdXN5IFNldHRpbmdzXG4vLyA9PT09PT09PT09PT09XG5cbi8vIFN1c3kgTGFuZ3VhZ2UgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogZmx1aWQsXG4gIG91dHB1dDogZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogY2VudGVyLFxuICBndXR0ZXItcG9zaXRpb246IGFmdGVyLFxuICBnbG9iYWwtYm94LXNpemluZzogY29udGVudC1ib3gsXG4gIGRlYnVnOiAoXG4gICAgaW1hZ2U6IGhpZGUsXG4gICAgY29sb3I6IHJnYmEoIzY2ZiwgLjI1KSxcbiAgICBvdXRwdXQ6IGJhY2tncm91bmQsXG4gICAgdG9nZ2xlOiB0b3AgcmlnaHQsXG4gICksXG4pKTtcblxuXG4vLyBWYWxpZCBLZXl3b3JkIFZhbHVlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURTogRE9OVCdUIFRPVUNIXG4kc3VzeS1rZXl3b3JkczogKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IHN0YXRpYyBmbHVpZCxcbiAgb3V0cHV0OiBpc29sYXRlIGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGxlZnQgY2VudGVyIHJpZ2h0LFxuICBmbG93OiBsdHIgcnRsLFxuICBndXR0ZXItcG9zaXRpb246IGJlZm9yZSBhZnRlciBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYyxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveCBjb250ZW50LWJveCxcbiAgc3BhbjogZnVsbCxcbiAgZWRnZTogZmlyc3QgYWxwaGEgbGFzdCBvbWVnYSBmdWxsLFxuICBzcHJlYWQ6IG5hcnJvdyB3aWRlIHdpZGVyLFxuICBndXR0ZXItb3ZlcnJpZGU6IG5vLWd1dHRlcnMgbm8tZ3V0dGVyLFxuICByb2xlOiBuZXN0LFxuICBjbGVhcjogYnJlYWsgbm9icmVhayxcbiAgZGVidWcgaW1hZ2U6IHNob3cgaGlkZSBzaG93LWNvbHVtbnMgc2hvdy1iYXNlbGluZSxcbiAgZGVidWcgb3V0cHV0OiBiYWNrZ3JvdW5kIG92ZXJsYXksXG4pO1xuXG5cbi8vIFBhcnNlIFN1c3kgS2V5d29yZHMgYW5kIE1hcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zZXR0aW5ncyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBzdHJpbmcge1xuICAgICAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHN1c3kta2V5d29yZHMge1xuICAgICAgICAgIEBpZiBpbmRleCgkdmFsdWUsICRpdGVtKSB7XG4gICAgICAgICAgICAkX2tleS12YWx1ZTogYXBwZW5kKCRrZXksICRpdGVtKTtcbiAgICAgICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLXNldCgkX3JldHVybiwgJF9rZXktdmFsdWUuLi4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgLy8gbWFwc1xuICAgICAgfSBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBtYXAge1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBDb2x1bW5zICYgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1sYXlvdXQoXG4gICRzaG9ydFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcbiAgJF9jb2x1bW5zOiAoKTtcbiAgJF9ndXR0ZXJzOiBudWxsO1xuXG4gIEBpZiBub3QodW5pdGxlc3MobnRoKG50aCgkc2hvcnQsIDEpLCAxKSkpIHtcbiAgICAkX2d1dHRlcnM6IG50aCgkc2hvcnQsIDEpO1xuICB9IEBlbHNlIHtcbiAgICAkX2NvbHVtbnM6IChjb2x1bW5zOiBudGgoJHNob3J0LCAxKSk7XG4gICAgJF9ndXR0ZXJzOiBpZihsZW5ndGgoJHNob3J0KSA+IDEsIG50aCgkc2hvcnQsIDIpLCAkX2d1dHRlcnMpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJF9ndXR0ZXJzKSA9PSBsaXN0IGFuZCBsZW5ndGgoJF9ndXR0ZXJzKSA+IDAge1xuICAgICRfZ3V0dGVyczogKFxuICAgICAgZ3V0dGVyczogbnRoKCRfZ3V0dGVycywgMikgLyBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICAgIGNvbHVtbi13aWR0aDogbnRoKCRfZ3V0dGVycywgMSksXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9ndXR0ZXJzOiBpZigkX2d1dHRlcnMsIChndXR0ZXJzOiAkX2d1dHRlcnMpLCAoKSk7XG4gIH1cblxuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2NvbHVtbnMpO1xuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2d1dHRlcnMpO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3JpZC9Db250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ncmlkKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46IHBhcnNlLXNldHRpbmdzKCRzaG9ydCk7XG4gICRfbGF5b3V0OiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIG51bWJlciBvciBsaXN0XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIG9yIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qge1xuICAgICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCBvciB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAgICRfbGF5b3V0OiBhcHBlbmQoJF9sYXlvdXQsICRpdGVtKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNvbnRhaW5lcjogJGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfbGF5b3V0OiBpZihsZW5ndGgoJF9sYXlvdXQpID4gMCwgcGFyc2UtbGF5b3V0KCRfbGF5b3V0KSwgJF9sYXlvdXQpO1xuICB9XG5cbiAgQHJldHVybiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfbGF5b3V0KTtcbn1cblxuXG4vLyBQYXJzZSBTcGFuXG4vLyAtLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc3BhbihcbiAgJHNob3J0LFxuICAka2V5OiBzcGFuXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICAkX2F0OiBpbmRleCgkc2hvcnQsIGF0KTtcblxuICAgIEBpZiAkX2F0IHtcbiAgICAgICRfbG9jaTogJF9hdCArIDE7XG4gICAgICAkX2xvY2F0aW9uOiBudGgoJHNob3J0LCAkX2xvY2kpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGxvY2F0aW9uOiAkX2xvY2F0aW9uKSk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2F0LCBudWxsKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfbG9jaSwgbnVsbCk7XG4gICAgfVxuXG4gICAgJF9pOiAxO1xuICAgICRfc3BhbjogKCk7XG5cbiAgICBAd2hpbGUgJF9pIDw9IGxlbmd0aCgkc2hvcnQpIHtcbiAgICAgICRfdGhpczogbnRoKCRzaG9ydCwgJF9pKTtcblxuICAgICAgQGlmIHR5cGUtb2YoJF90aGlzKSA9PSBudW1iZXIge1xuICAgICAgICAkX3NwYW46IGFwcGVuZCgkX3NwYW4sICRfdGhpcyk7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICB9IEBlbHNlIGlmICRfdGhpcyA9PSBvZiB7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICAgICRfaTogbGVuZ3RoKCRzaG9ydCkgKyAxO1xuICAgICAgfVxuXG4gICAgICAkX2k6ICRfaSArIDE7XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkX3NwYW4pID4gMCB7XG4gICAgICAkX3NwYW46IGlmKGxlbmd0aCgkX3NwYW4pID09IDEsIG50aCgkX3NwYW4sIDEpLCAkX3NwYW4pO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRrZXk6ICRfc3BhbikpO1xuICAgIH1cblxuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIHBhcnNlLWdyaWQoJHNob3J0KSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ndXR0ZXJzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9ndXR0ZXJzOiBwYXJzZS1zcGFuKCRzaG9ydCwgZ3V0dGVyLW92ZXJyaWRlKTtcbiAgJF9zcGFuOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRfZ3V0dGVycyk7XG5cbiAgQGlmICRfc3BhbiBhbmQgbm90KG1hcC1nZXQoJF9ndXR0ZXJzLCBjb2x1bW5zKSkge1xuICAgICRfY29udGV4dDogKCk7XG4gICAgJF9uZXc6ICgpO1xuXG4gICAgQGVhY2ggJGl0ZW0gaW4gJF9zcGFuIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICRfY29udGV4dDogYXBwZW5kKCRfY29udGV4dCwgJGl0ZW0pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRfbmV3OiBhcHBlbmQoJF9uZXcsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2NvbnRleHQ6IHBhcnNlLWdyaWQoJF9jb250ZXh0KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAwLCBudWxsLCAkX25ldyk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMSwgbnRoKCRfbmV3LCAxKSwgJF9uZXcpO1xuICAgICRfbmV3OiAoZ3V0dGVyLW92ZXJyaWRlOiBpZigkX25ldyAhPSAkX3NwYW4sICRfbmV3LCAkX3NwYW4pKTtcblxuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9uZXcpO1xuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9jb250ZXh0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuIiwiLy8gVmFsaWRhdGlvblxuLy8gPT09PT09PT09PVxuXG5cbi8vIFZhbGlkYXRlIENvbHVtbiBNYXRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbi1tYXRoKFxuICAkbWF0aCxcbiAgJGNvbHVtbi13aWR0aFxuKSB7XG4gIEBpZiAkbWF0aCA9PSBzdGF0aWMgYW5kIG5vdCgkY29sdW1uLXdpZHRoKSB7XG4gICAgQGVycm9yICdTdGF0aWMgbWF0aCByZXF1aXJlcyBhIHZhbGlkIGNvbHVtbi13aWR0aCBzZXR0aW5nLic7XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4td2lkdGg7XG59XG4iLCIvLyBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gU2V0IGEgbmV3IGxheW91dCB1c2luZyBhIHNob3J0aGFuZFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIGxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGF5b3V0LCAkaW5zcGVjdCk7XG59XG5cblxuLy8gVXNlIEdyaWRcbi8vIC0tLS0tLS0tXG4vLyBVc2UgYW4gYXJiaXRyYXJ5IGxheW91dCBmb3IgYSBzZWN0aW9uIG9mIGNvZGVcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiB3aXRoLWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRvbGQgICAgICA6ICRzdXN5O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHdpdGgtbGF5b3V0LCAkaW5zcGVjdCk7XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3k6ICRvbGQgIWdsb2JhbDtcbn1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIGEgcGFyc2VkIGxheW91dCBtYXAgYmFzZWQgb24gc2hvcnRoYW5kIHN5bnRheFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gbGF5b3V0KFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbn1cblxuXG4vLyBHZXQgTGF5b3V0XG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuZXcgbGF5b3V0IGJhc2VkIG9uIGN1cnJlbnQgYW5kIGdpdmVuIHNldHRpbmdzXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AZnVuY3Rpb24gX2dldC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkbGF5b3V0OiBsYXlvdXQoJGxheW91dCk7XG4gIEByZXR1cm4gaWYoJGNsZWFuLCAkbGF5b3V0LCBfc3VzeS1kZWVwLW1lcmdlKCRzdXN5LCAkbGF5b3V0KSk7XG59XG4iLCIvLyBTdXN5IEJveCBTaXppbmdcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgYm94IG1vZGVsIGdsb2JhbGx5IG9uIGFsbCBlbGVtZW50cy5cbi8vIC0gWyRib3hdOiBib3JkZXItYm94IHwgY29udGVudC1ib3hcbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gZ2xvYmFsLWJveC1zaXppbmcoXG4gICRib3g6IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSxcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3Q6ICRib3g7XG5cbiAgQGlmICRpbmhlcml0IHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgaHRtbCB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gICAgICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG4gICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdsb2JhbC1ib3gtc2l6aW5nLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHVwZGF0ZS1ib3gtbW9kZWwoJGJveCk7XG59XG5cbi8vIEJvcmRlciBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gQSBsZWdhY3kgc2hvcnRjdXQuLi5cbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gYm9yZGVyLWJveC1zaXppbmcoXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGdsb2JhbC1ib3gtc2l6aW5nKGJvcmRlci1ib3gsICRpbmhlcml0KTtcbn1cblxuLy8gVXBkYXRlIEJveCBNb2RlbFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVXBkYXRlcyBnbG9iYWwgYm94IG1vZGVsIHNldHRpbmdcbkBtaXhpbiB1cGRhdGUtYm94LW1vZGVsKFxuICAkYm94XG4pIHtcbiAgQGlmICRib3ggIT0gc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpIHtcbiAgQGluY2x1ZGUgc3VzeS1zZXQoZ2xvYmFsLWJveC1zaXppbmcsICRib3gpO1xuICB9XG59XG4iLCIvLyBDb250ZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gTmVzdGVkIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgZ3JpZCBmb3IgbmVzdGVkIGNvbnRleHQuXG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGNvbnRleHQgICAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJHNwYW4gICAgICAgOiBzdXN5LWdldChzcGFuLCAkY29udGV4dCk7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRjb250ZXh0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbn1cblxuLy8gTmVzdGVkIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBVc2UgYSBzdWJzZXQgZ3JpZCBmb3IgYSBuZXN0ZWQgY29udGV4dFxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG4vLyAtIEBjb250ZW50ICAgOiA8Y29udGVudD5cbkBtaXhpbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkb2xkICAgICAgOiBzdXN5LWdldChjb2x1bW5zKTtcbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogbmVzdGVkKCRjb250ZXh0KSkpICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KG5lc3RlZCwgJGluc3BlY3QpO1xuICBAY29udGVudDtcblxuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiAkb2xkKSkgIWdsb2JhbDtcbn1cbiIsIi8vIEJhY2tncm91bmQgR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiBmYWxzZTtcblxuXG4vLyBTaG93IEdyaWQvc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFNob3cgZ3JpZCBvbiBhbnkgZWxlbWVudCB1c2luZyBlaXRoZXIgYmFja2dyb3VuZCBvciBvdmVybGF5LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBzaG93LWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0OiAkZ3JpZDtcbiAgJF9vdXRwdXQ6IGRlYnVnLWdldChvdXRwdXQsICRncmlkKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc2hvdy1ncmlkLCAkaW5zcGVjdCk7XG4gIEBpZiAkX291dHB1dCA9PSBvdmVybGF5IGFuZCBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpICE9IGhpZGUge1xuICAgIEBpbmNsdWRlIG92ZXJsYXktZ3JpZCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gIH1cbn1cblxuQG1peGluIHNob3ctZ3JpZHMoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkZ3JpZCk7XG59XG5cbi8vIEJhY2tncm91bmQgR3JpZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTaG93IGEgZ3JpZCBiYWNrZ3JvdW5kIG9uIGFueSBlbGVtZW50LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRncmlkO1xuICAkX291dHB1dCAgOiBnZXQtYmFja2dyb3VuZCgkZ3JpZCk7XG5cbiAgQGlmIGxlbmd0aCgkX291dHB1dCkgPiAwIHtcbiAgICAkX2Zsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKTtcblxuICAgICRfaW1hZ2U6ICgpO1xuICAgIEBlYWNoICRuYW1lLCAkbGF5ZXIgaW4gbWFwLWdldCgkX291dHB1dCwgaW1hZ2UpIHtcbiAgICAgICRfZGlyZWN0aW9uOiBpZigkbmFtZSA9PSBiYXNlbGluZSwgdG8gYm90dG9tLCB0byB0bygkX2Zsb3cpKTtcbiAgICAgICRfaW1hZ2U6IGFwcGVuZCgkX2ltYWdlLCBsaW5lYXItZ3JhZGllbnQoJF9kaXJlY3Rpb24sICRsYXllciksIGNvbW1hKTtcbiAgICB9XG4gICAgJF9vdXRwdXQ6IG1hcC1tZXJnZSgkX291dHB1dCwgKGltYWdlOiAkX2ltYWdlKSk7XG5cbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmFja2dyb3VuZC1ncmlkLCAkaW5zcGVjdCk7XG4gIH1cbn1cblxuXG4vLyBPdmVybGF5IEdyaWRcbi8vIC0tLS0tLS0tLS0tLVxuLy8gR2VuZXJhdGUgYW4gaWNvbiB0byB0cmlnZ2VyIGdyaWQtb3ZlcmxheXMgb24gYW55IGdpdmVuIGVsZW1lbnRzLlxuLy8gJGdyaWRzLi4uICA6IDxzZWxlY3Rvcj4gWzxzZXR0aW5ncz5dIFssIDxzZWxlY3Rvcj5dKlxuQG1peGluIG92ZXJsYXktZ3JpZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpZiBub3QoJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzKSB7XG4gICAgQGF0LXJvb3QgaGVhZCB7IEBpbmNsdWRlIG92ZXJsYXktaGVhZCgkZ3JpZCk7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmJlZm9yZSB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlcjsgfVxuICAgIEBhdC1yb290IGhlYWQ6aG92ZXIgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXItaG92ZXI7IH1cbiAgICAkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIGhlYWQ6aG92ZXIgfiAmLFxuICBoZWFkOmhvdmVyIH4gYm9keSAmIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1vdmVybGF5LWJhc2U7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXIge1xuICBjb250ZW50OiBcInx8fFwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGZvbnQ6IHtcbiAgICBmYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgc2l6ZTogMTZweDtcbiAgICB3ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyIEhvdmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjUpO1xuICBjb2xvcjogcmVkO1xufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IEhlYWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDxoZWFkPiBzdHlsZXMgdG8gY3JlYXRlIGdyaWQgb3ZlcmxheSB0b2dnbGVcbkBtaXhpbiBvdmVybGF5LWhlYWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkX3RvZ2dsZTogZGVidWctZ2V0KHRvZ2dsZSwgJGdyaWQpO1xuICAkX2hvcno6IG51bGw7XG4gICRfdmVydDogbnVsbDtcblxuICBAZWFjaCAkc2lkZSBpbiAkX3RvZ2dsZSB7XG4gICAgJF9ob3J6OiBpZigkc2lkZSA9PSBsZWZ0IG9yICRzaWRlID09IHJpZ2h0LCAkc2lkZSwgJF9ob3J6KTtcbiAgICAkX3ZlcnQ6IGlmKCRzaWRlID09IHRvcCBvciAkc2lkZSA9PSBib3R0b20sICRzaWRlLCAkX3ZlcnQpO1xuICB9XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgI3skX2hvcnp9OiAxMHB4O1xuICAjeyRfdmVydH06IDEwcHg7XG4gIHotaW5kZXg6IDk5OTtcbiAgY29sb3I6ICMzMzM7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC4yNSk7XG59XG5cblxuLy8gW1ByaXZhdGVdIEdyaWQgT3ZlcmxheSBCYXNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJhc2Ugc3R5bGVzIGZvciBnZW5lcmF0aW5nIGEgZ3JpZCBvdmVybGF5XG5AbWl4aW4gZ3JpZC1vdmVybGF5LWJhc2UoKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBjb250ZW50OiBcIiBcIjtcbiAgei1pbmRleDogOTk4O1xufVxuXG5cbi8vIEdldCBTeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1zeW0oXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgICAgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfZ3V0dGVycyAgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRncmlkKTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkZ3JpZCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRncmlkKTtcblxuICAkX2NvbG9yICAgICAgICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX3RyYW5zICAgICAgICAgOiB0cmFuc3BhcmVudDtcbiAgJF9saWdodCAgICAgICAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuXG4gICRfZW5kICAgICAgICAgICA6IDEgKyAkX2d1dHRlcnM7XG4gICRfYWZ0ZXIgICAgICAgICA6IHBlcmNlbnRhZ2UoMS8kX2VuZCk7XG4gICRfc3RvcHMgICAgICAgICA6ICgpO1xuICAkX3NpemUgICAgICAgICAgOiBzcGFuKDEgJGdyaWQgd2lkZSk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQ7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3NwbGl0OiAkX2d1dHRlcnMvMjtcbiAgICAkX2JlZm9yZTogcGVyY2VudGFnZSgkX3NwbGl0LyRfZW5kKTtcbiAgICAkX2FmdGVyOiBwZXJjZW50YWdlKCgxICsgJF9zcGxpdCkvJF9lbmQpO1xuICAgICRfc3RvcHM6ICRfdHJhbnMgJF9iZWZvcmUsICRfY29sb3IgJF9iZWZvcmUsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfVxuXG4gIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAkX3NpemU6IHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpICogJF9lbmQ7XG4gIH1cblxuICAkX291dHB1dDogKFxuICAgIGltYWdlOiAoY29sdW1uczogJF9zdG9wcyksXG4gICAgc2l6ZTogJF9zaXplLFxuICApO1xuXG4gIEByZXR1cm4gJF9vdXRwdXQ7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBJbnNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0taW5zaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIFNwbGl0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tc3BsaXQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkc3RhcnQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcblxuICAgICRfZW5kOiAkc3RhcnQgKyBzcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkX2VuZCwgY29tbWEpO1xuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBPdXRzaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1vdXRzaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3RyYW5zICAgOiB0cmFuc3BhcmVudDtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRndXR0ZXI6IGdldC1zcGFuLXdpZHRoKGZpcnN0ICRsb2NhdGlvbiAkZ3JpZCk7XG5cbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcblxuICAgICAgJGd1dHRlcjogJF9saWdodCAkZ3V0dGVyLCAkX3RyYW5zICRndXR0ZXIsICRfdHJhbnMgJF9lbmQ7XG4gICAgICAkdGhpcy1zdG9wOiBqb2luKCR0aGlzLXN0b3AsICRndXR0ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLWFzeW0oXG4gICRncmlkXG4pIHtcbiAgJF9zdG9wczogKCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLWluc2lkZSgkZ3JpZCk7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1zcGxpdCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLW91dHNpZGUoJGdyaWQpO1xuICB9XG5cbiAgQHJldHVybiAoaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSk7XG59XG5cblxuLy8gR2V0IEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfc2hvdyAgICA6IHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCk7XG4gICRfcmV0dXJuICA6ICgpO1xuXG4gIEBpZiAkX3Nob3cgYW5kICRfc2hvdyAhPSAnaGlkZScge1xuICAgICRfY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgJF9zeW06IGlzLXN5bW1ldHJpY2FsKCRfY29sdW1ucyk7XG4gICAgICAkX3JldHVybjogaWYoJF9zeW0sIGdldC1iYWNrZ3JvdW5kLXN5bSgkZ3JpZCksIGdldC1iYWNrZ3JvdW5kLWFzeW0oJGdyaWQpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBjb250ZW50LWJveCkpO1xuICAgIH1cblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctY29sdW1ucydcbiAgICAgIGFuZCBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKGJhc2UtbGluZS1oZWlnaHQpXG4gICAgICBhbmQgdHlwZS1vZigkYmFzZS1saW5lLWhlaWdodCkgPT0gJ251bWJlcidcbiAgICAgIGFuZCBub3QgdW5pdGxlc3MoJGJhc2UtbGluZS1oZWlnaHQpIHtcbiAgICAgICRfY29sb3I6IHZhcmlhYmxlLWV4aXN0cygnZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yJyk7XG4gICAgICAkX2NvbG9yOiBpZigkX2NvbG9yLCAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yLCAjMDAwKTtcblxuICAgICAgJF9pbWFnZTogbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpO1xuICAgICAgJF9zaXplOiBtYXAtZ2V0KCRfcmV0dXJuLCBzaXplKTtcbiAgICAgICRfYmFzZWxpbmU6IChiYXNlbGluZTogKCRfY29sb3IgMXB4LCB0cmFuc3BhcmVudCAxcHgpKTtcbiAgICAgICRfYmFzZWxpbmUtc2l6ZTogMTAwJSAkYmFzZS1saW5lLWhlaWdodDtcblxuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKFxuICAgICAgICBpbWFnZTogaWYoJF9pbWFnZSwgbWFwLW1lcmdlKCRfaW1hZ2UsICRfYmFzZWxpbmUpLCAkX2Jhc2VsaW5lKSxcbiAgICAgICAgc2l6ZTogaWYoJF9zaXplLCAoJF9zaXplLCAkX2Jhc2VsaW5lLXNpemUpLCAkX2Jhc2VsaW5lLXNpemUpLFxuICAgICAgKSk7XG5cbiAgICAgIEBpZiAkX3Nob3cgPT0gJ3Nob3cnIHtcbiAgICAgICAgJF9jbGlwOiBtYXAtZ2V0KCRfcmV0dXJuLCBjbGlwKTtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGpvaW4oJF9jbGlwLCBib3JkZXItYm94LCBjb21tYSkpKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRfc2hvdyA9PSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgQHdhcm4gJ1BsZWFzZSBwcm92aWRlIGEgJGJhc2UtbGluZS1oZWlnaHQgd2l0aCB0aGUgZGVzaXJlZCBoZWlnaHQgYW5kIHVuaXRzJztcbiAgICB9XG4gIH1cblxuICBAaWYgbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIEdldCBEZWJ1Z1xuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgZGVidWcgc2V0dGluZ1xuLy8gLSAka2V5OiA8c2V0dGluZz5cbkBmdW5jdGlvbiBkZWJ1Zy1nZXQoXG4gICRrZXksXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRrZXk6IGpvaW4oZGVidWcsICRrZXksIHNwYWNlKTtcbiAgQHJldHVybiBzdXN5LWdldCgka2V5LCAkZ3JpZCk7XG59XG4iLCIvLyBDb250YWluZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgY29udGFpbmVyIGVsZW1lbnRcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgICAgOiAkbGF5b3V0O1xuICAkbGF5b3V0ICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG5cbiAgJF93aWR0aCAgICAgOiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xuICAkX2p1c3RpZnkgICA6IHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihzdXN5LWdldChjb250YWluZXItcG9zaXRpb24sICRsYXlvdXQpKTtcbiAgJF9wcm9wZXJ0eSAgOiBpZihzdXN5LWdldChtYXRoLCAkbGF5b3V0KSA9PSBzdGF0aWMsIHdpZHRoLCBtYXgtd2lkdGgpO1xuXG4gICRfYm94ICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJGxheW91dCk7XG5cbiAgQGlmICRfYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRfYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoY29udGFpbmVyLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGZsb2F0LWNvbnRhaW5lcigkX3dpZHRoLCAkX2p1c3RpZnksICRfcHJvcGVydHkpO1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGxheW91dCk7XG59XG5cbi8vIENvbnRhaW5lciBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICBAcmV0dXJuIGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG59XG5cbi8vIEdldCBDb250YWluZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSB0aGUgY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XTogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1jb250YWluZXItd2lkdGgoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dCAgICAgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF93aWR0aCAgICAgICAgIDogc3VzeS1nZXQoY29udGFpbmVyLCAkbGF5b3V0KTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkbGF5b3V0KTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGxheW91dCk7XG5cbiAgQGlmIG5vdCgkX3dpZHRoKSBvciAkX3dpZHRoID09IGF1dG8ge1xuICAgIEBpZiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSB7XG4gICAgICAkX2NvbHVtbnMgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRsYXlvdXQpO1xuICAgICAgJF9ndXR0ZXJzICAgOiBzdXN5LWdldChndXR0ZXJzLCAkbGF5b3V0KTtcbiAgICAgICRfc3ByZWFkICAgIDogaWYoaXMtc3BsaXQoJGxheW91dCksIHdpZGUsIG5hcnJvdyk7XG4gICAgICAkX3dpZHRoICAgICA6IHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkgKiAkX2NvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3dpZHRoO1xufVxuXG4vLyBQYXJzZSBDb250YWluZXIgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyc2UgdGhlICRjb250YWluZXItcG9zaXRpb24gaW50byBtYXJnaW4gdmFsdWVzLlxuLy8gLSBbJGp1c3RpZnldICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCA8bGVuZ3RoPiBbPGxlbmd0aD5dXG5AZnVuY3Rpb24gcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKFxuICAkanVzdGlmeTogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgY29udGFpbmVyLXBvc2l0aW9uKVxuKSB7XG4gICRfcmV0dXJuOiBpZigkanVzdGlmeSA9PSBsZWZ0LCAwLCBhdXRvKSBpZigkanVzdGlmeSA9PSByaWdodCwgMCwgYXV0byk7XG5cbiAgQGlmIG5vdChpbmRleChsZWZ0IHJpZ2h0IGNlbnRlciwgJGp1c3RpZnkpKSB7XG4gICAgJF9yZXR1cm46IG50aCgkanVzdGlmeSwgMSk7XG4gICAgJF9yZXR1cm46ICRfcmV0dXJuIGlmKGxlbmd0aCgkanVzdGlmeSkgPiAxLCBudGgoJGp1c3RpZnksIDIpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU3BhbiBTeW50YXhcbi8vID09PT09PT09PT09XG5cbi8vIFNwYW4gW21peGluXVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBzcGFubmluZyBlbGVtZW50IHVzaW5nIHNob3J0aGFuZCBzeW50YXguXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbjogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRvdXRwdXQ6IHNwYW4tbWF0aCgkc3Bhbik7XG4gICRuZXN0aW5nOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjbGVhcjogc3VzeS1nZXQoY2xlYXIsICRzcGFuKTtcblxuICAkYm94OiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRjb250ZW50LWJveDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuICAkYm94OiAkYm94IG9yIGlmKGlzLWluc2lkZSgkc3BhbikgYW5kICRjb250ZW50LWJveCwgYm9yZGVyLWJveCwgbnVsbCk7XG5cbiAgQGlmICRjbGVhciA9PSBicmVhayB7XG4gICAgQGluY2x1ZGUgYnJlYWs7XG4gIH0gQGVsc2UgaWYgJGNsZWFyID09IG5vYnJlYWsge1xuICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3BhbiwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTtcbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgQGlmIHZhbGlkLWNvbHVtbnMoJG5lc3RpbmcsIHNpbGVudCkge1xuICAgIEBpbmNsdWRlIG5lc3RlZCgkc3BhbikgeyBAY29udGVudDsgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTcGFuIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIHNwYW4uXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQGZ1bmN0aW9uIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgQHJldHVybiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG59XG5cbi8vIFNwYW4gTWF0aFxuLy8gLS0tLS0tLS0tXG4vLyBHZXQgYWxsIHRoZSBzcGFuIHJlc3VsdHMuXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIHNwYW4tbWF0aChcbiAgJHNwYW5cbikge1xuICAkbmVzdCAgICAgICAgICAgICA6IGlmKHN1c3ktZ2V0KHJvbGUsICRzcGFuKSA9PSBuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRzcGxpdC1uZXN0ICAgICAgIDogaWYoaXMtc3BsaXQoJHNwYW4pIGFuZCAkbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZWRnZSAgICAgICAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgICAgICAgOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbTtcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsO1xuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGw7XG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbDtcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aWR0aHNcbiAgJHNwcmVhZDogaW5kZXgobWFwLXZhbHVlcygkc3BhbiksIHNwcmVhZCk7XG4gICRzcGFuOiBpZigkc3BsaXQtbmVzdCBhbmQgbm90KCRzcHJlYWQpLCBtYXAtbWVyZ2UoJHNwYW4sIChzcHJlYWQ6IHdpZGUpKSwgJHNwYW4pO1xuICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbiAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAvLyBhcHBseSBndXR0ZXJzXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaWYgbm90KHN1c3ktZ2V0KHJvbGUsICRzcGFuKSkge1xuICAgICAgJHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBub3QoJHNwbGl0LW5lc3QpIHtcbiAgICAgICRtYXJnaW4tYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJG1hcmdpbi1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNwZWNpYWwgbWFyZ2luIGhhbmRsaW5nXG4gIEBpZiBzdXN5LWdldChvdXRwdXQsICRzcGFuKSA9PSBpc29sYXRlIGFuZCAkbG9jYXRpb24ge1xuICAgICRtYXJnaW4tYmVmb3JlOiBnZXQtaXNvbGF0aW9uKCRzcGFuKTtcbiAgICAkbWFyZ2luLWFmdGVyOiAtMTAwJTtcbiAgfSBAZWxzZSBpZiAkZWRnZSB7XG4gICAgJGlzLXNwbGl0OiBpcy1zcGxpdCgkc3Bhbik7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG5cbiAgICBAaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkZmxvYXQ6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJHNwYW4pO1xuICAgIH1cblxuICAgIEBpZiBub3QoJGlzLXNwbGl0KSB7XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gZmlyc3QgYW5kICRwb3MgPT0gYmVmb3JlKSB7XG4gICAgICAgICRtYXJnaW4tYmVmb3JlOiAwO1xuICAgICAgfVxuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGxhc3QgYW5kICRwb3MgPT0gYWZ0ZXIpIHtcbiAgICAgICAgJG1hcmdpbi1hZnRlcjogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gKFxuICAgIHdpZHRoICAgICAgICAgICA6ICR3aWR0aCxcbiAgICBmbG9hdCAgICAgICAgICAgOiAkZmxvYXQsXG4gICAgbWFyZ2luLWJlZm9yZSAgIDogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLWFmdGVyICAgIDogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLWJlZm9yZSAgOiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy1hZnRlciAgIDogJHBhZGRpbmctYWZ0ZXIsXG4gICAgZmxvdyAgICAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xufVxuXG4vLyBHZXQgU3BhbiBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBzcGFuIHdpZHRoLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBnZXQtc3Bhbi13aWR0aChcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcblxuICAkbiAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRsb2NhdGlvbiA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycywgJHNwYW4pO1xuICAkc3ByZWFkICAgOiBzdXN5LWdldChzcHJlYWQsICRzcGFuKTtcblxuICAkY29udGV4dCAgOiBudWxsO1xuICAkc3Bhbi1zdW0gOiBudWxsO1xuICAkd2lkdGggICAgOiBudWxsO1xuXG4gIEBpZiAkbiA9PSAnZnVsbCcge1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuICAgICRyb2xlOiBzdXN5LWdldChyb2xlLCAkc3Bhbik7XG4gICAgJG46IGlmKCRwb3MgPT0gc3BsaXQgYW5kICRyb2xlICE9IG5lc3QsIHN1c3ktY291bnQoJGNvbHVtbnMpLCAxMDAlKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRuKSAhPSBudW1iZXIge1xuICAgIEB3YXJuIFwiKCN7dHlwZS1vZigkbil9KSAjeyRufSBpcyBub3QgYSB2YWxpZCBzcGFuLlwiO1xuICB9IEBlbHNlIGlmIHVuaXRsZXNzKCRuKSB7XG4gICAgJGNvbnRleHQ6IHN1c3ktc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgaWYoaXMtc3BsaXQoJHNwYW4pLCB3aWRlLCBuYXJyb3cpKTtcbiAgICAkc3ByZWFkOiBpZihpcy1pbnNpZGUoJHNwYW4pLCAkc3ByZWFkIG9yIHdpZGUsICRzcHJlYWQpO1xuICAgICRzcGFuLXN1bTogc3VzeSgkbiwgJGxvY2F0aW9uLCAkY29sdW1ucywgJGd1dHRlcnMsICRzcHJlYWQpO1xuXG4gICAgJF9tYXRoOiBzdXN5LWdldChtYXRoLCAkc3Bhbik7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJHNwYW4pO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICR3aWR0aDogJHNwYW4tc3VtICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJHNwYW4tc3VtIC8gJGNvbnRleHQpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHdpZHRoOiAkbjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuIiwiLy8gR3V0dGVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIEd1dHRlcnNcbi8vIC0tLS0tLS1cbi8vIFNldCBndXR0ZXJzIG9uIGFuIGVsZW1lbnQuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVycyA6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX291dHB1dDogKFxuICAgIGJlZm9yZTogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSksXG4gICAgYWZ0ZXI6IG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlciksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChndXR0ZXJzLCAkaW5zcGVjdCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH1cbn1cblxuQG1peGluIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZ3V0dGVycygkc3Bhbik7XG59XG5cblxuLy8gR3V0dGVyXG4vLyAtLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBndXR0ZXIuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRzcGFuOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX2d1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSBvciBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuXG5AZnVuY3Rpb24gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQHJldHVybiBndXR0ZXIoJHNwYW4pO1xufVxuXG5cbi8vIEdldCBHdXR0ZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBndXR0ZXIgd2lkdGguXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXItd2lkdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVycyA6IHN1c3ktZ2V0KGd1dHRlcnMsICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgIDogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkY29udGV4dCk7XG5cbiAgQGlmICRfZ3V0dGVycyBhbmQgKCRfZ3V0dGVycyA+IDApIGFuZCBub3QoJF9ndXR0ZXIpIHtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkY29udGV4dCk7XG4gICAgJF9tYXRoOiBndXR0ZXItbWF0aCgkY29udGV4dCk7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJF9ndXR0ZXI6ICRfZ3V0dGVycyAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuICAgICAgJF9zcHJlYWQgIDogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCB3aWRlLCBzdXN5LWdldChzcHJlYWQsICRjb250ZXh0KSk7XG4gICAgICAkX2d1dHRlciAgOiBwZXJjZW50YWdlKCRfZ3V0dGVycyAvIHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkpO1xuICAgIH1cbiAgfVxuXG4gICRfZ3V0dGVyOiBpZigkX2d1dHRlciA9PSAnbm8tZ3V0dGVycycgb3IgJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcicsIG51bGwsICRfZ3V0dGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVyO1xufVxuXG5cbi8vIEdldCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGJlZm9yZSBhbmQgYWZ0ZXIgZ3V0dGVyIHZhbHVlcy5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlcnMoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICAgICAgICAgICAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlci1wb3NpdGlvbiAgIDogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICAgICAgICAgICAgOiBnZXQtZ3V0dGVyLXdpZHRoKCRjb250ZXh0KTtcblxuICAkX3JldHVybiAgICAgICAgICAgIDogKGJlZm9yZTogbnVsbCwgYWZ0ZXI6IG51bGwpO1xuXG4gIEBpZiBpcy1zcGxpdCgkY29udGV4dCkgYW5kICRfZ3V0dGVyIHtcbiAgICAkX2d1dHRlcjogJF9ndXR0ZXIgLyAyO1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChiZWZvcmU6ICRfZ3V0dGVyLCBhZnRlcjogJF9ndXR0ZXIpKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRfZ3V0dGVyLXBvc2l0aW9uOiAkX2d1dHRlcikpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBJcyBJbnNpZGVcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIGluc2lkZS5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1pbnNpZGUoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9pbnNpZGU6IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX2luc2lkZSwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gSXMgU3BsaXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgc3BsaXQuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtc3BsaXQoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9zcGxpdDogc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfc3BsaXQsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIEd1dHRlciBNYXRoXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBtYXRoIHRvIHVzZSBmb3IgZ3V0dGVyIGNhbGN1bGF0aW9uc1xuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGd1dHRlci1tYXRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkX3JldHVybiAgOiBzdXN5LWdldChtYXRoLCAkY29udGV4dCk7XG4gICRfcmV0dXJuICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpID09IGluc2lkZS1zdGF0aWMsIHN0YXRpYywgJF9yZXR1cm4pO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBJc29sYXRpb24gU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cblxuLy8gSXNvbGF0ZSBbTWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBpc29sYXRpb24gYXMgYW4gb3ZlcnJpZGUuXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AbWl4aW4gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaW5zcGVjdDogJGlzb2xhdGU7XG5cbiAgJG91dHB1dDogKFxuICAgIHB1c2g6IGlzb2xhdGUoJGlzb2xhdGUpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRpc29sYXRlKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoaXNvbGF0ZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBpc29sYXRlLW91dHB1dCgkb3V0cHV0Li4uKTtcbn1cblxuXG4vLyBJc29sYXRlIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGFuIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGguXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AZnVuY3Rpb24gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaXNvbGF0ZTogcGFyc2Utc3BhbigkaXNvbGF0ZSk7XG4gICRpc29sYXRpb246IHN1c3ktZ2V0KHNwYW4sICRpc29sYXRlKTtcblxuICBAaWYgJGlzb2xhdGlvbiBhbmQgbm90KGdldC1sb2NhdGlvbigkaXNvbGF0ZSkpIHtcbiAgICAkbmV3OiAoXG4gICAgICBzcGFuOiBudWxsLFxuICAgICAgbG9jYXRpb246ICRpc29sYXRpb24sXG4gICAgKTtcbiAgICAkaXNvbGF0ZTogbWFwLW1lcmdlKCRpc29sYXRlLCAkbmV3KTtcbiAgfVxuXG4gIEByZXR1cm4gZ2V0LWlzb2xhdGlvbigkaXNvbGF0ZSk7XG59XG5cblxuLy8gR2V0IElzb2xhdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBpc29sYXRpb24gb2Zmc2V0IHdpZHRoXG4vLyAtICRpbnB1dDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtaXNvbGF0aW9uKFxuICAkaW5wdXRcbikge1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkaW5wdXQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRpbnB1dCk7XG4gICR3aWR0aCAgICAgIDogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciBhbmQgbm90KHVuaXRsZXNzKCRsb2NhdGlvbikpIHtcbiAgICAkd2lkdGg6ICRsb2NhdGlvbjtcbiAgfSBAZWxzZSBpZiAkbG9jYXRpb24ge1xuICAgICRwdXNoOiAkbG9jYXRpb24gLSAxO1xuICAgIEBpZiAkcHVzaCA+IDAge1xuICAgICAgJHB1c2g6IG1hcC1tZXJnZSgkaW5wdXQsIChcbiAgICAgICAgc3BhbjogJHB1c2gsXG4gICAgICAgIGxvY2F0aW9uOiAxLFxuICAgICAgICBzcHJlYWQ6IHdpZGUsXG4gICAgICApKTtcbiAgICAgICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHB1c2gpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRpbnB1dCkgPT0gc3BsaXRcbiAgICAgIGFuZCBzdXN5LWdldChndXR0ZXJzLCAkaW5wdXQpID4gMCB7XG4gICAgJHdpZHRoOiBpZigkd2lkdGggPT0gbnVsbCwgZ3V0dGVycygkaW5wdXQpLCAkd2lkdGggKyBndXR0ZXJzKCRpbnB1dCkpO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGggb3IgMDtcbn1cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJvdyBTdGFydCAmIEVuZFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIEJyZWFrXG4vLyAtLS0tLVxuLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCBzaG91bGQgZm9yY2UgYSBsaW5lIGJyZWFrLlxuQG1peGluIGJyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogYm90aCkpO1xufVxuXG5cbi8vIE5vQnJlYWtcbi8vIC0tLS0tLS1cbi8vIENhbmNlbCB0aGUgYnJlYWsoKSBlZmZlY3QsIGUuZy4gd2hlbiB1c2luZyBtZWRpYSBxdWVyaWVzLlxuQG1peGluIG5vYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBub25lKSk7XG59XG5cblxuLy8gRnVsbFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8bGF5b3V0IHNob3J0aGFuZD5cbkBtaXhpbiBmdWxsKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCA6ICRjb250ZXh0O1xuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZnVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBzcGFuKGZ1bGwgb2YgcGFyc2UtZ3JpZCgkY29udGV4dCkgYnJlYWspO1xufVxuXG5cbi8vIEZpcnN0XG4vLyAtLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gZmlyc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmaXJzdCwgJGluc3BlY3QpO1xuICBAaWYgbm90KGlzLXNwbGl0KCRjb250ZXh0KSkge1xuICAgIEBpbmNsdWRlIGZsb2F0LWZpcnN0KCRmbG93KTtcbiAgfVxufVxuXG5AbWl4aW4gYWxwaGEoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGZpcnN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBMYXN0XG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBsYXN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxhc3QsICRpbnNwZWN0KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpLFxuICAgIGxhc3QtZmxvdzogc3VzeS1nZXQobGFzdC1mbG93LCAkY29udGV4dCksXG4gICAgbWFyZ2luOiBpZihpcy1zcGxpdCgkY29udGV4dCksIG51bGwsIDApLFxuICApO1xuXG4gIEBpbmNsdWRlIGZsb2F0LWxhc3QoJG91dHB1dC4uLik7XG59XG5cbkBtaXhpbiBvbWVnYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgbGFzdCgkY29udGV4dCk7XG59XG5cblxuLy8gR2V0IEVkZ2Vcbi8vIC0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgZWRnZSB2YWx1ZSBiYXNlZCBvbiBsb2NhdGlvbiwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtZWRnZShcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IHN1c3ktZ2V0KGVkZ2UsICRzcGFuKTtcblxuICBAaWYgbm90KCRlZGdlKSB7XG4gICAgJGNvdW50OiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSk7XG4gICAgJGxvY2F0aW9uOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAgICRuOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgICAkbnVtYmVyOiBpZih0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyLCB0cnVlLCBmYWxzZSk7XG4gICAgJGluZGV4OiBpZigkbnVtYmVyIGFuZCB1bml0bGVzcygkbG9jYXRpb24pLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJG4gPT0gJGNvdW50IHtcbiAgICAgICRlZGdlOiBmdWxsO1xuICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uIGFuZCAkbiBhbmQgJGluZGV4IHtcbiAgICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAgICRlZGdlOiBpZigkbiA9PSAkY291bnQsIGZ1bGwsIGZpcnN0KTtcbiAgICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uICsgJG4gLSAxID09ICRjb3VudCB7XG4gICAgICAgICRlZGdlOiBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkZWRnZSA9PSBhbHBoYSBvciAkZWRnZSA9PSBvbWVnYSB7XG4gICAgJGVkZ2U6IGlmKCRlZGdlID09IGFscGhhLCBmaXJzdCwgbGFzdCk7XG4gIH1cblxuICBAcmV0dXJuICRlZGdlO1xufVxuXG5cbi8vIEdldCBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgbG9jYXRpb24gdmFsdWUgYmFzZWQgb24gZWRnZSwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtbG9jYXRpb24oXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJG4gICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgQGlmICRlZGdlIGFuZCBub3QoJGxvY2F0aW9uKSBhbmQgdHlwZS1vZigkbikgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkbikge1xuICAgIEBpZiAkZWRnZSA9PSBmaXJzdCB7XG4gICAgICAkbG9jYXRpb246IDE7XG4gICAgfSBAZWxzZSBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRsb2NhdGlvbjogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpIC0gJG4gKyAxO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxvY2F0aW9uXG59XG4iLCIvLyBNYXJnaW4gU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cbi8vIFByZVxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW4gICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJGd1dHRlciA6IGd1dHRlcigkc3Bhbik7XG4gICRzcGFuICAgOiBzcGFuKCRzcGFuKTtcbiAgJHdpZHRoICA6IGlmKCRzcGxpdCBhbmQgJGd1dHRlciwgJHNwYW4gKyAkZ3V0dGVyLCAkc3Bhbik7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBQb3N0XG4vLyAtLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwb3N0KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwb3N0LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFB1c2hcbi8vIC0tLS1cbi8vIFNpbXBsZSBzeW5vbnltbiBmb3IgcHJlLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdXNoKFxuICAkc3BhblxuKSB7XG4gIEBpbmNsdWRlIHByZSgkc3Bhbik7XG59XG5cbi8vIFB1bGxcbi8vIC0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdWxsKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIDAgLSBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIDAgLSBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHB1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3F1aXNoXG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBzcXVpc2goXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICAgICAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcXVpc2gsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlKCRwcmUpO1xuICBAaW5jbHVkZSBwb3N0KCRwb3N0KTtcbn1cbiIsIi8vIFBhZGRpbmcgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZWZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTdWZmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3VmZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzdWZmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFBhZFxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gcGFkKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBhZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmVmaXgoJHByZSk7XG4gIEBpbmNsdWRlIHN1ZmZpeCgkcG9zdCk7XG5cbn1cbiIsIi8vIEJsZWVkIFN5bnRheFxuLy8gPT09PT09PT09PT09XG5cbi8vIEJsZWVkXG4vLyAtLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIG1hcmdpbnMsIGFuZCBlcXVhbCBwb3NpdGl2ZSBwYWRkaW5nIHRvIGNyZWF0ZSBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkKFxuICAkYmxlZWQ6IDAgZ3V0dGVyKClcbikge1xuICAkaW5zcGVjdCAgOiAkYmxlZWQ7XG4gICRvdXRwdXQgICA6IGdldC1ibGVlZCgkYmxlZWQpO1xuXG4gIEBpZiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gY29udGVudC1ib3gge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgoYm94LXNpemluZzogY29udGVudC1ib3gpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChibGVlZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cblxuLy8gQmxlZWQteFxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIGhvcml6b250YWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC14KFxuICAkYmxlZWQ6IGd1dHRlcigpXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMikgMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC14IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBCbGVlZC15XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgdmVydGljYWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC15KFxuICAkYmxlZWQ6IGlmKGZ1bmN0aW9uLWV4aXN0cyhyaHl0aG0pLCByaHl0aG0oMSksIDFlbSlcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDApKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCBudGgoJHRyYmwsIDIpIDApKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXkgb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEdldCBCbGVlZFxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmxlZWQgb3V0cHV0IHZhbHVlc1xuLy8gLSAkYmxlZWQ6IDxzcGFuPlxuQGZ1bmN0aW9uIGdldC1ibGVlZChcbiAgJGJsZWVkXG4pIHtcbiAgJGJsZWVkICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRibGVlZCkpO1xuICAkdHJibCAgICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuICAkc2hvcnQgICAgOiBudWxsO1xuICAkb3V0cHV0ICAgOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkdHJibCkge1xuICAgICR0aGlzOiBudGgoJHRyYmwsICRpKTtcbiAgICAkbmV3OiAoKTtcbiAgICAkbWFyZ2luOiBudWxsO1xuICAgICRwYWRkaW5nOiBudWxsO1xuICAgICRwYWRkaW5nLXg6IG51bGw7XG5cbiAgICBAaWYgJHRoaXMgPiAwIHtcbiAgICAgICR0aGlzOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogJHRoaXMpKTtcbiAgICAgICRtYXJnaW46IHNwYW4oJHRoaXMpO1xuICAgICAgJHBhZGRpbmc6ICRtYXJnaW47XG4gICAgICAkcGFkZGluZy14OiAkcGFkZGluZztcbiAgICB9XG5cbiAgICBAaWYgJG1hcmdpbiBhbmQgJG1hcmdpbiA+IDAge1xuICAgICAgJG1hcmdpbjogLSAkbWFyZ2luO1xuXG4gICAgICBAaWYgaXMtaW5zaWRlKCR0aGlzKSB7XG4gICAgICAgICRndXR0ZXI6IGd1dHRlcigkdGhpcyk7XG4gICAgICAgICRqb2luOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCRwYWRkaW5nLCAkZ3V0dGVyKSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAkcGFkZGluZy14OiBpZigkam9pbiBhbmQgJHBhZGRpbmcgPiAwLCAkcGFkZGluZyArICRndXR0ZXIsICRwYWRkaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMiB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAzIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDQge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgJG5ldyk7XG4gIH1cblxuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRvdXRwdXQge1xuICAgICRvdXRwdXQ6IGlmKCR2YWx1ZSA9PSAwLCBtYXAtbWVyZ2UoJG91dHB1dCwgKCRwcm9wOiBudWxsKSksICRvdXRwdXQpO1xuICB9XG5cbiAgQHJldHVybiBibGVlZC1zaG9ydGhhbmQoJG91dHB1dCk7XG59XG5cbi8vIEJsZWVkIFNob3J0aGFuZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDb252ZXJ0IGJsZWVkIG91dHB1dCBpbnRvIHNob3J0aGFuZCB3aGVuIHBvc3NpYmxlLlxuLy8gLSAkYmxlZWQ6IDxvdXRwdXQgbWFwPlxuQGZ1bmN0aW9uIGJsZWVkLXNob3J0aGFuZChcbiAgJGJsZWVkXG4pIHtcbiAgJG1hcmdpbjogKCk7XG4gICRwYWRkaW5nOiAoKTtcbiAgJHJldHVybjogKCk7XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRibGVlZCB7XG4gICAgQGlmIHN0ci1pbmRleCgka2V5LCBtYXJnaW4pIHtcbiAgICAgICRtYXJnaW46IG1hcC1tZXJnZSgkbWFyZ2luLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfSBAZWxzZSBpZiBzdHItaW5kZXgoJGtleSwgcGFkZGluZykgPiAwIHtcbiAgICAgICRwYWRkaW5nOiBtYXAtbWVyZ2UoJHBhZGRpbmcsICgka2V5OiAkdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAkcHJvcHM6IChcbiAgICBtYXJnaW46ICRtYXJnaW4sXG4gICAgcGFkZGluZzogJHBhZGRpbmcsXG4gICk7XG5cbiAgQGVhY2ggJG5hbWUsICRtYXAgaW4gJHByb3BzIHtcbiAgICAkZm91cjogaWYobGVuZ3RoKG1hcC1rZXlzKCRtYXApKSA9PSA0LCB0cnVlLCBmYWxzZSk7XG4gICAgJG51bGw6IGlmKGluZGV4KG1hcC12YWx1ZXMoJG1hcCksIG51bGwpLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJGZvdXIgYW5kIG5vdCgkbnVsbCkge1xuICAgICAgJHRvcDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tdG9wJyk7XG4gICAgICAkcmlnaHQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXJpZ2h0Jyk7XG4gICAgICAkYm90dG9tOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1ib3R0b20nKTtcbiAgICAgICRsZWZ0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1sZWZ0Jyk7XG5cbiAgICAgICR0YjogaWYoJHRvcCA9PSAkYm90dG9tLCAkdG9wLCBudWxsKTtcbiAgICAgICRybDogaWYoJHJpZ2h0ID09ICRsZWZ0LCAkcmlnaHQsIG51bGwpO1xuICAgICAgJGFsbDogaWYoJHRiID09ICRybCwgJHRiLCBudWxsKTtcblxuICAgICAgJG5ldzogaWYoJGFsbCwgJGFsbCwgbnVsbCk7XG5cbiAgICAgIEBpZiBub3QoJG5ldykge1xuICAgICAgICBAaWYgJHRiIGFuZCAkcmwge1xuICAgICAgICAgICRuZXc6ICR0YiAkcmw7XG4gICAgICAgIH0gQGVsc2UgaWYgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRybCAkYm90dG9tO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRyaWdodCAkYm90dG9tICRsZWZ0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJG5hbWU6ICRuZXcpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAkbWFwKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBCcmVha3BvaW50IEludGVncmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW1lZGlhOiAoKSAhZGVmYXVsdDtcbiRzdXN5LW1lZGlhLWZhbGxiYWNrOiBmYWxzZSAhZGVmYXVsdDtcblxuJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICgpO1xuXG5cbi8vIFN1c3kgQnJlYWtwb2ludFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGFuZ2UgZ3JpZHMgYXQgZGlmZmVyZW50IG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRzLlxuLy8gLSAkcXVlcnkgICAgIDogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPiB8IDxtYXA+XG4vLyAtICRsYXlvdXQgICAgOiA8c2V0dGluZ3M+XG4vLyAtICRuby1xdWVyeSAgOiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1icmVha3BvaW50KFxuICAkcXVlcnksXG4gICRsYXlvdXQ6IGZhbHNlLFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1yb3V0ZXIoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAaWYgJGxheW91dCB7XG4gICAgICBAaW5jbHVkZSB3aXRoLWxheW91dCgkbGF5b3V0KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gU3VzeSBNZWRpYVxuLy8gLS0tLS0tLS0tLVxuLy8gLSAkcXVlcnk6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT5cbi8vIC0gJG5vLXF1ZXJ5OiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1tZWRpYShcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgJG9sZC1jb250ZXh0OiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgJG5hbWU6IGlmKG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkcXVlcnkpLCAkcXVlcnksIG51bGwpO1xuICAkcXVlcnk6IHN1c3ktZ2V0LW1lZGlhKCRxdWVyeSk7XG4gICRxdWVyeTogc3VzeS1wYXJzZS1tZWRpYSgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkcXVlcnksICRuYW1lKTtcblxuICBAaWYgJG5vLXF1ZXJ5IGFuZCB0eXBlLW9mKCRuby1xdWVyeSkgIT0gc3RyaW5nIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSB7XG4gICAgQG1lZGlhICN7c3VzeS1yZW5kZXItbWVkaWEoJHF1ZXJ5KX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJG5vLXF1ZXJ5KSA9PSBzdHJpbmcge1xuICAgICAgI3skbm8tcXVlcnl9ICYge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJG9sZC1jb250ZXh0LCAkY2xlYW46IHRydWUpO1xufVxuXG5cbi8vIE1lZGlhIFJvdXRlclxuLy8gLS0tLS0tLS0tLS0tXG4vLyBSb3V0IG1lZGlhIGFyZ3VtZW50cyB0byB0aGUgY29ycmVjdCBtaXhpbi5cbkBtaXhpbiBzdXN5LW1lZGlhLXJvdXRlcihcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChicmVha3BvaW50LCAobWl4aW46IGJyZWFrcG9pbnQpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktbWVkaWEoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFVwZGF0ZSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBTZXQgdGhlIG5ldyBtZWRpYSBjb250ZXh0XG5AbWl4aW4gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcXVlcnksXG4gICRuYW1lOiBudWxsLFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJHF1ZXJ5OiBtYXAtbWVyZ2UoKG5hbWU6ICRuYW1lKSwgJHF1ZXJ5KTtcblxuICBAaWYgJGNsZWFuIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogJHF1ZXJ5ICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiBtYXAtbWVyZ2UoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRxdWVyeSkgIWdsb2JhbDtcbiAgfVxufVxuXG5cbi8vIE1lZGlhIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgZnVsbCBtZWRpYSBjb250ZXh0LCBvciBhIHNpbmdsZSBtZWRpYSBwcm9wZXJ0eSAoZS5nLiBtaW4td2lkdGgpXG5AZnVuY3Rpb24gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcHJvcGVydHk6IGZhbHNlXG4pIHtcbiAgQGlmICRwcm9wZXJ0eSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcHJvcGVydHkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICB9XG59XG5cblxuLy8gR2V0IE1lZGlhXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBhIG5hbWVkIG1lZGlhLXF1ZXJ5IGZyb20gJHN1c3ktbWVkaWEuXG4vLyAtICRuYW1lOiA8a2V5PlxuQGZ1bmN0aW9uIHN1c3ktZ2V0LW1lZGlhKFxuICAkbmFtZVxuKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJG5hbWUpIHtcbiAgICAkbWFwLXZhbHVlOiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCAkbmFtZSk7XG4gICAgQGlmICgkbmFtZSA9PSAkbWFwLXZhbHVlKSB7XG4gICAgICAkbmFtZTogJG1hcC12YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRuYW1lOiBzdXN5LWdldC1tZWRpYSgkbWFwLXZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuYW1lO1xufVxuXG5cbi8vIFJlbmRlciBNZWRpYVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBCdWlsZCBhIG1lZGlhLXF1ZXJ5IHN0cmluZyBmcm9tIHZhcmlvdXMgbWVkaWEgc2V0dGluZ3NcbkBmdW5jdGlvbiBzdXN5LXJlbmRlci1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG91dHB1dDogbnVsbDtcbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHF1ZXJ5IHtcbiAgICAkc3RyaW5nOiBudWxsO1xuXG4gICAgQGlmICRwcm9wZXJ0eSA9PSBtZWRpYSB7XG4gICAgICAkc3RyaW5nOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RyaW5nOiAnKCN7JHByb3BlcnR5fTogI3skdmFsdWV9KSc7XG4gICAgfVxuXG4gICAgJG91dHB1dDogaWYoJG91dHB1dCwgJyN7JG91dHB1dH0gYW5kICN7JHN0cmluZ30nLCAkc3RyaW5nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuXG4vLyBQYXJzZSBNZWRpYVxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBwYXJzZWQgbWVkaWEtcXVlcnkgc2V0dGluZ3MgYmFzZWQgb24gc2hvcnRoYW5kXG5AZnVuY3Rpb24gc3VzeS1wYXJzZS1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG1xOiBudWxsO1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09IG1hcCB7XG4gICAgJG1xOiAkcXVlcnk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IG51bWJlciB7XG4gICAgJG1xOiAobWluLXdpZHRoOiAkcXVlcnkpO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBsaXN0IGFuZCBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gbnVtYmVyIHtcbiAgICAgICRtcTogKFxuICAgICAgICBtaW4td2lkdGg6IG1pbigkcXVlcnkuLi4pLFxuICAgICAgICBtYXgtd2lkdGg6IG1heCgkcXVlcnkuLi4pLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtcTogKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkbXE6IChtZWRpYTogJyN7JHF1ZXJ5fScpO1xuICB9XG5cbiAgQHJldHVybiAkbXE7XG59XG4iLCIvKlxuKiBTY3V0LCBhIGNvbGxlY3Rpb24gb2YgU2FzcyB1dGlsaXRpZXNcbiogdG8gZWFzZSBhbmQgaW1wcm92ZSBvdXIgaW1wbGVtZW50YXRpb25zIG9mIGNvbW1vbiBzdHlsZS1jb2RlIHBhdHRlcm5zLlxuKiB2MS40LjBcbiogRG9jcyBhdCBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dFxuKi9cblxuQG1peGluIHNjdXQtY2xlYXJmaXgge1xuXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jbGVhcmZpeCB7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG59XG5AbWl4aW4gc2N1dC1saXN0LXVuc3R5bGVkKFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZmxvYXRlZCAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRkaXI6IGxlZnQsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcblxuICAmID4gbGkge1xuICAgIGZsb2F0OiAkZGlyO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLSN7JGRpcn06ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWZsb2F0ZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZDtcbn1cblxuQGZ1bmN0aW9uIHNjdXQtYXV0b09yVmFsdWUgKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gYSBvciAkdmFsID09IGF1dG8ge1xuICAgIEByZXR1cm4gYXV0bztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LWNvb3JkcyAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgJHRvcDogbnRoKCRjb29yZGluYXRlcywgMSk7XG4gICRyaWdodDogbnRoKCRjb29yZGluYXRlcywgMik7XG4gICRib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpO1xuICAkbGVmdDogbnRoKCRjb29yZGluYXRlcywgNCk7XG5cbiAgQGlmICR0b3AgIT0gbiB7XG4gICAgdG9wOiBzY3V0LWF1dG9PclZhbHVlKCR0b3ApO1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbiB7XG4gICAgcmlnaHQ6IHNjdXQtYXV0b09yVmFsdWUoJHJpZ2h0KTtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBuIHtcbiAgICBib3R0b206IHNjdXQtYXV0b09yVmFsdWUoJGJvdHRvbSk7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG4ge1xuICAgIGxlZnQ6IHNjdXQtYXV0b09yVmFsdWUoJGxlZnQpO1xuICB9XG5cbn1cbkBmdW5jdGlvbiBzY3V0LXN0cmlwLXVuaXQgKFxuICAkbnVtXG4pIHtcblxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LWVtIChcbiAgJHBpeGVscyxcbiAgJGJhc2U6ICRzY3V0LWVtLWJhc2Vcbikge1xuXG4gIC8vICRiYXNlIGNvdWxkIGJlIGluIGVtIG9yIHB4IChubyB1bml0ID0gcHgpLlxuICAvLyBBZGp1c3QgYWNjb3JkaW5nbHkgdG8gY3JlYXRlIGEgJGRpdmlzb3IgdGhhdFxuICAvLyBzZXJ2ZXMgYXMgY29udGV4dCBmb3IgJHBpeGVscy5cbiAgJG11bHRpcGxpZXI6IGlmKHVuaXQoJGJhc2UpID09IGVtLCAxNiwgMSk7XG4gICRkaXZpc29yOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UpICogJG11bHRpcGxpZXI7XG5cbiAgJGVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tZW1zOiAoc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJGRpdmlzb3IpICogMWVtO1xuICAgICRlbS12YWxzOiBhcHBlbmQoJGVtLXZhbHMsICR2YWwtaW4tZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJGVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJGVtLXZhbHM7XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtcmVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1yZW0gKFxuICAkcGl4ZWxzXG4pIHtcblxuICAkcmVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcmVtczogc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJHNjdXQtcmVtLWJhc2UgKiAxcmVtO1xuICAgICRyZW0tdmFsczogYXBwZW5kKCRyZW0tdmFscywgJHZhbC1pbi1yZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHJlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJHJlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcmVtLXZhbHM7XG4gIH1cblxufVxuQG1peGluIHNjdXQtYm9yZGVyIChcbiAgJHN0eWxlLFxuICAkc2lkZXM6IG4geVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2lkZXMpID09IDIge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkc2lkZXMpID09IDQge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAzKSAhPSBuIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDQpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJTY3V0LWJvcmRlciByZXF1aXJlcyBhICRzaWRlcyBhcmd1bWVudCBvZiAyIG9yIDQgdmFsdWVzLlwiXG4gIH1cblxufVxuQG1peGluIHNjdXQtY2lyY2xlIChcbiAgJHNpemUsXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgQGlmICRjb2xvciA9PSBpbmhlcml0IHtcbiAgICAvLyBJZiB1c2VyIHdhbnRzIHRvIGluaGVyaXQgdGhlIGNvbG9yLFxuICAgIC8vIHRha2UgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgYm9yZGVyXG4gICAgLy8gY29sb3IgZGVmYXVsdHMgdG8gdGhlIHRleHQgY29sb3Igb2YgdGhlIGVsZW1lbnQuXG4gICAgYm9yZGVyLXdpZHRoOiAkc2l6ZSAvIDI7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgd2lkdGg6IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwganVzdCB1c2UgYmFja2dyb3VuZC1jb2xvci5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICB3aWR0aDogJHNpemU7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY29sb3Itc3dhcCAoXG4gICRvZmYsXG4gICRvbixcbiAgJGR1cmF0aW9uOiAwLFxuICAkYmc6IGZhbHNlXG4pIHtcblxuICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBudWxsO1xuICAkb2ZmLWlzLWxpc3Q6IHR5cGUtb2YoJG9mZikgPT0gbGlzdDtcbiAgJG9uLWlzLWxpc3Q6IHR5cGUtb2YoJG9uKSA9PSBsaXN0O1xuXG4gIC8vIElmICRvZmYgSVMgYSBsaXN0LFxuICAvLyBhc3NpZ24gY29sb3IgYW5kIGJhY2tncm91bmQtY29sb3IuXG4gIEBpZiAkb2ZmLWlzLWxpc3Qge1xuICAgIGNvbG9yOiBudGgoJG9mZiwgMSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvZmYsIDIpO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3IsIGNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgVFJVRSxcbiAgLy8gYXNzaWduIGJhY2tncm91bmQtY29sb3IuXG4gIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvZmYtaXMtbGlzdCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIEZBTFNFLFxuICAvLyBhc3NpZ24gY29sb3IuXG4gIEBlbHNlIHtcbiAgICBjb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBjb2xvcjtcbiAgfVxuXG4gIC8vIE9ubHkgc2V0LXVwIHRyYW5zaXRpb24gaWYgJGR1cmF0aW9uICE9IDAuXG4gIEBpZiAkZHVyYXRpb24gIT0gMCB7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogJHRyYW5zaXRpb24tcHJvcGVydGllcztcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAkZHVyYXRpb247XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcblxuICAgIC8vICRvbiBpcyB0cmVhdGVkIHRoZSBzYW1lIGFzICRvZmYsIGFib3ZlLlxuICAgIEBpZiAkb24taXMtbGlzdCB7XG4gICAgICBjb2xvcjogbnRoKCRvbiwgMSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9uLCAyKTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb24taXMtbGlzdCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9uO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkb247XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWhkLWJwIChcbiAgJHJhdGlvOiAxLjNcbikge1xuXG4gIEBtZWRpYSAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogKCRyYXRpbyAvIDEpKSxcbiAgICAgICAgICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gICAgICAgICAobWluLXJlc29sdXRpb246IChyb3VuZCg5NiAqICRyYXRpbykgKiAxZHBpKSkge1xuICAgIEBjb250ZW50O1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGlkZS12aXN1YWxseSB7XG5cbiAgYm9yZGVyOiAwO1xuICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG5cbn1cblxuJXNjdXQtaGlkZS12aXN1YWxseSB7XG4gIEBpbmNsdWRlIHNjdXQtaGlkZS12aXN1YWxseTtcbn1cbkBtaXhpbiBzY3V0LWltYWdlLXJlcGxhY2Uge1xuXG4gIHRleHQtaW5kZW50OiAxMDIlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuXG59XG5cbiVzY3V0LWltYWdlLXJlcGxhY2Uge1xuICBAaW5jbHVkZSBzY3V0LWltYWdlLXJlcGxhY2U7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1yZW0gYW5kIHNjdXQtc3RyaXAtdW5pdFxuXG5AbWl4aW4gc2N1dC1yZW0tZmFsbGJhY2sgKFxuICAkcGl4ZWxzLFxuICAkcHJvcGVydHk6IGZvbnQtc2l6ZVxuKSB7XG5cbiAgJHB4LXZhbHM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1weDogc2N1dC1zdHJpcC11bml0KCR2YWwpICogMXB4O1xuICAgICRweC12YWxzOiBhcHBlbmQoJHB4LXZhbHMsICR2YWwtaW4tcHgpO1xuICB9XG4gICRyZW0tdmFsczogc2N1dC1yZW0oJHBpeGVscyk7XG5cbiAgI3skcHJvcGVydHl9OiAkcHgtdmFscztcbiAgI3skcHJvcGVydHl9OiAkcmVtLXZhbHM7XG5cbn1cbkBtaXhpbiBzY3V0LXJlc2V0LWJvcmRlci1ib3gge1xuICAvLyBNYWtlIGV2ZXJ5dGhpbmcgYSBib3JkZXItYm94LCBiZWNhdXNlIHdoeSBub3Q/XG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYW50aWFsaWFzIHtcbiAgLy8gQW50aWFsaWFzIVxuICBib2R5IHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1zZW1hbnRpY2l6ZSB7XG4gIC8vIE1ha2UgaGVhZGVycyBhbmQgPGI+IHNlbWFudGljLCBub3QgcHJlc2VudGF0aW9uYWwuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcG9pbnRlciB7XG4gIC8vIENsaWNrYWJsZSBmb3JtIGVsZW1lbnRzIHNob3VsZCBoYXZlIGEgcG9pbnRlci5cbiAgbGFiZWwsXG4gIHNlbGVjdCxcbiAgb3B0aW9uLFxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1mb3JtIHtcbiAgZmllbGRzZXQge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1idXR0b24ge1xuICAvLyBSZXNldCBkZWZhdWx0IGJ1dHRvbiBzdHlsZXMsIHdoaWNoIGFyZSBuZXZlciB1c2VkLlxuICBidXR0b24sXG4gIFt0eXBlPVwiYnV0dG9uXCJdLFxuICBbdHlwZT1cInN1Ym1pdFwiXSxcbiAgW3R5cGU9XCJyZXNldFwiXSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wYXJhZ3JhcGgge1xuICAvLyBTb21lIHBhcmFncmFwaCBtYXJnaW5zIGp1c3QgZ2V0IGluIHRoZSB3YXkuXG4gIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICBwOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1tZWRpYSB7XG4gIC8vIFlvdSB3YW50IHRoZXNlIGVsZW1lbnRzIGZsdWlkLCBwcm9iYWJseS5cbiAgaW1nLFxuICB2aWRlbyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1maWd1cmUge1xuICAvLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zLlxuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG4vLyBDYWxsIHRoZW0gYWxsLCBtaW51cyBleGNsdXNpb25zIVxuQG1peGluIHNjdXQtcmVzZXQgKCRleGNsdWRlOiBmYWxzZSkge1xuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBib3JkZXItYm94KSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYm9yZGVyLWJveDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBhbnRpYWxpYXMpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1hbnRpYWxpYXM7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgc2VtYW50aWNpemUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1zZW1hbnRpY2l6ZTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwb2ludGVyKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcG9pbnRlcjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmb3JtKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZm9ybTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBidXR0b24pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1idXR0b247XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcGFyYWdyYXBoKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcGFyYWdyYXBoO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIG1lZGlhKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtbWVkaWE7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZmlndXJlKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZmlndXJlO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXNlbGVjdGVkIChcbiAgJGFjdGl2ZTogZmFsc2Vcbikge1xuXG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXRyaWFuZ2xlIChcbiAgJGRpcmVjdGlvbjogcmlnaHQsXG4gICRzaXplOiAwLjc1ZW0sXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuICAvLyBGb3IgaW1wcm92ZWQgYXBwZWFyYW5jZSBpbiBzb21lIFdlYmtpdCBicm93c2Vyc1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG5cbiAgLy8gU2V0IHVwIHNvbWUgdmFyaWFibGVzXG4gICR3aWR0aDogbnVsbDtcbiAgJGhlaWdodDogbnVsbDtcbiAgJGJvcmRlci13aWR0aHM6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJHNpemUpID09IGxpc3Qge1xuICAgICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgICAkaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkd2lkdGg6ICRzaXplO1xuICAgICRoZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgLy8gRm9yIHVwIGFuZCBkb3duLCB3aWR0aCBnZXRzIHR3byBib3JkZXJzIGJ1dCBoZWlnaHQgb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIHNlY29uZCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAkaGVpZ2h0ICgkd2lkdGggLyAyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIC8vIEZvciByaWdodCBhbmQgbGVmdCwgaGVpZ2h0IGdldHMgdHdvIGJvcmRlcnMgYnV0IHdpZHRoIG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBmaXJzdCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICR3aWR0aDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gRm9yIHJpZ2h0IHRyaWFuZ2xlcyAodGhlIHJlc3QpLCBib3RoIHNpZGVzIGdldCB0d28gYm9yZGVycyxcbiAgICAvLyBzbyBkaXZpZGUgYm90aCBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgKCR3aWR0aCAvIDIpO1xuICB9XG5cbiAgYm9yZGVyLXdpZHRoOiAkYm9yZGVyLXdpZHRocztcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcblxuXG4gIC8vIFNUQU5EQVJEIFRSSUFOR0xFU1xuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gQ09STkVSIFRSSUFOR0xFU1xuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHRvcC1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gdG9wLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHRvcC1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXRyaWFuZ2xlIHtcbiAgQGluY2x1ZGUgc2N1dC10cmlhbmdsZTtcbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1hYnNvbHV0ZWx5IChcbiAgJGRpbWVuc2lvbnNcbikge1xuXG4gICR3aWR0aDogbnRoKCRkaW1lbnNpb25zLCAxKTtcbiAgJGhlaWdodDogbnRoKCRkaW1lbnNpb25zLCAyKTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICR3aWR0aCAhPSBuIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogKC0kd2lkdGggLyAyKTtcbiAgfVxuXG4gIEBpZiAkaGVpZ2h0ICE9IG4ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAoLSRoZWlnaHQgLyAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYmxvY2sgKFxuICAkbWF4LXdpZHRoOiBmYWxzZVxuKSB7XG5cbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgQGlmICRtYXgtd2lkdGgge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNlbnRlci1ibG9jayB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLWJsb2NrO1xufVxuXG5AbWl4aW4gc2N1dC1jZW50ZXItdHJhbnNmb3JtIChcbiAgJGF4aXM6IGZhbHNlIC8vIG9yIHggb3IgeVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkYXhpcyAhPSB4IHtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gIH1cblxuICBAaWYgJGF4aXMgIT0geSB7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxuXG4gICR0cmFuc2xhdGUtdmFsOiBudWxsO1xuXG4gIEBpZiBub3QoJGF4aXMpIHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHgge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHkge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG5cbiAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICAtbXMtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS14IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHgpO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbkBtaXhpbiBzY3V0LWZpbGwgKFxuICAkd2lkdGgtaGVpZ2h0OiBmYWxzZVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIEBpZiAkd2lkdGgtaGVpZ2h0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWZpbGwge1xuICBAaW5jbHVkZSBzY3V0LWZpbGw7XG59XG5AbWl4aW4gc2N1dC1saXN0LWN1c3RvbSAoXG4gICRjb250ZW50OiBcIlxcMjAyMlwiLFxuICAkbWFya2VyLXdpZHRoOiAwLjc1ZW0sXG4gICRwYWQ6IDAsXG4gICRuby1tYXJnaW46IGZhbHNlXG4pIHtcblxuICAkY29udGVudC12YWw6IG51bGw7XG4gICRjb3VudGVyOiBpbmRleCgkY29udGVudCwgY291bnQpO1xuICBAaWYgJGNvdW50ZXIge1xuICAgIEBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDMge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciwgbnRoKCRjb250ZW50LCAzKSludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIGlmIGxlbmd0aCgkY29udGVudCkgPT0gMiB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlcik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkY29udGVudC12YWw6ICRjb250ZW50O1xuICB9XG5cbiAgcGFkZGluZy1sZWZ0OiAkbWFya2VyLXdpZHRoICsgJHBhZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmID4gbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgJGNvdW50ZXIge1xuICAgICAgY291bnRlci1pbmNyZW1lbnQ6IHNjdXRsaXN0Y291bnRlcjtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJGNvbnRlbnQtdmFsO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAtJG1hcmtlci13aWR0aDtcbiAgICAgIHdpZHRoOiAkbWFya2VyLXdpZHRoO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtZmxvYXRlZGAsIHdoaWNoIGRlcGVuZHMgaW4gdHVybiBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZGl2aWRlZCAoXG4gICRkaXZpZGVyOiBcInxcIixcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGRpcjogbGVmdCxcbiAgJGhlaWdodDogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkKCRkaXI6ICRkaXIsICRuby1tYXJnaW46ICRuby1tYXJnaW4pO1xuXG4gICRwc2V1ZG86IGlmKCRkaXIgPT0gbGVmdCwgJ2JlZm9yZScsICdhZnRlcicpO1xuXG4gIC8vIElmIGFuIGV4cGxpY2l0IGhlaWdodCBpcyBwYXNzZWQsXG4gIC8vIHRoaW5ncyBhcmUgZGlmZmVyZW50OiBBbGwgPGxpPnNcbiAgLy8gbmVlZCB0aGUgcHNldWRvLWVsZW1lbnQgKHRvIGZvcmNlIGhlaWdodCksXG4gIC8vIGJ1dCB0aGUgZmlyc3QncyBtdXN0IGJlIGhpZGRlbi5cblxuICBAaWYgJGhlaWdodCB7XG4gICAgJiA+IGxpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gICAgJiA+IGxpOiN7JHBzZXVkb30ge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgICYgPiBsaTpmaXJzdC1jaGlsZDojeyRwc2V1ZG99IHtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAmID4gbGkgKyBsaTojeyRwc2V1ZG99IHtcbiAgICBAaWYgbm90KCRoZWlnaHQpIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2U7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWJhciB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkO1xufVxuXG4lc2N1dC1saXN0LWJyZWFkY3J1bWIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZChcIi9cIik7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1pbmxpbmUgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtaW5saW5lIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWlubGluZTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LXB1bmN0dWF0ZWQgKFxuICAkZGl2aWRlcjogXCIsIFwiLFxuICAkZGlzcGxheTogaW5saW5lLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiAkZGlzcGxheTtcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1jb21tYSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1wdW5jdHVhdGVkO1xufVxuQG1peGluIHNjdXQtbWFyZ2luIChcbiAgJG1hcmdpblxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAxIGFuZCAkbWFyZ2luICE9IG4ge1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW47XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDIge1xuICAgICRtYXJnaW4teTogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgIEBpZiAkbWFyZ2luLXkgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXk7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAzIHtcbiAgICAkbWFyZ2luLXktdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi15LWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgIEBpZiAkbWFyZ2luLXktdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15LXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teS1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gNCB7XG4gICAgJG1hcmdpbi10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXJpZ2h0OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICAkbWFyZ2luLWxlZnQ6IG50aCgkbWFyZ2luLCA0KTtcbiAgICBAaWYgJG1hcmdpbi10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tcmlnaHQgIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4tcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1sZWZ0ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4tbGVmdDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtcGFkZGluZyAoXG4gICRwYWRkaW5nXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAxIGFuZCAkcGFkZGluZyAhPSBuIHtcbiAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAyIHtcbiAgICAkcGFkZGluZy15OiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgQGlmICRwYWRkaW5nLXkgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMyB7XG4gICAgJHBhZGRpbmcteS10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy15LWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICBAaWYgJHBhZGRpbmcteS10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteS10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXktYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDQge1xuICAgICRwYWRkaW5nLXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy1yaWdodDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgJHBhZGRpbmctbGVmdDogbnRoKCRwYWRkaW5nLCA0KTtcbiAgICBAaWYgJHBhZGRpbmctdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXJpZ2h0ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmctcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmctYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctbGVmdCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmctbGVmdDtcbiAgICB9XG4gIH1cbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtYWJzb2x1dGUgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1hYnNvbHV0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtYWJzb2x1dGU7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWZpeGVkIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogZml4ZWQ7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtZml4ZWQge1xuICBAaW5jbHVkZSBzY3V0LWZpeGVkO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1yZWxhdGl2ZSAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5AbWl4aW4gc2N1dC1yYXRpby1ib3ggKFxuICAkcmF0aW86IDEvMVxuKSB7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFRoZSBjb250YWluZXIncyBoZWlnaHQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVcbiAgLy8gY29udGFpbmVyJ3Mgd2lkdGgsIGlzIHNldCBieSBhc3NpZ25pbmdcbiAgLy8gcGFkZGluZy10b3AgdG8gYSBwc2V1ZG8tZWxlbWVudC5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHBhZGRpbmctdG9wOiAoMSAvICRyYXRpbykgKiAxMDAlO1xuICB9XG5cbn1cblxuJXNjdXQtcmF0aW8tYm94IHtcbiAgQGluY2x1ZGUgc2N1dC1yYXRpby1ib3g7XG59XG5AbWl4aW4gc2N1dC1zaXplKFxuICAkc2l6ZVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2l6ZSkgPT0gMSB7XG4gICAgd2lkdGg6ICAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkc2l6ZSkgPT0gMiB7XG4gICAgd2lkdGg6ICBudGgoJHNpemUsIDEpO1xuICAgIGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogLSRoZWlnaHQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgI3skd3JhcHBlcn06YWZ0ZXIsXG4gICN7JGZvb3Rlcn0ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxuXG59XG5cbi8vIGRlcHJlY2F0ZWRcbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXIgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pe1xuICBAaW5jbHVkZSBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQoJGhlaWdodCwgJHdyYXBwZXIsICRmb290ZXIpO1xufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1mbHVpZCAoXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAjeyRmb290ZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgaGVpZ2h0OiAxcHg7XG4gIH1cblxufVxuQG1peGluIHNjdXQtdmNlbnRlci1pYiAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgLy8gVGhlIGlubmVyIGVsZW1lbnQgaXMgdmVydGljYWxseSBjZW50ZXJlZFxuICAvLyBieSBtaWRkbGUtYWxpZ25pbmcgaXQgd2l0aCBhbiBpbmxpbmUgcHNldWRvLWVsZW1lbnRcbiAgLy8gd2hvc2UgaGVpZ2h0IGlzIDEwMCUuXG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIC8vIEEgc21hbGwgbmVnYXRpdmUgcmlnaHQgbWFyZ2luIGlzIHNldFxuICAgIC8vIHRvIGFjY291bnQgZm9yIHRoZSBkZWZhdWx0XG4gICAgLy8gd29yZC1zcGFjaW5nIG9mIGlubGluZS1ibG9jay5cbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1ZW07XG4gIH1cblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdmNlbnRlci1pYiB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci1pYjtcbn1cblxuQG1peGluIHNjdXQtdmNlbnRlci1saCAoXG4gICRoZWlnaHRcbikge1xuXG4gIGhlaWdodDogJGhlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWlnaHQ7XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItdGQgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIGRpc3BsYXk6IHRhYmxlO1xuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuXG4lc2N1dC12Y2VudGVyLXRkIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXRkO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtY2VudGVyLXRyYW5zZm9ybVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLXR0ICgpIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG4lc2N1dC12Y2VudGVyLXR0IHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXR0O1xufVxuLy8gc3BhY2VcbiRzY3V0LXNwYWNlOiBcIlxcMDAyMFwiO1xuLy8gbm9uLWJyZWFraW5nIHNwYWNlXG4kc2N1dC1uYnNwOiBcIlxcMDBhMFwiO1xuXG4vLyBxdW90YXRpb24gbWFya1xuJHNjdXQtcXVvdDogXCJcXDAwMjJcIjtcbi8vIGxlZnQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1sc3F1bzogXCJcXDIwMThcIjtcbi8vIHJpZ2h0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtcnNxdW86IFwiXFwyMDE5XCI7XG4vLyBsZWZ0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtbGRxdW86IFwiXFwyMDFDXCI7XG4vLyByaWdodCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LXJkcXVvOiBcIlxcMjAxRFwiO1xuLy8gbGVmdCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxzYXF1bzogXCJcXDIwMzlcIjtcbi8vIHJpZ2h0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcnNhcXVvOiBcIlxcMjAzQVwiO1xuLy8gbGVmdCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxhcXVvOiBcIlxcMDBhYlwiO1xuLy8gcmlnaHQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yYXF1bzogXCJcXDAwYmJcIjtcblxuLy8gZW0gZGFzaCAobXV0dG9uKVxuJHNjdXQtbWRhc2g6IFwiXFwyMDE0XCI7XG4vLyBlbiBkYXNoIChudXQpXG4kc2N1dC1uZGFzaDogXCJcXDIwMTNcIjtcbi8vIGh5cGhlblxuJHNjdXQtaHlwaGVuOiBcIlxcMjAxMFwiO1xuXG4vLyBhbXBlcnNhbmRcbiRzY3V0LWFtcDogXCJcXDAwMjZcIjtcbi8vIGdyZWF0ZXIgdGhhblxuJHNjdXQtZ3Q6IFwiXFwwMDNlXCI7XG4vLyBsZXNzIHRoYW5cbiRzY3V0LWx0OiBcIlxcMDAzY1wiO1xuLy8gdGltZXNcbiRzY3V0LXRpbWVzOiBcIlxcMDBEN1wiO1xuLy8gYmlnIHRpbWVzXG4kc2N1dC1iaWd0aW1lczogXCJcXDI3MTVcIjtcbi8vIGNoZWNrbWFya1xuJHNjdXQtY2hlY2ttYXJrOiBcIlxcMjcxM1wiO1xuXG4vLyBzZWN0aW9uIHNpZ24gKGRvdWJsZSBTLCBodXJyaWNhbmUsIHNlY3Rpb25hbCBzeW1ib2wsIHRoZSBsZWdhbCBkb3VnaG51dCwgc2lnbnVtIHNlY3Rpb25pcylcbiRzY3V0LXNlY3Q6IFwiXFwwMGE3XCI7XG4vLyBwYXJhZ3JhcGggc3ltYm9sIChwaWxjcm93KVxuJHNjdXQtcGFyYTogXCJcXDAwYjZcIjtcblxuLy8gbWlkZG90IChpbnRlcnB1bmN0LCBpbnRlcnBvaW50KVxuJHNjdXQtbWlkZG90OiBcIlxcMDBiN1wiO1xuLy8gby1zbGFzaCAoc2xhc2hlZCBvKVxuJHNjdXQtb3NsYXNoOiBcIlxcMDBmOFwiO1xuLy8gYnVsbGV0XG4kc2N1dC1idWxsOiBcIlxcMjAyMlwiO1xuLy8gd2hpdGUgYnVsbGV0XG4kc2N1dC13aGlidWxsOiBcIlxcMjVFNlwiO1xuLy8gaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtaGVsbGlwOiBcIlxcMjAyNlwiO1xuLy8gdmVydGljYWwgZWxsaXBzaXNcbiRzY3V0LXZlbGxpcDogXCJcXDIyRUVcIjtcbi8vIG1pZGxpbmUgaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtbWlkaGVsbGlwOiBcIlxcMjJFRlwiO1xuXG4vLyB1cC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtdXRyaTogXCJcXDI1YjJcIjtcbi8vIGRvd24tcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWR0cmk6IFwiXFwyNWJjXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1sdHJpOiBcIlxcMjVjMFwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXJ0cmk6IFwiXFwyNWI2XCI7XG4vLyB1cC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtdXN0cmk6IFwiXFwyNWI0XCI7XG4vLyBkb3duLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1kc3RyaTogXCJcXDI1YmVcIjtcbi8vIGxlZnQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWxzdHJpOiBcIlxcMjVjMlwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXJzdHJpOiBcIlxcMjViOFwiO1xuLy8gZGlhbW9uZFxuJHNjdXQtZGlhbW9uZDogXCJcXDI1YzZcIjtcbi8vIGZpc2hleWVcbiRzY3V0LWZpc2hleWU6IFwiXFwyNWM5XCI7XG4vLyBidWxsc2V5ZVxuJHNjdXQtYnVsbHNleWU6IFwiXFwyNWNlXCI7XG4vLyBjaXJjbGVcbiRzY3V0LWNpcmNsZTogXCJcXDI1Y2ZcIjtcbi8vIHdoaXRlIGNpcmNsZVxuJHNjdXQtd2hpdGVjaXJjbGU6IFwiXFwyNWNiXCI7XG4vLyBzcXVhcmVcbiRzY3V0LXNxdWFyZTogXCJcXDI1YTBcIjtcbi8vIHdoaXRlIHNxdWFyZVxuJHNjdXQtd2hpdGVzcXVhcmU6IFwiXFwyNWExXCI7XG4vLyBzbWFsbCBzcXVhcmVcbiRzY3V0LXNzcXVhcmU6IFwiXFwyNWFhXCI7XG4vLyBzbWFsbCB3aGl0ZSBzcXVhcmVcbiRzY3V0LXN3aGl0ZXNxdWFyZTogXCJcXDI1YWJcIjtcblxuLy8gZ2VuZXJhbCBjdXJyZW5jeVxuJHNjdXQtY3VycmVuY3k6IFwiXFwwMGE0XCI7XG4vLyBjZW50XG4kc2N1dC1jZW50OiBcIlxcMDBhMlwiO1xuLy8gZG9sbGFyXG4kc2N1dC1kb2xsYXI6IFwiXFwwMDI0XCI7XG4vLyBwb3VuZFxuJHNjdXQtcG91bmQ6IFwiXFwwMGEzXCI7XG4vLyBldXJvXG4kc2N1dC1ldXJvOiBcIlxcMjBhY1wiO1xuLy8geWVuXG4kc2N1dC15ZW46IFwiXFwwMGE1XCI7XG4vLyBydXBlZVxuJHNjdXQtcnVwZWU6IFwiXFwyMEI5XCI7XG5AZnVuY3Rpb24gbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSkge1xuICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgYHNyY2AgdmFsdWVzLCBpbiBvcmRlciwgdGhhdFxuICAvLyBhIGdvb2QgYEBmb250LWZhY2VgIHdpbGwgbmVlZCwgaW5jbHVkaW5nIG9ubHlcbiAgLy8gdGhvc2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gdGhlIGxpc3QgYCRmb3JtYXRzYC5cbiAgJHJlc3VsdDogKCk7XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgJGVvdC12YWw6IHVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkZW90LXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZjIpIHtcbiAgICAkd29mZjItdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmMi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYpIHtcbiAgICAkd29mZi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgdHRmKSB7XG4gICAgJHR0Zi12YWw6IHVybCgnI3skZmlsZS1wYXRofS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR0dGYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBzdmcpIHtcbiAgICAkc3ZnLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkc3ZnLXZhbCwgY29tbWEpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQG1peGluIHNjdXQtZm9udC1mYWNlIChcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Z1xuKSB7XG5cbiAgQGlmIGluZGV4KCdpdGFsaWMnICdvYmxpcXVlJywgJHdlaWdodCkge1xuICAgICRzdHlsZTogJHdlaWdodDtcbiAgICAkd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcblxuICAgIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgICBzcmM6IHVybCgnI3skZmlsZS1wYXRofS5lb3QnKTtcbiAgICB9XG4gICAgc3JjOiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KTtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhhbmdpbmctaW5kZW50IChcbiAgJGluZGVudDogMWVtXG4pIHtcblxuICAvLyBwYWRkaW5nLWxlZnQgY3JlYXRlcyB0aGUgaW5kZW50LFxuICAvLyB3aGlsZSB0ZXh0LWluZGVudCBwdWxscyB0aGUgZmlyc3QgbGluZVxuICAvLyBiYWNrIHRvIHRoZSBlZGdlLlxuXG4gIHBhZGRpbmctbGVmdDogJGluZGVudDtcbiAgdGV4dC1pbmRlbnQ6IC0kaW5kZW50O1xuXG59XG5cbiVzY3V0LWhhbmdpbmctaW5kZW50IHtcbiAgQGluY2x1ZGUgc2N1dC1oYW5naW5nLWluZGVudDtcbn1cbkBtaXhpbiBzY3V0LWluZGVudGVkLXBzIChcbiAgJGluZGVudDogMS41ZW0sXG4gICRuby1maXJzdC1pbmRlbnQ6IHRydWVcbikge1xuXG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LWluZGVudDogJGluZGVudDtcbiAgfVxuXG4gIEBpZiAkbm8tZmlyc3QtaW5kZW50IHtcbiAgICBwOmZpcnN0LW9mLXR5cGUge1xuICAgICAgdGV4dC1pbmRlbnQ6IDA7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtaW5kZW50ZWQtcHMge1xuICBAaW5jbHVkZSBzY3V0LWluZGVudGVkLXBzO1xufVxuQG1peGluIHNjdXQta2V5LXZhbCAoXG4gICRkaXZpZGVyOiBcIjpcIixcbiAgJHBhZDogMC4yNWVtLFxuICAkaW5kZW50OiAxZW0sXG4gICRzcGFjaW5nOiAwLFxuICAkcGFkLWxlZnQ6IDBcbikge1xuXG4gICYgPiBkdCB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogJHBhZDtcbiAgICAgIEBpZiAkcGFkLWxlZnQgIT0gMCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkcGFkLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJiA+IGRkIHtcbiAgICBtYXJnaW4tbGVmdDogJGluZGVudDtcbiAgICBAaWYgJHNwYWNpbmcgIT0gMCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1rZXktdmFsIHtcbiAgQGluY2x1ZGUgc2N1dC1rZXktdmFsO1xufVxuQG1peGluIHNjdXQtbGluay1iYiAoXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHdpZHRoOiAxcHhcbikge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBib3JkZXItYm90dG9tLXdpZHRoOiAkd2lkdGg7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gIH1cblxufVxuXG4lc2N1dC1saW5rLWJiIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLWJiO1xufVxuLy8gU0NVVCBMSU5LIFVOU1RZTEVEXG4vLyBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dC8jbGluay11bnN0eWxlZFxuXG5AbWl4aW4gc2N1dC1saW5rLXVuc3R5bGVkKCkge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGluaGVyaXQ7XG5cbn1cblxuJXNjdXQtbGluay11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay11bnN0eWxlZCgpO1xufVxuXG5AbWl4aW4gc2N1dC1yZXZlcnNlLWl0YWxpY3MgKFxuICAkZWxlbWVudHM6IG51bGxcbikge1xuXG4gICRlbGVtZW50LWxpc3Q6IGVtLCBjaXRlLCBpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICN7am9pbigkZWxlbWVudC1saXN0LCAkZWxlbWVudHMpfSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICB9XG5cbn1cblxuJXNjdXQtcmV2ZXJzZS1pdGFsaWNzIHtcbiAgQGluY2x1ZGUgc2N1dC1yZXZlcnNlLWl0YWxpY3M7XG59XG5cbkBtaXhpbiBzY3V0LXNpZGUtbGluZWQgKFxuICAkaGVpZ2h0OiAxcHgsXG4gICRzcGFjZTogMC41ZW0sXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHYtYWRqdXN0OiBmYWxzZSxcbiAgJGRvdWJsZTogZmFsc2Vcbikge1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA1MCU7XG5cbiAgICBib3JkZXItdG9wLXN0eWxlOiAkc3R5bGU7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogJGhlaWdodDtcblxuICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICR2LWFkanVzdCAhPSBmYWxzZSB7XG4gICAgICBib3R0b206ICR2LWFkanVzdDtcbiAgICB9XG5cbiAgICBAaWYgJGRvdWJsZSAhPSBmYWxzZSB7XG4gICAgICBoZWlnaHQ6ICRkb3VibGU7XG4gICAgICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAkaGVpZ2h0O1xuICAgICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICY6YmVmb3JlIHtcbiAgICByaWdodDogJHNwYWNlO1xuICAgIG1hcmdpbi1sZWZ0OiAtNTAlO1xuICB9XG4gICY6YWZ0ZXIge1xuICAgIGxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6IC01MCU7XG4gIH1cblxufVxuXG4lc2N1dC1zaWRlLWxpbmVkIHtcbiAgQGluY2x1ZGUgc2N1dC1zaWRlLWxpbmVkO1xufVxuQG1peGluIHNjdXQtdHJ1bmNhdGUge1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG59XG5cbiVzY3V0LXRydW5jYXRlIHtcbiAgQGluY2x1ZGUgc2N1dC10cnVuY2F0ZTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BsYWNlaG9sZGVyc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NvbG9yc1wiO1xuQGltcG9ydCBcInRvb2xraXQvZm9udHNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ludHJpbnNpYy1yYXRpb1wiO1xuQGltcG9ydCBcInRvb2xraXQvbmVzdGVkLWNvbnRleHRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BhcmFsbGF4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9ydGxcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RhcmdldFwiO1xuQGltcG9ydCBcInRvb2xraXQvdHJpYW5nbGVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NlbnRlclwiO1xuQGltcG9ydCBcInRvb2xraXQvdmlld3BvcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3VuZGVybGluZVwiO1xuQGltcG9ydCBcInRvb2xraXQvYXJ0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9zZXQtbXVsdGlwbGVcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kVG9vbGtpdC1TZXR0aW5nczogKFxuICAnY2xlYXJmaXggZXh0ZW5kJzogZmFsc2UsXG4gICdjb2xvciBzdGFjayBhbW91bnRzJzogMjUlIDUwJSA3NSUgODUlIDkwJSxcbiAgJ3RpbnQgc2hhZGUgYW1vdW50cyc6IDc1JSA1MCUgMjUlLFxuICAndGludCBjb2xvcic6ICNmZmYsXG4gICdzaGFkZSBjb2xvcic6ICMwMDAsXG4gICdjb2xvciBzY2FsZSBzdGVwcyc6IDYsXG4gICdsaWdhdHVyZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2ZvbnQgZmFjZSB3ZWlnaHQnOiBub3JtYWwsXG4gICdmb250IGZhY2Ugc3R5bGUnOiBub3JtYWwsXG4gICdmb250IGZhY2UgaW5saW5lIHdvZmYnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBleHRlbmQnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBzcGVhayc6IGZhbHNlLFxuICAnZmFkZSBpbiBkdXJhdGlvbic6IDFzLFxuICAnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJzogJy53Zi1sb2FkaW5nJyxcbiAgJ2ZhZGUgaW4gZXh0ZW5kJzogZmFsc2UsXG4gICdpbnRyaW5zaWMgcmF0aW8nOiAxNi85LFxuICAnaW50cmluc2ljIHJhdGlvIHdpZHRoJzogMTAwJSxcbiAgJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cyc6ICc+IConLFxuICAnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJzogdG9wLFxuICAnaW50cmluc2ljIHJhdGlvIGV4dGVuZCc6IGZhbHNlLFxuICAnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnOiAxMDAlLFxuICAnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nOiBsZWZ0LFxuICAndHJpYW5nbGUgY29sb3InOiAjMDAwLFxuICAndHJpYW5nbGUgaGVpZ2h0JzogMWVtLFxuICAndHJpYW5nbGUgd2lkdGgnOiAxZW0sXG4gICd0cmlhbmdsZSBhbmdsZSc6IDAsXG4gICdwYXJhbGxheCBwZXJzcGVjdGl2ZSc6IDEsXG4gICdwYXJhbGxheCBlbGVtZW50JzogJ2JvZHknLFxuICAncGFyYWxsYXggaW9zJzogdHJ1ZSxcbiAgJ3BhcmFsbGF4IGRpc3RhbmNlJzogMCxcbiAgJ3ZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAndmVydGljYWwgZXh0ZW5kJzogZmFsc2UsXG4gICdob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JzogNTAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCc6IGZhbHNlLFxuICAndW5kZXJsaW5lIGJhY2tncm91bmQnOiAjZmZmLFxuICAndW5kZXJsaW5lIGNvbG9yJzogIzAwZSxcbiAgJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJzogdHJ1ZSxcbiAgJ3VuZGVybGluZSBkaXN0YW5jZSc6IDEsXG4gICd1bmRlcmxpbmUgd2lkdGgnOiAyLFxuICAndW5kZXJsaW5lIGV4dGVuZCc6IGZhbHNlLFxuICAnYXJ0IHBpeGVsIHNpemUnOiAxcHgsXG4gICdhcnQgY29sb3InOiBibGFjayxcbiAgJ2FydCBib3JkZXIgcmFkaXVzJzogMCVcbik7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTmV3IFNldHRpbmdzIG1vZHVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHbG9iYWxcbiRHbG9iYWxTZXR0aW5nczogJFRvb2xraXQtU2V0dGluZ3MgIWRlZmF1bHQ7XG4vLyBVc2VyXG4kVXNlclNldHRpbmdzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBVc2VyIFNldHRpbmcgRXhpc3RzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkVXNlclNldHRpbmdzLCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cy1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICRSZXR1cm47XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtaGFzKCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBHZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRHbG9iYWxTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWdldC1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHZhbHVlczogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJHZhbHVlczogbWFwLW1lcmdlKCR2YWx1ZXMsICgkc2V0dGluZzogc2V0dGluZy1nZXQoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWdldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctZ2V0KCRzZXR0aW5nKTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmdzIFNldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICRzZXR0aW5ncykgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQHJldHVybiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRSZXR1cm46ICgpO1xuXG4gIEBlYWNoICRLZXksICRWYWx1ZSBpbiAkVXNlclNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBpZigkc2V0dGluZyA9PSAkS2V5LCAkUmV0dXJuLCBtYXAtbWVyZ2UoJFJldHVybiwgKCRLZXk6ICRWYWx1ZSkpKTtcbiAgfVxuXG4gICRVc2VyU2V0dGluZ3M6ICRSZXR1cm4gIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkY2xlYXItdGhlLXNldHRpbmdzOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkVXNlclNldHRpbmdzOiAoKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1yZXNldCgpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1yZXNldCgpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgUGlja1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrKCRzZXR0aW5nLCAkaW5wdXQpIHtcbiAgQHJldHVybiBpZigkaW5wdXQgIT0gbnVsbCwgJGlucHV0LCBzZXR0aW5nLWdldCgkc2V0dGluZykpO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcsICRpbnB1dCBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHNldHRpbmctcGljaygkaW5wdXQsICRzZXR0aW5nKSkpO1xuICB9XG5cbiAgQHJldHVybiAkUmV0dXJuO1xufSIsIiRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQbGFjZWhvbGRlciBHZXQvU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpIHtcbiAgJHVuaXF1ZS1pZDogdW5pcXVlLWlkKCk7XG4gICRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiBtYXAtbWVyZ2UoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICgkaWQ6ICR1bmlxdWUtaWQpKSAhZ2xvYmFsO1xuICBAcmV0dXJuICR1bmlxdWUtaWQ7XG59XG5cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAkaWQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYXRlIFBsYWNlaG9sZGVyIENsYXNzIGFuZCBFeHRlbmRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCk7XG5cbiAgQGlmICRwbGFjZWhvbGRlci1pZCA9PSBudWxsIHtcbiAgICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCk7XG4gICAgQGF0LXJvb3QgJSN7JHBsYWNlaG9sZGVyLWlkfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGV4dGVuZCAlI3skcGxhY2Vob2xkZXItaWR9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFN0YXRpYyBNaXhpbiBIZWxwZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIG1peGluLWRyeWVyKCRpZCwgJGV4dGVuZDogdHJ1ZSkge1xuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTW9kZXJuIENsZWFyZml4IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjbGVhcmZpeCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2NsZWFyZml4IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY2xlYXJmaXgnKSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29tcGFzcyBFeHRlbnNpb24gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVGludCBhbmQgU2hhZGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTHVtYVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gbHVtYSgkY29sb3IpIHtcbiAgQHJldHVybiAocmVkKCRjb2xvcikgKiAuMjk5KSArIChncmVlbigkY29sb3IpICogLjU4NykgKyAoYmx1ZSgkY29sb3IpICogLjExNCk7XG59XG5cbkBmdW5jdGlvbiBsdW1hLWd0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpID49IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1sdGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA8PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtZGlmZigkY29sb3IxLCAkY29sb3IyKSB7XG4gIEByZXR1cm4gbHVtYSgkY29sb3IxKSAtIGx1bWEoJGNvbG9yMik7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU3RhY2tzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zdGFjaygkbWFpbiwgJHNlY29uZGFyeSwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCdjb2xvciBzdGFjayBhbW91bnRzJyk7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAxIHtcbiAgICAkYW1vdW50czogbnRoKCRhbW91bnRzLCAxKTtcbiAgfVxuXG4gICRzdGFjazogJG1haW47XG5cbiAgQGVhY2ggJGFtb3VudCBpbiAkYW1vdW50cyB7XG4gICAgJHN0YWNrOiBqb2luKCRzdGFjaywgbWl4KCRzZWNvbmRhcnksIG50aCgkc3RhY2ssIDEpLCAkYW1vdW50KSk7XG4gIH1cblxuICBAcmV0dXJuICRzdGFjaztcbn1cblxuLy8gVGludCBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBTaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBUaW50L1NoYWRlIFN0YWNrXG5AZnVuY3Rpb24gdGludC1zaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gICRjb2xvcnM6ICgpO1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ3RpbnQgc2hhZGUgYW1vdW50cycpO1xuICB9XG4gICRsZW5ndGg6IGxlbmd0aCgkYW1vdW50cyk7XG5cbiAgLy8gU2hhZGVzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHNoYWRlKCRjb2xvciwgbnRoKCRhbW91bnRzLCAkaSkpKTtcbiAgfVxuXG4gIC8vIEJhc2VcbiAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsICRjb2xvcik7XG5cbiAgLy8gVGludHNcbiAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkbGVuZ3RoIC0gMSB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHRpbnQoJGNvbG9yLCBudGgoJGFtb3VudHMsICRsZW5ndGggLSAkaSkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJGNvbG9ycztcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTY2FsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXNjYWxlKCRtYWluLCAkc2Vjb25kYXJ5LCAkc3RlcHM6IG51bGwpIHtcbiAgJHN0ZXBzOiBpZigkc3RlcHMgIT0gbnVsbCwgJHN0ZXBzLCB0b29sa2l0LWdldCgnY29sb3Igc2NhbGUgc3RlcHMnKSk7XG5cbiAgJGxpc3Q6ICRtYWluO1xuXG4gICRyZWQxOiByZWQoJG1haW4pO1xuICAkcmVkMjogcmVkKCRzZWNvbmRhcnkpO1xuICAkcmVkLWRpZmY6ICgoJHJlZDEgLSAkcmVkMikgLyAoKCRzdGVwcyAtIDEpKSk7XG5cbiAgJGh1ZTE6IGh1ZSgkbWFpbik7XG4gICRodWUyOiBodWUoJHNlY29uZGFyeSk7XG4gIEBpZiAoJGh1ZTIgKyAzNTkgLSAkaHVlMSkgPCBhYnMoJGh1ZTEgLSAkaHVlMikge1xuICAgICRodWUyOiAkaHVlMiArIDM1OTtcbiAgfVxuICAkaHVlLWRpZmY6ICgkaHVlMiAtICRodWUxKSAvICgkc3RlcHMgLSAxKTtcblxuICAkc2F0MTogc2F0dXJhdGlvbigkbWFpbik7XG4gICRzYXQyOiBzYXR1cmF0aW9uKCRzZWNvbmRhcnkpO1xuICAkc2F0LWRpZmY6IDA7XG4gIEBpZiAkc2F0MSA+ICRzYXQyIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MiAtICRzYXQxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDEgLSAkc2F0MikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkbHRlMTogbGlnaHRuZXNzKCRtYWluKTtcbiAgJGx0ZTI6IGxpZ2h0bmVzcygkc2Vjb25kYXJ5KTtcbiAgJGx0ZS1kaWZmOiAwO1xuICBAaWYgJGx0ZTEgPiAkbHRlMiB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTIgLSAkbHRlMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRsdGUtZGlmZjogKCRsdGUxIC0gJGx0ZTIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGFscDE6IGFscGhhKCRtYWluKTtcbiAgJGFscDI6IGFscGhhKCRzZWNvbmRhcnkpO1xuICAkYWxwLWRpZmY6IDA7XG4gIEBpZiAkYWxwMSA+ICRhbHAyIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMiAtICRhbHAxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGFscC1kaWZmOiAoJGFscDEgLSAkYWxwMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkaHVlLWhvbGQ6ICRodWUxO1xuICAkc2F0LWhvbGQ6ICRzYXQxO1xuICAkbHRlLWhvbGQ6ICRsdGUxO1xuICAkYWxwLWhvbGQ6ICRhbHAxO1xuICAkY29sb3ItaG9sZDogMDtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRzdGVwcyB7XG4gICAgJGh1ZS1ob2xkOiAkaHVlLWhvbGQgKyAkaHVlLWRpZmY7XG4gICAgJHNhdC1ob2xkOiAkc2F0LWhvbGQgKyAkc2F0LWRpZmY7XG4gICAgJGx0ZS1ob2xkOiAkbHRlLWhvbGQgKyAkbHRlLWRpZmY7XG4gICAgJGFscC1ob2xkOiAkYWxwLWhvbGQgKyAkYWxwLWRpZmY7XG5cbiAgICAkY29sb3ItaG9sZDogaHNsYSgkaHVlLWhvbGQsICRzYXQtaG9sZCwgJGx0ZS1ob2xkLCAkYWxwLWhvbGQpO1xuICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRjb2xvci1ob2xkKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRW5hYmxlIGxpZ2F0dXJlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2xpZ2F0dXJlIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2VuYWJsZSBsaWdhdHVyZXMnKSB7XG4gICAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhPTEsIGRsaWc9MVwiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tcy1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW8tZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJsaWdhXCIsXCJkbGlnXCI7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhY2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGZvbnQtZmFjZSgkbmFtZSwgJGZpbGVzLCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwsICRpbmxpbmUtd29mZjogbnVsbCkge1xuICAkd2VpZ2h0OiBpZigkd2VpZ2h0ICE9IG51bGwsICR3ZWlnaHQsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugd2VpZ2h0JykpO1xuICAkc3R5bGU6IGlmKCRzdHlsZSAhPSBudWxsLCAkc3R5bGUsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugc3R5bGUnKSk7XG4gICRpbmxpbmUtd29mZjogaWYoJGlubGluZS13b2ZmICE9IG51bGwsICRpbmxpbmUtd29mZiwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZicpKTtcblxuICAkZm9udC1zdGFjazogKCk7XG4gICRmb250LXNyYzogJyc7XG4gICRlb3Q6IGZhbHNlO1xuICAkZm9udC1leHRlbnNpb25zOiAoJ2VvdCc6ICdlbWJlZGRlZC1vcGVudHlwZScsICd3b2ZmMic6ICd3b2ZmMicsICd3b2ZmJzogJ3dvZmYnLCAndHRmJzogJ3RydWV0eXBlJywgJ3N2Zyc6ICdzdmcnKTtcblxuICBAZWFjaCAkZXh0LCAkZm9ybWF0IGluICRmb250LWV4dGVuc2lvbnMge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkZmlsZXMsICRleHQpIHtcbiAgICAgIEBpZiBmdW5jdGlvbi1leGlzdHMoaW5saW5lLWZvbnQtZmlsZXMpIGFuZCAkaW5saW5lLXdvZmYgPT0gdHJ1ZSBhbmQgKCRleHQgPT0gJ3dvZmYnIG9yICRleHQgPT0gJ3dvZmYyJykge1xuICAgICAgICAkZm9udC1zcmM6IGlubGluZS1mb250LWZpbGVzKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSk7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiBmdW5jdGlvbi1leGlzdHMoZm9udC11cmwpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGZvbnQtc3RhY2s6IGFwcGVuZCgkZm9udC1zdGFjaywgJGZvbnQtc3JjLCAnY29tbWEnKTtcbiAgICB9XG5cbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkbmFtZTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgQGlmICRlb3Qge1xuICAgICAgc3JjOiAkZW90O1xuICAgIH1cbiAgICBAaWYgbGVuZ3RoKCRmb250LXN0YWNrKSA+IDAge1xuICAgICAgc3JjOiAkZm9udC1zdGFjaztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJY29uIEZvbnRcbi8vIEZyb20gaHR0cDovL2ljb21vb24uaW9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGljb24tZm9udCgkZm9udC1zdGFjaywgJHNwZWFrOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRzcGVhazogaWYoJHNwZWFrICE9IG51bGwsICRzcGVhaywgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBzcGVhaycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBmb250LWZhbWlseTogJGZvbnQtc3RhY2s7XG4gIEBpZiAkc3BlYWsgPT0gZmFsc2Uge1xuICAgIHNwZWFrOiBub25lO1xuICB9XG4gIEBpbmNsdWRlIGljb24tZm9udC0tY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIGljb24tZm9udC0tY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaWNvbiBmb250IGNvcmUnKSB7XG4gICAgICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQpO1xuXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFkZSBJblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY29udGVudC1mYWRlLWluKCRkdXJhdGlvbjogbnVsbCwgJGxvYWRpbmc6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGR1cmF0aW9uOiBpZigkZHVyYXRpb24gIT0gbnVsbCwgJGR1cmF0aW9uLCB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpKTtcbiAgJGxvYWRpbmc6IGlmKCRsb2FkaW5nICE9IG51bGwsICRsb2FkaW5nLCB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIGFuZCAkZHVyYXRpb24gPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSBhbmQgJGxvYWRpbmcgPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY29udGVudCBmYWRlIGluJykge1xuICAgICAgQGluY2x1ZGUgY29udGVudC1mYWRlLWluKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGlmIG5vdCBtaXhpbi1leGlzdHMoJ3NpbmdsZS10cmFuc2l0aW9uJykge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBzaW5nbGUtdHJhbnNpdGlvbihvcGFjaXR5ICRkdXJhdGlvbik7XG4gICAgfVxuXG4gICAgI3skbG9hZGluZ30gJiB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGbHVpZCBFbWJlZHMgYW5kIHdoYXRldmVyIFdJVEggTk8gSkFWQVNDSVBUIVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gcGFyZW50Jykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIGNoaWxkJykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgdG9wOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuXG4gIHBhZGRpbmctI3skcG9zaXRpb259OiAoMSAvICRyYXRpbykgKiAkd2lkdGg7XG4gIHdpZHRoOiAkd2lkdGg7XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkZWxlbWVudHM6IGlmKCRlbGVtZW50cyAhPSBudWxsLCAkZWxlbWVudHMsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcblxuICBAZWFjaCAkZWxlbWVudCBpbiAkZWxlbWVudHMge1xuICAgICN7JGVsZW1lbnR9IHtcbiAgICBcdEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGlyKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRlbGVtZW50cywgJGV4dGVuZCwgJHBvc2l0aW9uKTtcbn1cblxuQG1peGluIGlyLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xufSIsIi8vIHNpbXBsZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb250ZXh0IG9mIGEgbmVzdGVkIHBlcmNlbnRhZ2UuXG5AZnVuY3Rpb24gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuXG4gIC8vIEZpcnN0IGxldmVsIGRlZXAgaXMgYWx3YXlzIDEwMCVcbiAgJHBlcmNlbnRhZ2U6IDEwMCU7XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggbGV2ZWxcbiAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAvLyBJbnZlcnQgdGhlIHBlcmNlbnRhZ2UgdG8gZmluZCBjb250ZXh0XG4gICAgJHBlcmNlbnRhZ2U6IHBlcmNlbnRhZ2UoJHBlcmNlbnRhZ2UgLyAkY29udGV4dCk7XG4gIH1cbiAgLy8gUmV0dXJuIGZpbmFsIHBlcmNlbnRhZ2VcbiAgQHJldHVybiAkcGVyY2VudGFnZTtcbn1cblxuLy8gbWl4aW4gdG8gbWFrZSB0aGluZ3MgZWFzaWVyXG5AbWl4aW4gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJykpO1xuXG4gIHdpZHRoOiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpO1xuICBAaWYgJHBvc2l0aW9uID09IFwiY2VudGVyXCIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtLjU7XG4gIH1cbiAgQGlmICRwb3NpdGlvbiA9PSBcInJpZ2h0XCIge1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLTEgKyAxMDAlO1xuICB9XG59IiwiLy8gTWFnaWMgcGFyYWxsYXggbWl4aW5zXG5AbWl4aW4gcGFyYWxsYXgtaW5pdCgkcGVyc3BlY3RpdmU6IG51bGwsICRlbGVtZW50OiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG5cbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRlbGVtZW50OiBpZigkZWxlbWVudCAhPSBudWxsLCAkZWxlbWVudCwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGVsZW1lbnQnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBAaWYgJGVsZW1lbnQgPT0gJ2JvZHknIHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBodG1sLCBib2R5IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuICAgICAgYm9keSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRlbGVtZW50ID09IHRoaXMge1xuICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBhdC1yb290ICN7JGVsZW1lbnR9IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlOiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgb3ZlcmZsb3c6IGF1dG87XG4gIEBpZiBtaXhpbi1leGlzdHMocGVyc3BlY3RpdmUpIHtcbiAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUgKiAxcHgpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gICAgcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgfVxuICAvLyBBbGxvd3MgZm9yIHNtb290aCBzY3JvbGxpbmcgYnV0IGRpc2FibGVzIHBhcmFsbGF4IGVmZmVjdHMuXG4gIEBpZiAkcGFyYWxsYXgtaW9zID09IGZhbHNlIHtcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cbiAgLy8gTWFrZSBzdXJlIDNEIHBlcnNwZWN0aXZlIGlzIHByZXNlcnZlZFxuICAmLCAmICoge1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtLXN0eWxlKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUocHJlc2VydmUtM2QpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgoJGRpc3RhbmNlOiBudWxsLCAkcGVyc3BlY3RpdmU6IG51bGwpIHtcblxuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBkaXN0YW5jZScpKTtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG5cbiAgJHRyYW5zZm9ybTogdHJhbnNsYXRlWigkZGlzdGFuY2UgKiAkcGVyc3BlY3RpdmUgKiAxcHgpIHNjYWxlKGFicygkZGlzdGFuY2UgLSAxKSk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zZm9ybSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICAgIHRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgfVxuXG4gIHotaW5kZXg6ICRkaXN0YW5jZSAqIDEwMDtcbn1cbiIsIkBtaXhpbiBydGwoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgJF9wcm9wZXJ0eTogJHByb3BlcnR5O1xuICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcblxuICBAaWYgbGVuZ3RoKCR2YWx1ZSkgPT0gNCB7XG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICN7JHByb3BlcnR5fTogbnRoKCR2YWx1ZSwgMSkgbnRoKCR2YWx1ZSwgNCkgbnRoKCR2YWx1ZSwgMykgbnRoKCR2YWx1ZSwgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSAtIDEpICsgJ3JpZ2h0JztcbiAgICB9XG4gICAgQGVsc2UgaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpIC0gMSkgKyAnbGVmdCc7XG4gICAgfVxuXG4gICAgQGlmICRwcm9wZXJ0eSAhPSAkX3Byb3BlcnR5IHtcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIkBtaXhpbiB0YXJnZXQoJHRhcmdldCkge1xuICBAYXQtcm9vdCB7XG4gICAgLyohIEB7dGFyZ2V0OiAjeyR0YXJnZXR9fSAqL1xuICAgICYge1xuICAgICAgQGNvbnRlbnQ7ICBcbiAgICB9XG4gICAgLyohIHt0YXJnZXQ6ICN7JHRhcmdldH19QCAqLyAgXG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERyYXcgdHJpYW5nbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIHRyaWFuZ2xlKCRjb2xvcjogbnVsbCwgJGhlaWdodDogbnVsbCwgJHdpZHRoOiBudWxsLCAkYW5nbGU6IG51bGwpIHtcblxuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBjb2xvcicpKTtcbiAgJGhlaWdodDogaWYoJGhlaWdodCAhPSBudWxsLCAkaGVpZ2h0LCB0b29sa2l0LWdldCgndHJpYW5nbGUgaGVpZ2h0JykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSB3aWR0aCcpKTtcbiAgJGFuZ2xlOiBpZigkYW5nbGUgIT0gbnVsbCwgJGFuZ2xlLCB0b29sa2l0LWdldCgndHJpYW5nbGUgYW5nbGUnKSk7XG5cbiAgQGlmIG50aCgkYW5nbGUsIDEpID09IFwidG9wXCIgb3IgbnRoKCRhbmdsZSwgMSkgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiBcIiN7JGFuZ2xlfVwiO1xuICB9XG5cbiAgQGlmICRhbmdsZSA9PSBcInRvcFwiIHtcbiAgICAkYW5nbGU6IDA7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwicmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDI7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMTtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogNDUgKiA0O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwibGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDU7XG4gIH1cblxuICBAaWYgdW5pdCgkaGVpZ2h0KSA9PSBcIlwiIG9yIHVuaXQoJGhlaWdodCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JGhlaWdodH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciBoZWlnaHQuXCJcbiAgfVxuXG4gIEBpZiB1bml0KCR3aWR0aCkgPT0gXCJcIiBvciB1bml0KCR3aWR0aCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JHdpZHRofSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIHdpZHRoLlwiXG4gIH1cblxuICAvLyBvZmZzZXQgNDVkZWcgdG8gbWFrZSBlYWNoIHNpZGUgc3RhcnQgYXQgMFxuICAkZGVnOiAkYW5nbGUgKyA0NTtcbiAgLy8gaWYgdW5pdHMsIHJlbW92ZSB1bml0c1xuICBAaWYgdW5pdCgkZGVnKSA9PSBkZWcge1xuICAgICRkZWc6ICRkZWcgLyAxZGVnO1xuICB9XG4gIC8vIHNoaWZ0IHRvIGJlIG9uIGEgc2NhbGUgZnJvbSAwIHRvIDkwLlxuICBAd2hpbGUgJGRlZyA+IDkwIHtcbiAgICAkZGVnOiAkZGVnIC0gOTA7XG4gIH1cbiAgQHdoaWxlICRkZWcgPCAwIHtcbiAgICAkZGVnOiAkZGVnICsgOTA7XG4gIH1cbiAgLy8gR2V0IGEgcmF0aW8gb2YgOTAgdG8gbXVsdGlwbHkgYnkuXG4gICRkZWc6ICRkZWcgLyA5MDtcblxuICAvLyBtYWtlIHN1cmUgbWV0cmljcyBhcmUgcmVzZXRcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAvLyBydW4gdGhyb3VnaCBzaWRlc1xuICBAaWYgJGFuZ2xlIDw9IDQ1IG9yICRhbmdsZSA+IDMxNSB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSkgJGhlaWdodCAoJHdpZHRoICogJGRlZyk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDQ1IGFuZCAkYW5nbGUgPD0gMTM1IHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiAkZGVnKSAwICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAxMzUgYW5kICRhbmdsZSA8PSAyMjUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpIDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAyMjUgYW5kICRhbmdsZSA8PSAzMTUge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGggKCRoZWlnaHQgKiAkZGVnKSAwO1xuICB9XG59IiwiLy8gVmVydGljYWxseSBjZW50ZXIgYW55dGhpbmcsIGxpdGVyYWxseSBhbnl0aGluZy5cbi8vIGh0dHA6Ly96ZXJvc2l4dGhyZWUuc2UvdmVydGljYWwtYWxpZ24tYW55dGhpbmctd2l0aC1qdXN0LTMtbGluZXMtb2YtY3NzL1xuQG1peGluIHZlcnRpY2FsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgndmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcblxuICB0b3A6ICRtaWRwb2ludDtcbiAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd2ZXJ0aWNhbCBjZW50ZXInKSB7XG4gICAgICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIb3Jpem9udGFsIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIEBpZiAkbWlkcG9pbnQgIT0gMCUge1xuICAgIGxlZnQ6ICRtaWRwb2ludDtcbiAgfVxuXG4gIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWJzb2x1dGUgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIoJHZlcnRpY2FsOiBudWxsLCAkaG9yaXpvbnRhbDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICR2ZXJ0aWNhbDogaWYoJHZlcnRpY2FsICE9IG51bGwsICR2ZXJ0aWNhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIHRvcDogJHZlcnRpY2FsO1xuICBAaWYgJGhvcml6b250YWwgIT0gMCUge1xuICAgIGxlZnQ6ICRob3Jpem9udGFsO1xuICB9XG5cbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIH1cbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxuXG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDU1MgbGV2ZWwgNCBWaWV3cG9ydFxuLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLWRldmljZS1hZGFwdC8jdGhlLWF0dmlld3BvcnQtcnVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gdmlld3BvcnQge1xuICBALXdlYmtpdC12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tb3otdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbXMtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEB2aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuIiwiQG1peGluIHVuZGVybGluZSgkYmFja2dyb3VuZDogbnVsbCwgJGNvbG9yOiBudWxsLCAkY2xlYXItZGVzY2VuZGVyczogbnVsbCwgJGRpc3RhbmNlOiBudWxsLCAkd2lkdGg6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGJhY2tncm91bmQ6IGlmKCRiYWNrZ3JvdW5kICE9IG51bGwsICRiYWNrZ3JvdW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGJhY2tncm91bmQnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjb2xvcicpKTtcbiAgJGNsZWFyLWRlc2NlbmRlcnM6IGlmKCRjbGVhci1kZXNjZW5kZXJzICE9IG51bGwsICRjbGVhci1kZXNjZW5kZXJzLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnKSk7XG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBkaXN0YW5jZScpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIHdpZHRoJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gICRQWDogLjA2MjVlbTtcblxuICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKGJhY2tncm91bmQtaW1hZ2UpIGFuZCBmdW5jdGlvbi1leGlzdHMobGluZWFyLWdyYWRpZW50KSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgIGxpbmVhci1ncmFkaWVudChib3R0b20sICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSlcbiAgICApO1xuICB9XG4gIEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpO1xuICB9XG4gIGJhY2tncm91bmQtc2l6ZTogKDIgKiAkUFgpICgoMSArICR3aWR0aCkgKiAkUFgpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwICgoJHdpZHRoKSAqICRQWCkgKyAkZGlzdGFuY2U7XG5cbiAgQGlmICRjbGVhci1kZXNjZW5kZXJzIHtcbiAgICB0ZXh0LXNoYWRvdzogKDEgKiAkUFgpICgxICogJFBYKSAwICRiYWNrZ3JvdW5kLCAoLTEgKiAkUFgpIDAgMCAkYmFja2dyb3VuZDtcbiAgfVxufVxuXG5AbWl4aW4gdW5kZXJsaW5lLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndW5kZXJsaW5lJykge1xuICAgICAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQVJUIVxuLy8gSW5zcGlyZWQgYnkgaHR0cDovL2VscnVtb3JkZWxhbHV6LmdpdGh1Yi5pby9QaXhlbGF0b3IvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhcnQoJGFydCwgJHB4LXNpemU6IG51bGwsICRjb2xvcjogbnVsbCwgJHJhZGl1czogbnVsbCkge1xuICAkcHgtc2l6ZTogaWYoJHB4LXNpemUgIT0gbnVsbCwgJHB4LXNpemUsIHRvb2xraXQtZ2V0KCdhcnQgcGl4ZWwgc2l6ZScpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgnYXJ0IGNvbG9yJykpO1xuICAkcmFkaXVzOiBpZigkcmFkaXVzICE9IG51bGwsICRyYWRpdXMsIHRvb2xraXQtZ2V0KCdhcnQgYm9yZGVyIHJhZGl1cycpKTtcblxuICAkYnVpbGQ6ICgpO1xuICAkeTogJHB4LXNpemU7XG4gICR4OiAwO1xuXG4gIGhlaWdodDogJHB4LXNpemU7XG4gIHdpZHRoOiAkcHgtc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0cl9sZW5ndGgoJGFydCkge1xuICAgICRjaGFyOiBzdHJfc2xpY2UoJGFydCwgJGksICRpKTtcbiAgICAkeDogJHggKyAkcHgtc2l6ZTtcblxuICAgIEBpZiAkY2hhciA9PSAnbicge1xuICAgICAgJHk6ICR5ICsgJHB4LXNpemU7XG4gICAgICAkeDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGNoYXIgIT0gJyAnIHtcbiAgICAgICRib3JkZXI6ICR4ICR5IDAgJGNvbG9yO1xuICAgICAgJGJ1aWxkOiBhcHBlbmQoJGJ1aWxkLCAkYm9yZGVyLCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgYm94LXNoYWRvdzogJGJ1aWxkO1xufSIsIkBtaXhpbiBzZXQtbXVsdGlwbGUoJHZhbHVlLCAkcHJvcGVydGllcy4uLikge1xuICAkcHJvcGVydHktbGVuZ3RoOiBsZW5ndGgoJHByb3BlcnRpZXMpO1xuICAkZXJyb3ItbXNnOiBcIlRoZSBgc2V0LW11bHRpcGxlYCBtaXhpbiByZXF1aXJlcyB5b3UgdG8gcGFzcyBpbiBhIGxpc3Qgb2YgcHJvcGVydGllcyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50XCI7XG5cbiAgQGlmICRwcm9wZXJ0eS1sZW5ndGggPCAxIHtcbiAgICBAaWYgZmVhdHVyZS1leGlzdHMoYXQtZXJyb3IpIHtcbiAgICAgIEBlcnJvciAkZXJyb3ItbXNnO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAkZXJyb3ItbXNnO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgaW4gaXMgYSB3aGl0ZS1zcGFjZWQgc2VwYXJhdGVkIGxpc3QuXG4gICRwcm9wZXJ0aWVzOiBpZigkcHJvcGVydHktbGVuZ3RoID09IDEsIG50aCgkcHJvcGVydGllcywgMSksICRwcm9wZXJ0aWVzKTtcblxuICBAZWFjaCAkcHJvcGVydHkgaW4gJHByb3BlcnRpZXMge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlXG4gIH1cbn1cbiIsIi8vICBNb2R1bGUgU2NhbGUgYW5kIGJhc2UgZm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiRiYXNlLWZvbnQtc2l6ZTogICAxNHB4O1xuJGlkZWFsLWZvbnQtc2l6ZTogIDIycHg7XG4vLyAkYmFzZS1saW5lLWhlaWdodDogbXMoMSwgJGJhc2UtZm9udC1zaXplKTtcblxuJHJoeXRobS11bml0OiBcInJlbVwiO1xuJHJoeXRobS1nYXA6IDhweDtcbiRyZW0td2l0aC1weC1mYWxsYmFjazogZmFsc2U7XG5cbiRzY3V0LXJlbS1iYXNlOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UtZm9udC1zaXplKTtcblxuXG4vLyB7eyBDb21wb25lbnQgc2l6ZSB9fVxuJGdsb2JhbC1yYWRpdXM6IDNweDtcbiIsIi8vICBHcmlkIHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuXG4kbGF5b3V0LWJhc2U6IChcbiAgZ3V0dGVyczogMS81LFxuICBjb2x1bW4td2lkdGg6IDgwcHgsXG4gIC8vIGd1dHRlci1wb3NpdGlvbjogaW5zaWRlLXN0YXRpYyxcbiAgZGVidWc6IChcbiAgICAvLyBpbWFnZTogc2hvdyxcbiAgKSxcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiB0cnVlLFxuICAgIHJlbTogZmFsc2UsXG4gICksXG4pO1xuJHN1c3k6IGxheW91dCg1ICRsYXlvdXQtYmFzZSk7XG5cbi8vIHt7IEVsZW1lbnQgdHdpY2sgcG9pbnRzIH19XG5cbi8vIHt7IERldmljZSBsYXlvdXRzIH19XG4kc3VzeS1tZWRpYTogKFxuICAnbW9iaWxlJzogJyhtYXgtd2lkdGg6IDQxNHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiAnKG1heC13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogJyhtYXgtd2lkdGg6IDEwMjRweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICd0YWJsZXQnOiAnKG1pbi13aWR0aDogNzY4cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdC1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlLW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdkZXNrdG9wJzogJyhtaW4td2lkdGg6IDEyMDBweCknLFxuICAnY2F0ZWdvcnktbWVudSc6ICcobWluLXdpZHRoOiAxMDI0cHgpJ1xuKTtcbiR0YWJsZXQ6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIHRhYmxldCksXG4gIGxheW91dDogOSAuNVxuKTtcbiR0YWJsZXQtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkdGFibGV0LCBsYXlvdXQpKTtcbiRkZXNrdG9wOiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCBkZXNrdG9wKSxcbiAgbGF5b3V0OiAxMiAxLjUgc3BsaXRcbik7XG4kZGVza3RvcC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCRkZXNrdG9wLCBsYXlvdXQpKTtcbiRkZXNrdG9wLWdyaWQtcGFkZGluZzogc2N1dC1yZW0oMTUpO1xuXG4vLyAge3sgTGF5ZXJzIC0tLS0tLSB9fVxuJGxheWVyczogKFxuICBiYXNlLFxuICBoZWFkZXItbWVudSxcbiAgZHJhd2VyLFxuICBkcmF3ZXItc2hhZG93LFxuICBkcmF3ZXItbmF2LFxuKTsiLCIvLyAgU2V0dGluZ3Ncbi8vICA9PT09PT09PVxuXG4kY29sb3ItbGlnaHQtc2F0dXJhdGlvbjogOTMlO1xuXG4vLyAgQ29sb3JzXG4vLyAgPT09PT09XG5cbiRncmF5LWJhc2U6ICAgICAjMDAwICFkZWZhdWx0O1xuJGdyYXktZGFya2VyOiAgIHRpbnQoJGdyYXktYmFzZSwgMTMuNSUpICFkZWZhdWx0O1xuJGdyYXktZGFyazogICAgIHRpbnQoJGdyYXktYmFzZSwgMjAlKSAgICFkZWZhdWx0O1xuJGdyYXk6ICAgICAgICAgIHRpbnQoJGdyYXktYmFzZSwgMzMuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHQ6ICAgIHRpbnQoJGdyYXktYmFzZSwgNDYuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHRlcjogIHRpbnQoJGdyYXktYmFzZSwgOTMuNSUpICFkZWZhdWx0O1xuXG4vLyAgVGV4dHNcbi8vICAtLS0tLVxuXG4kdGV4dC1jb2xvcjogJGdyYXktZGFyaztcblxuLy8gIFBhbGxldGVcbi8vICAtLS0tLS0tLS0tLVxuXG4kYmx1ZTogIzJkNmVjNjtcbiRibHVlLWRhcms6IHJnYigwLCA2OSwgMTY0KTtcbiRibHVlLWxpZ2h0OiAjZDhlOWZmO1xuJHllbGxvdzogI2ZjOTYwMDtcbiR5ZWxsb3ctZGFyazogI2I4NmUwMDtcbiR5ZWxsb3ctbGluazogI2ZmZDgwMDtcbiRvcmFuZ2U6ICNmYzQ3MDA7XG4kb3JhbmdlLWRhcms6ICNiODZlMDA7XG4kcmVkOiByZ2IoMjA2LCA2OCwgNjIpO1xuJGdyZWVuOiByZ2IoMjgsIDE0OSwgMjIpO1xuJHBpbms6IHJnYigxOTcsIDMxLCAxMjQpO1xuXG4kcHJpbWFyeTogc2hhZGUoIzQyOGJjYSwgNi41JSk7XG4kc3VjY2VzczogIzVjYjg1YztcbiRpbmZvOiAgICAjNWJjMGRjO1xuJHdhcm5pbmc6ICNmMGFkNGU7XG4kZGFuZ2VyOiAgI2Q5NTM0ZjtcblxuJGlucHV0LWJvcmRlcjogI2U0ZTRlNDtcbiRib3JkZXItZ3JheTogIzkxOTE5MTtcbiRiYWNrZ3JvdW5kLWdyYXk6ICNlOWU5ZTk7XG5cbi8vICBMaW5rc1xuLy8gIC0tLS0tXG5cbiRsaW5rLWNvbG9yOiAgICAgICAgICAgIzAwMCAhZGVmYXVsdDtcbiRsaW5rLWhvdmVyLWNvbG9yOiAgICAgc2hhZGUoJGxpbmstY29sb3IsIDE1JSkgIWRlZmF1bHQ7XG4kbGluay1mb2N1cy1jb2xvcjogICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay1hY3RpdmUtY29sb3I6ICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay12aXNpdGVkLWNvbG9yOiAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG5cbi8vICBOUHJvZ3Jlc3Ncbi8vICAtLS0tLS0tLS1cbiRucHJvZ3Jlc3MtY29sb3I6ICAgICRwcmltYXJ5O1xuIiwiLy8gIEZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogICByaWdodDtcblxuLy8g5YOF6Yed5bCN6Iux5paHXG4vLyBAZm9udC1mYWNlIHtcbi8vICAgZm9udC1mYW1pbHk6IEVuZ2xpc2g7XG4vLyAgIHVuaWNvZGUtcmFuZ2U6IFUrMDAtMDI0Rjtcbi8vICAgc3JjOiBsb2NhbChIZWx2ZXRpY2EpO1xuLy8gfVxuXG4kc2FuczogICAgSGVsdmV0aWNhTmV1ZS1MaWdodFxuICAgICAgICwgJ0hlbHZldGljYSBOZXVlIExpZ2h0J1xuICAgICAgICwgJ0hlbHZldGljYSBOZXVlJ1xuICAgICAgICwgIEhlbHZldGljYVxuICAgICAgICwgJ0hlaXRpIFRDJ1xuICAgICAgICwgJ0xpSGVpIFBybydcbiAgICAgICAsICdNaWNyb3NvZnQgSmhlbmdIZWknXG4gICAgICAgLCAn5b6u6Luf5q2j6buR6auUJ1xuICAgICAgICwgIEFyaWFsXG4gICAgICAgLCAgc2Fucy1zZXJpZjtcblxuJHNlcmlmOiAgJ1BUIFNlcmlmJ1xuICAgICAgICwgR2VvcmdpYVxuICAgICAgICwgVGltZXNcbiAgICAgICAsICdUaW1lcyBOZXcgUm9tYW4nXG4gICAgICAgLCAnU29uZ3RpIFRDJ1xuICAgICAgICwgJ0hpcmFnaW5vIE1pbmNobyBQcm9OJ1xuICAgICAgICwgc2VyaWY7XG5cbiRiYXNlLWZvbnQtZmFtaWx5OiAkc2FuczsiXSwibWFwcGluZ3MiOiJBOENBQTs7Ozs7RUFLRTtBOUNNc0IsQUFBQSx5QkFBeUIsQ0FBQztFQUNoRCxRQUFRLEVBQUUsUUFBUztFQUNuQixJQUFJLEVBQUUsWUFBYSxHQWdDcEI7RUFsQ3VCLEFBQUEseUJBQXlCLEFBSTlDLFFBQVEsQ0FBQztJQUNSLE9BQU8sRUFBRSxFQUFHO0lBQ1osT0FBTyxFQUFFLEtBQU07SUFDZixNQUFNLEVBQUUsR0FBSTtJQUNaLFFBQVEsRUFBRSxRQUFRLENDbEJFLENBQU8sQ0RrQkosQ0FBQyxDQUFDLElBQUksQ0NoQkEsSUFBVztJRGlCeEMsZ0JBQWdCLEVBQUUsWUFBYSxHQUNoQztFQVZxQixBQUFBLDhCQUF5QixDQVl4QztJQUFFLEtBQUssRWtFUVYsT0FBRyxHbEVSaUI7RUFaRixBQUFBLGdDQUF5QixDQWF0QztJQUFFLEtBQUssRWtFUVYsT0FBRyxHbEVSbUI7RUFiTixBQWV0Qix5QkFmK0MsQ0FlL0MsS0FBSyxDQUFDO0lBQ0osYUFBYSxFQ3hCZ0IsR0FBVztJRHlCeEMsUUFBUSxFQUFFLFFBQVEsQ0MzQkUsQ0FBTyxDQUFQLENBQU8sQ0QyQkEsQ0FBQyxDQ3pCQyxJQUFXO0lEMEJ4QyxJQUFJLEVBQUUsV0FBWTtJQUNsQixnQkFBZ0IsRUFBRSxJQUFLLEdBQ3hCO0VBcEJxQixBQXNCdEIseUJBdEIrQyxDQXNCL0MsS0FBSyxDQUFDO0lBQ0osSUFBSSxFQUFFLElBQUs7SUFDWCxnQkFBZ0IsRUFBRSxJQUFLLEdBQ3hCO0VBekJxQixBQTJCdEIseUJBM0IrQyxDQTJCL0MsS0FBSyxDQUFDO0lBQ0osT0FBTyxFQUFFLFlBQWE7SUFDdEIsWUFBWSxFQ3JDaUIsR0FBVztJRHNDeEMsUUFBUSxFQUFFLFFBQVEsQ0N4Q0UsQ0FBTyxDRHdDSixDQUFDLENBQUUsR0FBQyxDQ3hDUCxDQUFPO0lEeUMzQixJQUFJLEVBQUUsbUJBQW9CO0lBQzFCLGdCQUFnQixFQUFFLElBQUssR0FDeEI7O0FBR0gsQUFBQSx5QkFBeUIsQ0FBQztFQUFFLEtBQUssRUFBRSxHQUFJLEdBQUkiLCJuYW1lcyI6W119 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.military-videos {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.military-videos {
  margin-top: -8px; }

.military-video__heading {
  margin: 8px auto;
  text-align: center;
  font-size: 18px; }

.military-video__wrapper {
  display: block;
  width: 100%; }

.military-video__image {
  width: 100%; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX21pbGl0YXJ5LXZpZGVvcy5zY3NzIiwic291cmNlcyI6WyIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvY29tcG9uZW50cy9fbWlsaXRhcnktdmlkZW9zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX21peGlucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19jbGFzc2VzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2UvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9fc3Uuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fZmxvYXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3NoYXJlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3ByZWZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9faW5zcGVjdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX291dHB1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19lbmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3ZhbGlkYXRpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ncmlkcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ndXR0ZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dhbGxlcnkuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ibGVlZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2N1dC9kaXN0L19zY3V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL190b29sa2l0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BsYWNlaG9sZGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fZm9udHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9faW50cmluc2ljLXJhdGlvLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX25lc3RlZC1jb250ZXh0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3BhcmFsbGF4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3J0bC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190YXJnZXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdHJpYW5nbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2VudGVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3ZpZXdwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3VuZGVybGluZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19hcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0LW11bHRpcGxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3NjYWxlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2ZvbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAtLS0tIHZlbmRvciBtaXhpbiBsaWJyYXJpZXMgLS0tLVxuQGltcG9ydCBcIm1peGluc1wiLFxuICAgICAgICBcImNsYXNzZXNcIixcbiAgICAgICAgXCJ+c3VzeVwiLFxuICAgICAgICBcIn5zY3V0XCIsXG4gICAgICAgIFwifnNhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0XCI7XG5cbi8vIC0tLS0gdmFyaWFibGVzIGFuZCBjb25maWcgLS0tLVxuQGltcG9ydCBcInNldHRpbmdzL3NjYWxlXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZ3JpZFwiLFxuICAgICAgICBcInNldHRpbmdzL2NvbG9yc1wiLFxuICAgICAgICBcInNldHRpbmdzL2ZvbnRcIjsubWlsaXRhcnktdmlkZW9zIHtcbiAgQGV4dGVuZCAlc2N1dC1saXN0LXVuc3R5bGVkO1xuICBtYXJnaW4tdG9wOiByKC0xKTtcbn1cbi5taWxpdGFyeS12aWRlb19faGVhZGluZyB7XG4gIG1hcmdpbjogcigxKSBhdXRvO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cbi5taWxpdGFyeS12aWRlb19fd3JhcHBlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cbi5taWxpdGFyeS12aWRlb19faW1hZ2UgeyB3aWR0aDogMTAwJTsgfSIsIi8vIHt7U2FzcyBtaXhpbnMgLS0tLS0tLS19fVxuQGZ1bmN0aW9uIG4oKSB7IEByZXR1cm4gdW5xdW90ZShcIipcIik7IH1cblxuQGZ1bmN0aW9uIHIoJHRpbWVzOiAxKSB7IEByZXR1cm4gJHJoeXRobS1nYXAgKiAkdGltZXM7IH1cblxuQG1peGluIHN1c3koJG1hcCkge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkbWFwLCBxdWVyeSksIG1hcC1nZXQoJG1hcCwgbGF5b3V0KSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiByZXZlcnNlLWhpZGUtdmlzdWFsbHkoKSB7XG4gIGJvcmRlcjogMDtcbiAgY2xpcDogYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogYXV0bztcbn1cblxuQG1peGluIHNoYXJlLWJyZWFrcG9pbnRzKCRtYXAsICRjc3Nwcm9wOiBjb250ZW50KSB7XG4gICRkZXNjcmlwdGlvbjogJyc7XG5cbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgQGlmICRkZXNjcmlwdGlvbiAhPSAgJycge1xuICAgICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAnIHwgJztcbiAgICB9XG4gICAgXG4gICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAkcHJvcGVydHkgKyc6ICcrIGluc3BlY3QoJHZhbHVlKTtcbiAgfVxuXG4gIGRpc3BsYXk6IG5vbmU7XG4gICN7JGNzc3Byb3B9OiAgJGRlc2NyaXB0aW9uO1xufVxuXG5AbWl4aW4gdG9nZ2xlLWZhZGUoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIH1cbn1cblxuQG1peGluIHRvZ2dsZS1zaG93KCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IDA7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9ICBcbn1cblxuQG1peGluIHNob3coKSB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICBoZWlnaHQ6IGF1dG87ICBcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyKCkge1xuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCBcbiAgJjo6LW1vei1wbGFjZWhvbGRlcixcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxufVxuXG5AbWl4aW4gZGVidWcoJGNvbG9yOiAjZmZmIHJnYmEodG9tYXRvLCAuMykpIHtcbiAgY29sb3I6ICRjb2xvclxufVxuXG5AbWl4aW4gbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSk7XG4gID4gbGkgKyBsaTpiZWZvcmUgeyBtYXJnaW4tbGVmdDogJHNwYWNlICsgNHB4OyB9XG59XG4iLCJAbWl4aW4gSGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBTZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBwYWRkaW5nOiAwIHIoMikgMCByKDEpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAvLyBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIC8vIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gIC8vIGJhY2tncm91bmQ6IHVybChcImltYWdlcy9hcnJvdy1kb3duLnN2Z1wiKVxuICAvLyAgICAgICAgICAgOTIlIDUwJSAvIDhweCAxMHB4XG4gIC8vICAgICAgICAgICBuby1yZXBlYXRcbiAgLy8gICAgICAgICAgIHRyYW5zcGFyZW50O1xuICAubm8tY3NzLWFwcGVhcmFuY2UgJiB7XG4gICAgQGluY2x1ZGUgc2N1dC1wYWRkaW5nKG4gMCk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gTm9ybWFsaXplKCkge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmUgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDA7XG59IiwiLy8gU3VzeVxuLy8gPT09PVxuXG5AaW1wb3J0ICdzdXN5L2xhbmd1YWdlL3N1c3knO1xuIiwiLy8gU3VzeSBOZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4kc3VzeS12ZXJzaW9uOiAyLjE7XG5cbkBpbXBvcnQgXCIuLi9zdVwiO1xuQGltcG9ydCBcIi4uL291dHB1dC9mbG9hdFwiO1xuXG5AaW1wb3J0IFwic3VzeS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1c3kvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1c3kvZ3JpZHNcIjtcbkBpbXBvcnQgXCJzdXN5L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRleHRcIjtcbkBpbXBvcnQgXCJzdXN5L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInN1c3kvc3BhblwiO1xuQGltcG9ydCBcInN1c3kvZ3V0dGVyc1wiO1xuQGltcG9ydCBcInN1c3kvaXNvbGF0ZVwiO1xuQGltcG9ydCBcInN1c3kvZ2FsbGVyeVwiO1xuQGltcG9ydCBcInN1c3kvcm93c1wiO1xuQGltcG9ydCBcInN1c3kvbWFyZ2luc1wiO1xuQGltcG9ydCBcInN1c3kvcGFkZGluZ1wiO1xuQGltcG9ydCBcInN1c3kvYmxlZWRcIjtcbkBpbXBvcnQgXCJzdXN5L2JyZWFrcG9pbnQtcGx1Z2luXCI7XG4iLCIvLyBTdVxuLy8gPT1cblxuQGltcG9ydCBcInN1L3V0aWxpdGllc1wiO1xuQGltcG9ydCBcInN1L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3UvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1L2dyaWRcIjtcbiIsIi8vIE1hcCBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBUcnVuY2F0ZSBMaXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiBhIGxpc3QsIHRydW5jYXRlZCB0byBhIGdpdmVuIGxlbmd0aFxuQGZ1bmN0aW9uIF9zdXN5LXRydW5jYXRlLWxpc3QoXG4gICRsaXN0LFxuICAkbGVuZ3RoXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgJF9yZXR1cm46IGlmKCRpIDw9ICRsZW5ndGgsIGFwcGVuZCgkX3JldHVybiwgbnRoKCRsaXN0LCAkaSkpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgR2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1nZXQoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46ICRtYXA7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIHR5cGUtb2YoJF9yZXR1cm4pID09IG1hcCB7XG4gICAgICAkX3JldHVybjogbWFwLWdldCgkX3JldHVybiwgJGtleSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIFNldFxuLy8gLS0tLS0tLS1cbi8vIC0gU2V0IGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtc2V0KFxuICAkbWFwLFxuICAka2V5cy12YWx1ZS4uLlxuKSB7XG4gICRfdmFsdWU6IG50aCgka2V5cy12YWx1ZSwgLTEpO1xuICAkX2tleXM6IF9zdXN5LXRydW5jYXRlLWxpc3QoJGtleXMtdmFsdWUsIGxlbmd0aCgka2V5cy12YWx1ZSkgLSAxKTtcbiAgJF9sZW5ndGg6IGxlbmd0aCgkX2tleXMpO1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkX2xlbmd0aCB7XG4gICAgJF9uOiAwIC0gJGk7XG4gICAgJF9sZXZlbDogX3N1c3ktdHJ1bmNhdGUtbGlzdCgkX2tleXMsICRfbGVuZ3RoICsgJF9uKTtcbiAgICAkX2xldmVsOiBfc3VzeS1kZWVwLWdldCgkbWFwLCAkX2xldmVsLi4uKTtcbiAgICAkX21lcmdlOiBudGgoJF9rZXlzLCAkX24pO1xuICAgICRfbWVyZ2U6ICgkX21lcmdlOiAkX3ZhbHVlKTtcbiAgICAkX3JldHVybjogaWYoJF9sZXZlbCwgbWFwLW1lcmdlKCRfbGV2ZWwsICRfbWVyZ2UpLCAkX21lcmdlKTtcbiAgICAkX3ZhbHVlOiAkX3JldHVybjtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBNZXJnZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIDIgb2JqZWN0cyBvZiBhbnkgZGVwdGgsIG1lcmdlZFxuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtbWVyZ2UoXG4gICRtYXAxLFxuICAkbWFwMlxuKSB7XG5cbiAgQGlmIHR5cGUtb2YoJG1hcDEpICE9IG1hcCBvciB0eXBlLW9mKCRtYXAyKSAhPSBtYXAge1xuICAgICRtYXAxOiAkbWFwMjtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAyIHtcbiAgICAgICRfbmV3OiAoJGtleTogX3N1c3lfZGVlcC1tZXJnZShtYXAtZ2V0KCRtYXAxLCAka2V5KSwgJHZhbHVlKSk7XG4gICAgICAkbWFwMTogbWFwLW1lcmdlKCRtYXAxLCAkX25ldyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbWFwMTtcbn1cblxuXG4vLyBEZWVwIEhhcy1LZXlcbi8vIC0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gdHJ1ZSBpZiBhIGRlZXAga2V5IGV4aXN0c1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtaGFzLWtleShcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogbnVsbDtcbiAgJF9zdG9wOiBmYWxzZTtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgbm90KCRfc3RvcCkge1xuICAgICAgJF9yZXR1cm46IG1hcC1oYXMta2V5KCRtYXAsICRrZXkpO1xuICAgIH1cblxuICAgIEBpZiAkX3JldHVybiB7XG4gICAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9zdG9wOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTZXR0aW5nc1xuLy8gPT09PT09PT1cblxuLy8gVmVyc2lvblxuLy8gLS0tLS0tLVxuJHN1LXZlcnNpb246IDEuMTtcblxuXG4vLyBEZWZhdWx0IFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBUaGUgYmFzaWMgc2V0dGluZ3NcbiRzdXN5LWRlZmF1bHRzOiAoXG4gIGNvbHVtbnM6IDQsXG4gIGd1dHRlcnM6IC4yNSxcbik7XG5cblxuLy8gVXNlciBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBEZWZpbmUgdGhlICRzdXN5IHZhcmlhYmxlIHdpdGggYSBtYXAgb2YgeW91ciBvd24gc2V0dGluZ3MuXG4vLyAtIFNldCBFSVRIRVIgJGNvbHVtbi13aWR0aCBPUiAkY29udGFpbmVyXG4vLyAtIFVzZSAkY29sdW1uLXdpZHRoIGZvciBzdGF0aWMgbGF5b3V0c1xuJHN1c3k6ICgpICFkZWZhdWx0O1xuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IEFkZCBkZWZhdWx0cyB0byBTdXN5XG5AbWl4aW4gc3VzeS1kZWZhdWx0cyhcbiAgJGRlZmF1bHRzXG4pIHtcbiAgJHN1c3ktZGVmYXVsdHM6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJGRlZmF1bHRzKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgU2V0XG4vLyAtLS0tLS0tLVxuLy8gQ2hhbmdlIG9uZSBzZXR0aW5nXG4vLyAtICRrZXkgICA6IHNldHRpbmcgbmFtZVxuLy8gLSAkdmFsdWUgOiBzZXR0aW5nIHZhbHVlXG5AbWl4aW4gc3VzeS1zZXQoXG4gICRrZXktdmFsdWUuLi5cbikge1xuICAkc3VzeTogX3N1c3ktZGVlcC1zZXQoJHN1c3ksICRrZXktdmFsdWUuLi4pICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm4gb25lIHNldHRpbmcgZnJvbSBhIGdyaWRcbi8vIC0gJGtleSAgICAgOiA8a2V5d29yZD5cbi8vIC0gJGxheW91dCAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gc3VzeS1nZXQoXG4gICRrZXksXG4gICRsYXlvdXQ6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJHN1c3kpXG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF9vcHRpb25zOiAkbGF5b3V0ICRzdXN5ICRzdXN5LWRlZmF1bHRzO1xuICAkX2JyZWFrOiBmYWxzZTtcbiAgJF9yZXR1cm46IG51bGw7XG5cbiAgQGVhY2ggJG9wdCBpbiAkX29wdGlvbnMge1xuICAgIEBpZiB0eXBlLW9mKCRvcHQpID09IG1hcCBhbmQgbm90KCRfYnJlYWspIHtcbiAgICAgICRfa2V5c2V0OiBfc3VzeS1kZWVwLWhhcy1rZXkoJG9wdCwgJGtleS4uLik7XG4gICAgICBAaWYgJF9rZXlzZXQge1xuICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1nZXQoJG9wdCwgJGtleS4uLik7XG4gICAgICAgICRfYnJlYWs6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIE1hdGggVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09XG5cblxuLy8gVmFsaWQgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGNvbHVtbiBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRjb2x1bW5zKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkY29sdW1ucykge1xuICAgICRyZXR1cm46ICRjb2x1bW5zO1xuICB9IEBlbHNlIGlmICR0eXBlID09IGxpc3Qge1xuICAgICRmYWlsOiBudWxsO1xuICAgIEBlYWNoICRjb2wgaW4gJGNvbHVtbnMge1xuICAgICAgQGlmIHR5cGUtb2YoJGNvbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgJGZhaWw6ICRmYWlsIG9yIGlmKHVuaXRsZXNzKCRjb2wpLCBudWxsLCB0cnVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHJldHVybjogaWYoJGZhaWwsICRyZXR1cm4sICRjb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiAkcmV0dXJuICE9ICRjb2x1bW5zIGFuZCBub3QoJHNpbGVudCkge1xuICAgICRyZXR1cm46IG51bGw7XG4gICAgJHdhcm46ICckY29sdW1ucyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyIG9yIGxpc3Qgb2YgdW5pdGxlc3MgbnVtYmVycy4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGNvbHVtbnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG4vLyBWYWxpZCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgZ3V0dGVyIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtZ3V0dGVycyhcbiAgJGd1dHRlcnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXJzKSB7XG4gICAgJHJldHVybjogJGd1dHRlcnM7XG4gIH0gQGVsc2UgaWYgbm90KCRzaWxlbnQpIHtcbiAgICAkd2FybjogJyRndXR0ZXJzIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRndXR0ZXJzfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBDb2x1bW4gbWF0aFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBJcyBTeW1tZXRyaWNhbFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIGdyaWQgaXMgc3ltbWV0cmljYWwuXG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gaXMtc3ltbWV0cmljYWwoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpZih0eXBlLW9mKCRjb2x1bW5zKSA9PSBudW1iZXIsICRjb2x1bW5zLCBudWxsKTtcbn1cblxuXG4vLyBTdXN5IENvdW50XG4vLyAtLS0tLS0tLS0tXG4vLyBGaW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiBhIGdpdmVuIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktY291bnQoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykgb3IgbGVuZ3RoKCRjb2x1bW5zKTtcbn1cblxuXG4vLyBTdXN5IFN1bVxuLy8gLS0tLS0tLS1cbi8vIEZpbmQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5LXN1bShcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuXG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQgPT0gd2lkZSwgMCwgaWYoJHNwcmVhZCA9PSB3aWRlciwgMSwgLTEpKTtcbiAgJGd1dHRlci1zdW06IChzdXN5LWNvdW50KCRjb2x1bW5zKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICRjb2x1bW4tc3VtOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgQGlmIG5vdCgkY29sdW1uLXN1bSkge1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGNvbHVtbnMge1xuICAgICAgJGNvbHVtbi1zdW06ICgkY29sdW1uLXN1bSBvciAwKSArICRjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtO1xufVxuXG5cbi8vIFN1c3kgU2xpY2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBvZiBjb2x1bW5zIGF0IGEgZ2l2ZW4gbG9jYXRpb24uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkc3ViLWNvbHVtbnM6ICRzcGFuO1xuXG4gIEBpZiBub3QoaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpKSB7XG4gICAgJGxvY2F0aW9uOiAkbG9jYXRpb24gb3IgMTtcbiAgICAkc3ViLWNvbHVtbnM6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRzcGFuKSB7XG4gICAgICAkc3ViLWNvbHVtbnM6IGFwcGVuZCgkc3ViLWNvbHVtbnMsIG50aCgkY29sdW1ucywgJGkpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG4vLyBTdXN5XG4vLyAtLS0tXG4vLyBGaW5kIHRoZSBzdW0gb2YgYSBjb2x1bW4tc3Bhbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5KFxuICAkc3BhbixcbiAgJGxvY2F0aW9uICAgICA6IGZhbHNlLFxuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICAgICAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgICAgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG4gICRzcGFuOiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcblxuICBAcmV0dXJuIHN1c3ktc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCk7XG59XG4iLCIvLyBGbG9hdCBBUElcbi8vID09PT09PT09PVxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbkBpbXBvcnQgXCJmbG9hdC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJmbG9hdC9zcGFuXCI7XG5AaW1wb3J0IFwiZmxvYXQvZW5kXCI7XG5AaW1wb3J0IFwiZmxvYXQvaXNvbGF0ZVwiO1xuIiwiLy8gU2hhcmVkIEFQSVxuLy8gPT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydFwiO1xuXG5AaW1wb3J0IFwic2hhcmVkL2luc3BlY3RcIjtcbkBpbXBvcnQgXCJzaGFyZWQvb3V0cHV0XCI7XG5AaW1wb3J0IFwic2hhcmVkL2RpcmVjdGlvblwiO1xuQGltcG9ydCBcInNoYXJlZC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic2hhcmVkL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNoYXJlZC9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic2hhcmVkL3BhZGRpbmdcIjtcblxuXG5cbiIsIi8vIFN1c3kgQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydC9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9wcmVmaXhcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3JlbVwiO1xuQGltcG9ydCBcInN1cHBvcnQvY2xlYXJmaXhcIjtcbiIsIi8vIEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgU3VwcG9ydCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgYnJlYWtwb2ludDogdHJ1ZSxcbiAgICBib3gtc2l6aW5nOiB0cnVlLFxuICAgIHJlbTogdHJ1ZSxcbiAgKSxcbikpO1xuXG5cbi8vIFN1c3kgU3VwcG9ydCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VuZCBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0byB0aGUgcHJvcGVyIHN1cHBvcnQgbW9kdWxlcy5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXN1cHBvcnQoXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgLy8gQmFja2dyb3VuZCBTdXBwb3J0XG4gIEBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtaW1hZ2UoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1zaXplIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtc2l6ZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLW9yaWdpbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbigkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWNsaXAge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1jbGlwKCR2YWwpO1xuICB9XG5cbiAgLy8gQm94LVNpemluZyBTdXBwb3J0XG4gIEBlbHNlIGlmICRwcm9wID09IGJveC1zaXppbmcge1xuICAgIEBpbmNsdWRlIHN1c3ktYm94LXNpemluZygkdmFsKTtcbiAgfVxuXG4gIC8vIFJlbSBTdXBwb3J0XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cblxuXG4vLyBTdXN5IFN1cHBvcnQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBzdXBwb3J0IG9mIGEgZmVhdHVyZS5cbi8vIC0gJGZlYXR1cmUgICAgICAgOiA8c3RyaW5nPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nIFwicmVtXCIgb3IgXCJib3gtc2l6aW5nXCJcbi8vIC0gJHJlcXVpcmVtZW50cyAgOiA8bWFwPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nICh2YXJpYWJsZTogcmVtLXdpdGgtcHgtZmFsbGJhY2ssIG1peGluOiByZW0pXG4vLyAtICR3YXJuICAgICAgICAgIDogPGJvb2w+XG5AZnVuY3Rpb24gc3VzeS1zdXBwb3J0KFxuICAkZmVhdHVyZSxcbiAgJHJlcXVpcmVtZW50czogKCksXG4gICR3YXJuOiB0cnVlXG4pIHtcbiAgJF9zdXBwb3J0OiBzdXN5LWdldCh1c2UtY3VzdG9tICRmZWF0dXJlKTtcblxuICBAaWYgJF9zdXBwb3J0IHtcbiAgICAkX2ZhaWw6IGZhbHNlO1xuXG4gICAgQGVhY2ggJF90eXBlLCAkX3JlcSBpbiAkcmVxdWlyZW1lbnRzIHtcbiAgICAgIEBlYWNoICRfaSBpbiAkX3JlcSB7XG4gICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcblxuICAgICAgICBAaWYgbm90KCRfcGFzcykge1xuICAgICAgICAgICRfZmFpbDogdHJ1ZTtcbiAgICAgICAgICBAaWYgJHdhcm4ge1xuICAgICAgICAgICAgQHdhcm4gXCJZb3UgcmVxdWVzdGVkIGN1c3RvbSBzdXBwb3J0IG9mICN7JGZlYXR1cmV9LCBidXQgdGhlICN7JF9pfSAjeyRfdHlwZX0gaXMgbm90IGF2YWlsYWJsZS5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3N1cHBvcnQ6IGlmKCRfZmFpbCwgZmFsc2UsICRfc3VwcG9ydCk7XG4gIH1cblxuICBAcmV0dXJuICRfc3VwcG9ydDtcbn1cbiIsIi8vIFN1c3kgUHJlZml4XG4vLyA9PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IHNpbXBsZSBwcmVmaXhlZCBwcm9wZXJ0aWVzLlxuLy8gLSAkcHJvcCAgICAgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgICAgICA6IDxjc3MgdmFsdWU+XG4vLyAtIFskcHJlZml4XSAgOiA8YnJvd3NlciBwcmVmaXggbGlzdD5cbkBtaXhpbiBzdXN5LXByZWZpeChcbiAgJHByb3AsXG4gICR2YWwsXG4gICRwcmVmaXg6IG9mZmljaWFsXG4pIHtcbiAgQGVhY2ggJGZpeCBpbiAkcHJlZml4IHtcbiAgICAkZml4OiBpZigkZml4ID09IG9mZmljaWFsIG9yIG5vdCgkZml4KSwgJHByb3AsICctI3skZml4fS0jeyRwcm9wfScpO1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRmaXgsICR2YWwpO1xuICB9XG59XG4iLCIvLyBCYWNrZ3JvdW5kIFByb3BlcnRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEJhY2tncm91bmQgSW1hZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtaW1hZ2U+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2Vcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtaW1hZ2UsIChtaXhpbjogYmFja2dyb3VuZC1pbWFnZSksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLi4uKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBTaXplXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLXNpemU+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1zaXplKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgkc2l6ZSk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemU7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIE9yaWdpblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtb3JpZ2luPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oXG4gICRvcmlnaW5cbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLW9yaWdpbikpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRvcmlnaW47XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIENsaXBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1jbGlwPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1jbGlwKFxuICAkY2xpcFxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtY2xpcCkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNsaXAoJGNsaXApO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwO1xuICB9XG59XG4iLCIvLyBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09XG5cbi8vIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkbW9kZWw6IDxib3gtc2l6aW5nPlxuQG1peGluIHN1c3ktYm94LXNpemluZyhcbiAgJG1vZGVsOiBjb250ZW50LWJveFxuKSB7XG4gIEBpZiAkbW9kZWwge1xuICAgIEBpZiBzdXN5LXN1cHBvcnQoYm94LXNpemluZywgKG1peGluOiBib3gtc2l6aW5nKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKCRtb2RlbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJlZml4OiAobW96LCB3ZWJraXQsIG9mZmljaWFsKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktcHJlZml4KGJveC1zaXppbmcsICRtb2RlbCwgJHByZWZpeCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBEZWJ1Z2dpbmdcbi8vID09PT09PT09PVxuXG4vLyBTdXN5IEluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8gT3V0cHV0IGFyZ3VtZW50cyBwYXNzZWQgdG8gYSBpbnNwZWN0LlxuLy8gLSAkbWl4aW4gIDogPHN1c3kgbWl4aW4+XG4vLyAtICRpbnNwZWMgICA6IDxtaXhpbiBhcmd1bWVudHM+XG5cbkBtaXhpbiBzdXN5LWluc3BlY3QoXG4gICRtaXhpbixcbiAgJGluc3BlY3Rcbikge1xuICAkc2hvdzogZmFsc2U7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGluc3BlY3Qge1xuICAgIEBpZiBpbmRleCgkaXRlbSwgaW5zcGVjdCkge1xuICAgICAgJHNob3c6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzaG93IG9yIHN1c3ktZ2V0KGRlYnVnIGluc3BlY3QpIHtcbiAgICAtc3VzeS0jeyRtaXhpbn06IGluc3BlY3QoJGluc3BlY3QpO1xuICB9XG59XG4iLCIvLyBPdXRwdXRcbi8vID09PT09PVxuXG4vLyBPdXRwdXRcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IENTUyB3aXRoIHByb3BlciBicm93c2VyIHN1cHBvcnQuXG4vLyAtICRzdHlsZXMgIDogPG1hcCBvZiBjc3MgcHJvcGVydHktdmFsdWUgcGFpcnM+XG5AbWl4aW4gb3V0cHV0KFxuICAkc3R5bGVzXG4pIHtcbiAgQGVhY2ggJHByb3AsICR2YWwgaW4gJHN0eWxlcyB7XG4gICAgQGluY2x1ZGUgc3VzeS1zdXBwb3J0KCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gR3JpZCBCYWNrZ3JvdW5kIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuLy8gLSBTdWItcGl4ZWwgcm91bmRpbmcgY2FuIGxlYWQgdG8gc2V2ZXJhbCBwaXhlbHMgdmFyaWF0aW9uIGJldHdlZW4gYnJvd3NlcnMuXG5cbi8vIEdyaWQgQmFja2dyb3VuZCBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGltYWdlOiBiYWNrZ3JvdW5kLWltYWdlXG4vLyAtICRzaXplOiBiYWNrZ3JvdW5kLXNpemVcbi8vIC0gJGNsaXA6IGJhY2tncm91bmQtY2xpcFxuLy8gLSBbJGZsb3ddOiBsdHIgfCBydGxcbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0IChcbiAgJGltYWdlLFxuICAkc2l6ZTogbnVsbCxcbiAgJGNsaXA6IG51bGwsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2UsXG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZSxcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBmcm9tKCRmbG93KSB0b3AsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBNYXJnaW5zIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gTWFyZ2luIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBtYXJnaW4tb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUGFkZGluZyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIFBhZGRpbmcgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBwYWRkaW5nLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBDb250YWluZXJcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGZsb2F0LWNvbnRhaW5lcihcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gIEBpbmNsdWRlIHN1c3ktY2xlYXJmaXg7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1vdXRwdXQoJHdpZHRoLCAkanVzdGlmeSwgJHByb3BlcnR5KTtcbn1cbiIsIi8vIEZsb2F0IFNwYW4gQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBTcGFuIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHdpZHRoICAgICAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG9hdF0gICAgICAgICAgIDogZnJvbSB8IHRvXG4vLyAtIFskbWFyZ2luLWJlZm9yZV0gICA6IDxsZW5ndGg+XG4vLyAtIFskbWFyZ2luLWFmdGVyXSAgICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1iZWZvcmVdICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1hZnRlcl0gICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gICAgICAgICAgICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LXNwYW4tb3V0cHV0KFxuICAkd2lkdGgsXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbSxcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsLFxuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGwsXG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbCxcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsLFxuICAkZmxvdyAgICAgICAgICAgICA6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvICAgICA6IHRvKCRmbG93KTtcbiAgJGZyb20gICA6IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aDogJHdpZHRoLFxuICAgIGZsb2F0OiBpZigkZmxvYXQgPT0gdG8sICR0bywgbnVsbCkgb3IgaWYoJGZsb2F0ID09IGZyb20sICRmcm9tLCBudWxsKSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkcGFkZGluZy1hZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IElzb2xhdGlvbiBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gSXNvbGF0ZSBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRwdXNoICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBpc29sYXRlLW91dHB1dChcbiAgJHB1c2gsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiAkZnJvbSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRwdXNoLFxuICAgIG1hcmdpbi0jeyR0b306IC0xMDAlLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFN1c3kgU2V0dGluZ3Ncbi8vID09PT09PT09PT09PT1cblxuLy8gU3VzeSBMYW5ndWFnZSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBjZW50ZXIsXG4gIGd1dHRlci1wb3NpdGlvbjogYWZ0ZXIsXG4gIGdsb2JhbC1ib3gtc2l6aW5nOiBjb250ZW50LWJveCxcbiAgZGVidWc6IChcbiAgICBpbWFnZTogaGlkZSxcbiAgICBjb2xvcjogcmdiYSgjNjZmLCAuMjUpLFxuICAgIG91dHB1dDogYmFja2dyb3VuZCxcbiAgICB0b2dnbGU6IHRvcCByaWdodCxcbiAgKSxcbikpO1xuXG5cbi8vIFZhbGlkIEtleXdvcmQgVmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFOiBET05UJ1QgVE9VQ0hcbiRzdXN5LWtleXdvcmRzOiAoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogc3RhdGljIGZsdWlkLFxuICBvdXRwdXQ6IGlzb2xhdGUgZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogbGVmdCBjZW50ZXIgcmlnaHQsXG4gIGZsb3c6IGx0ciBydGwsXG4gIGd1dHRlci1wb3NpdGlvbjogYmVmb3JlIGFmdGVyIHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljLFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94IGNvbnRlbnQtYm94LFxuICBzcGFuOiBmdWxsLFxuICBlZGdlOiBmaXJzdCBhbHBoYSBsYXN0IG9tZWdhIGZ1bGwsXG4gIHNwcmVhZDogbmFycm93IHdpZGUgd2lkZXIsXG4gIGd1dHRlci1vdmVycmlkZTogbm8tZ3V0dGVycyBuby1ndXR0ZXIsXG4gIHJvbGU6IG5lc3QsXG4gIGNsZWFyOiBicmVhayBub2JyZWFrLFxuICBkZWJ1ZyBpbWFnZTogc2hvdyBoaWRlIHNob3ctY29sdW1ucyBzaG93LWJhc2VsaW5lLFxuICBkZWJ1ZyBvdXRwdXQ6IGJhY2tncm91bmQgb3ZlcmxheSxcbik7XG5cblxuLy8gUGFyc2UgU3VzeSBLZXl3b3JkcyBhbmQgTWFwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNldHRpbmdzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gc3RyaW5nc1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IHN0cmluZyB7XG4gICAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkc3VzeS1rZXl3b3JkcyB7XG4gICAgICAgICAgQGlmIGluZGV4KCR2YWx1ZSwgJGl0ZW0pIHtcbiAgICAgICAgICAgICRfa2V5LXZhbHVlOiBhcHBlbmQoJGtleSwgJGl0ZW0pO1xuICAgICAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtc2V0KCRfcmV0dXJuLCAkX2tleS12YWx1ZS4uLik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAvLyBtYXBzXG4gICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IG1hcCB7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIENvbHVtbnMgJiBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWxheW91dChcbiAgJHNob3J0XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuICAkX2NvbHVtbnM6ICgpO1xuICAkX2d1dHRlcnM6IG51bGw7XG5cbiAgQGlmIG5vdCh1bml0bGVzcyhudGgobnRoKCRzaG9ydCwgMSksIDEpKSkge1xuICAgICRfZ3V0dGVyczogbnRoKCRzaG9ydCwgMSk7XG4gIH0gQGVsc2Uge1xuICAgICRfY29sdW1uczogKGNvbHVtbnM6IG50aCgkc2hvcnQsIDEpKTtcbiAgICAkX2d1dHRlcnM6IGlmKGxlbmd0aCgkc2hvcnQpID4gMSwgbnRoKCRzaG9ydCwgMiksICRfZ3V0dGVycyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkX2d1dHRlcnMpID09IGxpc3QgYW5kIGxlbmd0aCgkX2d1dHRlcnMpID4gMCB7XG4gICAgJF9ndXR0ZXJzOiAoXG4gICAgICBndXR0ZXJzOiBudGgoJF9ndXR0ZXJzLCAyKSAvIG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICAgY29sdW1uLXdpZHRoOiBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlcnM6IGlmKCRfZ3V0dGVycywgKGd1dHRlcnM6ICRfZ3V0dGVycyksICgpKTtcbiAgfVxuXG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfY29sdW1ucyk7XG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfZ3V0dGVycyk7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHcmlkL0NvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWdyaWQoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogcGFyc2Utc2V0dGluZ3MoJHNob3J0KTtcbiAgJF9sYXlvdXQ6ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gbnVtYmVyIG9yIGxpc3RcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IG9yIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICAgJF9sYXlvdXQ6IGFwcGVuZCgkX2xheW91dCwgJGl0ZW0pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY29udGFpbmVyOiAkaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9sYXlvdXQ6IGlmKGxlbmd0aCgkX2xheW91dCkgPiAwLCBwYXJzZS1sYXlvdXQoJF9sYXlvdXQpLCAkX2xheW91dCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkX3JldHVybiwgJF9sYXlvdXQpO1xufVxuXG5cbi8vIFBhcnNlIFNwYW5cbi8vIC0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zcGFuKFxuICAkc2hvcnQsXG4gICRrZXk6IHNwYW5cbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgICRfYXQ6IGluZGV4KCRzaG9ydCwgYXQpO1xuXG4gICAgQGlmICRfYXQge1xuICAgICAgJF9sb2NpOiAkX2F0ICsgMTtcbiAgICAgICRfbG9jYXRpb246IG50aCgkc2hvcnQsICRfbG9jaSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAobG9jYXRpb246ICRfbG9jYXRpb24pKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfYXQsIG51bGwpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9sb2NpLCBudWxsKTtcbiAgICB9XG5cbiAgICAkX2k6IDE7XG4gICAgJF9zcGFuOiAoKTtcblxuICAgIEB3aGlsZSAkX2kgPD0gbGVuZ3RoKCRzaG9ydCkge1xuICAgICAgJF90aGlzOiBudGgoJHNob3J0LCAkX2kpO1xuXG4gICAgICBAaWYgdHlwZS1vZigkX3RoaXMpID09IG51bWJlciB7XG4gICAgICAgICRfc3BhbjogYXBwZW5kKCRfc3BhbiwgJF90aGlzKTtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgIH0gQGVsc2UgaWYgJF90aGlzID09IG9mIHtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgICAgJF9pOiBsZW5ndGgoJHNob3J0KSArIDE7XG4gICAgICB9XG5cbiAgICAgICRfaTogJF9pICsgMTtcbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCRfc3BhbikgPiAwIHtcbiAgICAgICRfc3BhbjogaWYobGVuZ3RoKCRfc3BhbikgPT0gMSwgbnRoKCRfc3BhbiwgMSksICRfc3Bhbik7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJGtleTogJF9zcGFuKSk7XG4gICAgfVxuXG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgcGFyc2UtZ3JpZCgkc2hvcnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWd1dHRlcnMoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX2d1dHRlcnM6IHBhcnNlLXNwYW4oJHNob3J0LCBndXR0ZXItb3ZlcnJpZGUpO1xuICAkX3NwYW46IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJF9ndXR0ZXJzKTtcblxuICBAaWYgJF9zcGFuIGFuZCBub3QobWFwLWdldCgkX2d1dHRlcnMsIGNvbHVtbnMpKSB7XG4gICAgJF9jb250ZXh0OiAoKTtcbiAgICAkX25ldzogKCk7XG5cbiAgICBAZWFjaCAkaXRlbSBpbiAkX3NwYW4ge1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgJF9jb250ZXh0OiBhcHBlbmQoJF9jb250ZXh0LCAkaXRlbSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJF9uZXc6IGFwcGVuZCgkX25ldywgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICRfY29udGV4dDogcGFyc2UtZ3JpZCgkX2NvbnRleHQpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDAsIG51bGwsICRfbmV3KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAxLCBudGgoJF9uZXcsIDEpLCAkX25ldyk7XG4gICAgJF9uZXc6IChndXR0ZXItb3ZlcnJpZGU6IGlmKCRfbmV3ICE9ICRfc3BhbiwgJF9uZXcsICRfc3BhbikpO1xuXG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX25ldyk7XG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX2NvbnRleHQpO1xuICB9XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG4iLCIvLyBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09XG5cblxuLy8gVmFsaWRhdGUgQ29sdW1uIE1hdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1uLW1hdGgoXG4gICRtYXRoLFxuICAkY29sdW1uLXdpZHRoXG4pIHtcbiAgQGlmICRtYXRoID09IHN0YXRpYyBhbmQgbm90KCRjb2x1bW4td2lkdGgpIHtcbiAgICBAZXJyb3IgJ1N0YXRpYyBtYXRoIHJlcXVpcmVzIGEgdmFsaWQgY29sdW1uLXdpZHRoIHNldHRpbmcuJztcbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi13aWR0aDtcbn1cbiIsIi8vIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBTZXQgYSBuZXcgbGF5b3V0IHVzaW5nIGEgc2hvcnRoYW5kXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXlvdXQsICRpbnNwZWN0KTtcbn1cblxuXG4vLyBVc2UgR3JpZFxuLy8gLS0tLS0tLS1cbi8vIFVzZSBhbiBhcmJpdHJhcnkgbGF5b3V0IGZvciBhIHNlY3Rpb24gb2YgY29kZVxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIHdpdGgtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJG9sZCAgICAgIDogJHN1c3k7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qod2l0aC1sYXlvdXQsICRpbnNwZWN0KTtcblxuICBAY29udGVudDtcblxuICAkc3VzeTogJG9sZCAhZ2xvYmFsO1xufVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gYSBwYXJzZWQgbGF5b3V0IG1hcCBiYXNlZCBvbiBzaG9ydGhhbmQgc3ludGF4XG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBsYXlvdXQoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgQHJldHVybiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xufVxuXG5cbi8vIEdldCBMYXlvdXRcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIG5ldyBsYXlvdXQgYmFzZWQgb24gY3VycmVudCBhbmQgZ2l2ZW4gc2V0dGluZ3Ncbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBmdW5jdGlvbiBfZ2V0LWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRsYXlvdXQ6IGxheW91dCgkbGF5b3V0KTtcbiAgQHJldHVybiBpZigkY2xlYW4sICRsYXlvdXQsIF9zdXN5LWRlZXAtbWVyZ2UoJHN1c3ksICRsYXlvdXQpKTtcbn1cbiIsIi8vIFN1c3kgQm94IFNpemluZ1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBib3ggbW9kZWwgZ2xvYmFsbHkgb24gYWxsIGVsZW1lbnRzLlxuLy8gLSBbJGJveF06IGJvcmRlci1ib3ggfCBjb250ZW50LWJveFxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBnbG9iYWwtYm94LXNpemluZyhcbiAgJGJveDogc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpLFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdDogJGJveDtcblxuICBAaWYgJGluaGVyaXQge1xuICAgIEBhdC1yb290IHtcbiAgICAgICBodG1sIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgICAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cbiAgICAgfVxuICB9IEBlbHNlIHtcbiAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2xvYmFsLWJveC1zaXppbmcsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgdXBkYXRlLWJveC1tb2RlbCgkYm94KTtcbn1cblxuLy8gQm9yZGVyIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBIGxlZ2FjeSBzaG9ydGN1dC4uLlxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBib3JkZXItYm94LXNpemluZyhcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCwgJGluaGVyaXQpO1xufVxuXG4vLyBVcGRhdGUgQm94IE1vZGVsXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBVcGRhdGVzIGdsb2JhbCBib3ggbW9kZWwgc2V0dGluZ1xuQG1peGluIHVwZGF0ZS1ib3gtbW9kZWwoXG4gICRib3hcbikge1xuICBAaWYgJGJveCAhPSBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykge1xuICBAaW5jbHVkZSBzdXN5LXNldChnbG9iYWwtYm94LXNpemluZywgJGJveCk7XG4gIH1cbn1cbiIsIi8vIENvbnRleHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBOZXN0ZWQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBncmlkIGZvciBuZXN0ZWQgY29udGV4dC5cbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuQGZ1bmN0aW9uIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkY29udGV4dCAgICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkc3BhbiAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRjb250ZXh0KTtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGNvbnRleHQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcblxuICBAcmV0dXJuIHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xufVxuXG4vLyBOZXN0ZWQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFVzZSBhIHN1YnNldCBncmlkIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbi8vIC0gQGNvbnRlbnQgICA6IDxjb250ZW50PlxuQG1peGluIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRvbGQgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpO1xuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiBuZXN0ZWQoJGNvbnRleHQpKSkgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobmVzdGVkLCAkaW5zcGVjdCk7XG4gIEBjb250ZW50O1xuXG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6ICRvbGQpKSAhZ2xvYmFsO1xufVxuIiwiLy8gQmFja2dyb3VuZCBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IGZhbHNlO1xuXG5cbi8vIFNob3cgR3JpZC9zXG4vLyAtLS0tLS0tLS0tLVxuLy8gU2hvdyBncmlkIG9uIGFueSBlbGVtZW50IHVzaW5nIGVpdGhlciBiYWNrZ3JvdW5kIG9yIG92ZXJsYXkuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIHNob3ctZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3Q6ICRncmlkO1xuICAkX291dHB1dDogZGVidWctZ2V0KG91dHB1dCwgJGdyaWQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzaG93LWdyaWQsICRpbnNwZWN0KTtcbiAgQGlmICRfb3V0cHV0ID09IG92ZXJsYXkgYW5kIHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCkgIT0gaGlkZSB7XG4gICAgQGluY2x1ZGUgb3ZlcmxheS1ncmlkKCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvdy1ncmlkcyhcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRncmlkKTtcbn1cblxuLy8gQmFja2dyb3VuZCBHcmlkXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNob3cgYSBncmlkIGJhY2tncm91bmQgb24gYW55IGVsZW1lbnQuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIGJhY2tncm91bmQtZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGdyaWQ7XG4gICRfb3V0cHV0ICA6IGdldC1iYWNrZ3JvdW5kKCRncmlkKTtcblxuICBAaWYgbGVuZ3RoKCRfb3V0cHV0KSA+IDAge1xuICAgICRfZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpO1xuXG4gICAgJF9pbWFnZTogKCk7XG4gICAgQGVhY2ggJG5hbWUsICRsYXllciBpbiBtYXAtZ2V0KCRfb3V0cHV0LCBpbWFnZSkge1xuICAgICAgJF9kaXJlY3Rpb246IGlmKCRuYW1lID09IGJhc2VsaW5lLCB0byBib3R0b20sIHRvIHRvKCRfZmxvdykpO1xuICAgICAgJF9pbWFnZTogYXBwZW5kKCRfaW1hZ2UsIGxpbmVhci1ncmFkaWVudCgkX2RpcmVjdGlvbiwgJGxheWVyKSwgY29tbWEpO1xuICAgIH1cbiAgICAkX291dHB1dDogbWFwLW1lcmdlKCRfb3V0cHV0LCAoaW1hZ2U6ICRfaW1hZ2UpKTtcblxuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICAgIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChiYWNrZ3JvdW5kLWdyaWQsICRpbnNwZWN0KTtcbiAgfVxufVxuXG5cbi8vIE92ZXJsYXkgR3JpZFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBHZW5lcmF0ZSBhbiBpY29uIHRvIHRyaWdnZXIgZ3JpZC1vdmVybGF5cyBvbiBhbnkgZ2l2ZW4gZWxlbWVudHMuXG4vLyAkZ3JpZHMuLi4gIDogPHNlbGVjdG9yPiBbPHNldHRpbmdzPl0gWywgPHNlbGVjdG9yPl0qXG5AbWl4aW4gb3ZlcmxheS1ncmlkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGlmIG5vdCgkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHMpIHtcbiAgICBAYXQtcm9vdCBoZWFkIHsgQGluY2x1ZGUgb3ZlcmxheS1oZWFkKCRncmlkKTsgfVxuICAgIEBhdC1yb290IGhlYWQ6YmVmb3JlIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpob3ZlciB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlci1ob3ZlcjsgfVxuICAgICRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgaGVhZDpob3ZlciB+ICYsXG4gIGhlYWQ6aG92ZXIgfiBib2R5ICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLW92ZXJsYXktYmFzZTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlciB7XG4gIGNvbnRlbnQ6IFwifHx8XCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udDoge1xuICAgIGZhbWlseTogc2Fucy1zZXJpZjtcbiAgICBzaXplOiAxNnB4O1xuICAgIHdlaWdodDogYm9sZDtcbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXIgSG92ZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXItaG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuNSk7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgSGVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGhlYWQ+IHN0eWxlcyB0byBjcmVhdGUgZ3JpZCBvdmVybGF5IHRvZ2dsZVxuQG1peGluIG92ZXJsYXktaGVhZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRfdG9nZ2xlOiBkZWJ1Zy1nZXQodG9nZ2xlLCAkZ3JpZCk7XG4gICRfaG9yejogbnVsbDtcbiAgJF92ZXJ0OiBudWxsO1xuXG4gIEBlYWNoICRzaWRlIGluICRfdG9nZ2xlIHtcbiAgICAkX2hvcno6IGlmKCRzaWRlID09IGxlZnQgb3IgJHNpZGUgPT0gcmlnaHQsICRzaWRlLCAkX2hvcnopO1xuICAgICRfdmVydDogaWYoJHNpZGUgPT0gdG9wIG9yICRzaWRlID09IGJvdHRvbSwgJHNpZGUsICRfdmVydCk7XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICAjeyRfaG9yen06IDEwcHg7XG4gICN7JF92ZXJ0fTogMTBweDtcbiAgei1pbmRleDogOTk5O1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjI1KTtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gR3JpZCBPdmVybGF5IEJhc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmFzZSBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIG92ZXJsYXlcbkBtaXhpbiBncmlkLW92ZXJsYXktYmFzZSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICB6LWluZGV4OiA5OTg7XG59XG5cblxuLy8gR2V0IFN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLXN5bShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgICAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9ndXR0ZXJzICAgICAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGdyaWQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRncmlkKTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGdyaWQpO1xuXG4gICRfY29sb3IgICAgICAgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfdHJhbnMgICAgICAgICA6IHRyYW5zcGFyZW50O1xuICAkX2xpZ2h0ICAgICAgICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG5cbiAgJF9lbmQgICAgICAgICAgIDogMSArICRfZ3V0dGVycztcbiAgJF9hZnRlciAgICAgICAgIDogcGVyY2VudGFnZSgxLyRfZW5kKTtcbiAgJF9zdG9wcyAgICAgICAgIDogKCk7XG4gICRfc2l6ZSAgICAgICAgICA6IHNwYW4oMSAkZ3JpZCB3aWRlKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodDtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3BsaXQ6ICRfZ3V0dGVycy8yO1xuICAgICRfYmVmb3JlOiBwZXJjZW50YWdlKCRfc3BsaXQvJF9lbmQpO1xuICAgICRfYWZ0ZXI6IHBlcmNlbnRhZ2UoKDEgKyAkX3NwbGl0KS8kX2VuZCk7XG4gICAgJF9zdG9wczogJF90cmFucyAkX2JlZm9yZSwgJF9jb2xvciAkX2JlZm9yZSwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9XG5cbiAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICRfc2l6ZTogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkgKiAkX2VuZDtcbiAgfVxuXG4gICRfb3V0cHV0OiAoXG4gICAgaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSxcbiAgICBzaXplOiAkX3NpemUsXG4gICk7XG5cbiAgQHJldHVybiAkX291dHB1dDtcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEluc2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1pbnNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgU3BsaXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1zcGxpdChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRzdGFydCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuXG4gICAgJF9lbmQ6ICRzdGFydCArIHNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRfZW5kLCBjb21tYSk7XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIE91dHNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLW91dHNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfdHJhbnMgICA6IHRyYW5zcGFyZW50O1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGd1dHRlcjogZ2V0LXNwYW4td2lkdGgoZmlyc3QgJGxvY2F0aW9uICRncmlkKTtcblxuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuXG4gICAgICAkZ3V0dGVyOiAkX2xpZ2h0ICRndXR0ZXIsICRfdHJhbnMgJGd1dHRlciwgJF90cmFucyAkX2VuZDtcbiAgICAgICR0aGlzLXN0b3A6IGpvaW4oJHRoaXMtc3RvcCwgJGd1dHRlciwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtYXN5bShcbiAgJGdyaWRcbikge1xuICAkX3N0b3BzOiAoKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0taW5zaWRlKCRncmlkKTtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLXNwbGl0KCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tb3V0c2lkZSgkZ3JpZCk7XG4gIH1cblxuICBAcmV0dXJuIChpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpKTtcbn1cblxuXG4vLyBHZXQgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9zaG93ICAgIDogc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKTtcbiAgJF9yZXR1cm4gIDogKCk7XG5cbiAgQGlmICRfc2hvdyBhbmQgJF9zaG93ICE9ICdoaWRlJyB7XG4gICAgJF9jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICAkX3N5bTogaXMtc3ltbWV0cmljYWwoJF9jb2x1bW5zKTtcbiAgICAgICRfcmV0dXJuOiBpZigkX3N5bSwgZ2V0LWJhY2tncm91bmQtc3ltKCRncmlkKSwgZ2V0LWJhY2tncm91bmQtYXN5bSgkZ3JpZCkpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGNvbnRlbnQtYm94KSk7XG4gICAgfVxuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1jb2x1bW5zJ1xuICAgICAgYW5kIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoYmFzZS1saW5lLWhlaWdodClcbiAgICAgIGFuZCB0eXBlLW9mKCRiYXNlLWxpbmUtaGVpZ2h0KSA9PSAnbnVtYmVyJ1xuICAgICAgYW5kIG5vdCB1bml0bGVzcygkYmFzZS1saW5lLWhlaWdodCkge1xuICAgICAgJF9jb2xvcjogdmFyaWFibGUtZXhpc3RzKCdncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3InKTtcbiAgICAgICRfY29sb3I6IGlmKCRfY29sb3IsICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICMwMDApO1xuXG4gICAgICAkX2ltYWdlOiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSk7XG4gICAgICAkX3NpemU6IG1hcC1nZXQoJF9yZXR1cm4sIHNpemUpO1xuICAgICAgJF9iYXNlbGluZTogKGJhc2VsaW5lOiAoJF9jb2xvciAxcHgsIHRyYW5zcGFyZW50IDFweCkpO1xuICAgICAgJF9iYXNlbGluZS1zaXplOiAxMDAlICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoXG4gICAgICAgIGltYWdlOiBpZigkX2ltYWdlLCBtYXAtbWVyZ2UoJF9pbWFnZSwgJF9iYXNlbGluZSksICRfYmFzZWxpbmUpLFxuICAgICAgICBzaXplOiBpZigkX3NpemUsICgkX3NpemUsICRfYmFzZWxpbmUtc2l6ZSksICRfYmFzZWxpbmUtc2l6ZSksXG4gICAgICApKTtcblxuICAgICAgQGlmICRfc2hvdyA9PSAnc2hvdycge1xuICAgICAgICAkX2NsaXA6IG1hcC1nZXQoJF9yZXR1cm4sIGNsaXApO1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogam9pbigkX2NsaXAsIGJvcmRlci1ib3gsIGNvbW1hKSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJF9zaG93ID09ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICBAd2FybiAnUGxlYXNlIHByb3ZpZGUgYSAkYmFzZS1saW5lLWhlaWdodCB3aXRoIHRoZSBkZXNpcmVkIGhlaWdodCBhbmQgdW5pdHMnO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSkge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChmbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gR2V0IERlYnVnXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgdmFsdWUgb2YgYSBkZWJ1ZyBzZXR0aW5nXG4vLyAtICRrZXk6IDxzZXR0aW5nPlxuQGZ1bmN0aW9uIGRlYnVnLWdldChcbiAgJGtleSxcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGtleTogam9pbihkZWJ1ZywgJGtleSwgc3BhY2UpO1xuICBAcmV0dXJuIHN1c3ktZ2V0KCRrZXksICRncmlkKTtcbn1cbiIsIi8vIENvbnRhaW5lciBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBjb250YWluZXIgZWxlbWVudFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQG1peGluIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgICA6ICRsYXlvdXQ7XG4gICRsYXlvdXQgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcblxuICAkX3dpZHRoICAgICA6IGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG4gICRfanVzdGlmeSAgIDogcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKHN1c3ktZ2V0KGNvbnRhaW5lci1wb3NpdGlvbiwgJGxheW91dCkpO1xuICAkX3Byb3BlcnR5ICA6IGlmKHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpID09IHN0YXRpYywgd2lkdGgsIG1heC13aWR0aCk7XG5cbiAgJF9ib3ggICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkbGF5b3V0KTtcblxuICBAaWYgJF9ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJF9ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChjb250YWluZXIsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgZmxvYXQtY29udGFpbmVyKCRfd2lkdGgsICRfanVzdGlmeSwgJF9wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0KTtcbn1cblxuLy8gQ29udGFpbmVyIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gIEByZXR1cm4gZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbn1cblxuLy8gR2V0IENvbnRhaW5lciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIHRoZSBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWNvbnRhaW5lci13aWR0aChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0ICAgICAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX3dpZHRoICAgICAgICAgOiBzdXN5LWdldChjb250YWluZXIsICRsYXlvdXQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRsYXlvdXQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkbGF5b3V0KTtcblxuICBAaWYgbm90KCRfd2lkdGgpIG9yICRfd2lkdGggPT0gYXV0byB7XG4gICAgQGlmIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpIHtcbiAgICAgICRfY29sdW1ucyAgIDogc3VzeS1nZXQoY29sdW1ucywgJGxheW91dCk7XG4gICAgICAkX2d1dHRlcnMgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRsYXlvdXQpO1xuICAgICAgJF9zcHJlYWQgICAgOiBpZihpcy1zcGxpdCgkbGF5b3V0KSwgd2lkZSwgbmFycm93KTtcbiAgICAgICRfd2lkdGggICAgIDogc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSAqICRfY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF93aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfd2lkdGg7XG59XG5cbi8vIFBhcnNlIENvbnRhaW5lciBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZSB0aGUgJGNvbnRhaW5lci1wb3NpdGlvbiBpbnRvIG1hcmdpbiB2YWx1ZXMuXG4vLyAtIFskanVzdGlmeV0gICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IDxsZW5ndGg+IFs8bGVuZ3RoPl1cbkBmdW5jdGlvbiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oXG4gICRqdXN0aWZ5OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBjb250YWluZXItcG9zaXRpb24pXG4pIHtcbiAgJF9yZXR1cm46IGlmKCRqdXN0aWZ5ID09IGxlZnQsIDAsIGF1dG8pIGlmKCRqdXN0aWZ5ID09IHJpZ2h0LCAwLCBhdXRvKTtcblxuICBAaWYgbm90KGluZGV4KGxlZnQgcmlnaHQgY2VudGVyLCAkanVzdGlmeSkpIHtcbiAgICAkX3JldHVybjogbnRoKCRqdXN0aWZ5LCAxKTtcbiAgICAkX3JldHVybjogJF9yZXR1cm4gaWYobGVuZ3RoKCRqdXN0aWZ5KSA+IDEsIG50aCgkanVzdGlmeSwgMiksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIElzb2xhdGlvbiBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuXG4vLyBJc29sYXRlIFtNaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGlzb2xhdGlvbiBhcyBhbiBvdmVycmlkZS5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBtaXhpbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpbnNwZWN0OiAkaXNvbGF0ZTtcblxuICAkb3V0cHV0OiAoXG4gICAgcHVzaDogaXNvbGF0ZSgkaXNvbGF0ZSksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGlzb2xhdGUpLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChpc29sYXRlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGlzb2xhdGUtb3V0cHV0KCRvdXRwdXQuLi4pO1xufVxuXG5cbi8vIElzb2xhdGUgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYW4gaXNvbGF0aW9uIG9mZnNldCB3aWR0aC5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBmdW5jdGlvbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpc29sYXRlOiBwYXJzZS1zcGFuKCRpc29sYXRlKTtcbiAgJGlzb2xhdGlvbjogc3VzeS1nZXQoc3BhbiwgJGlzb2xhdGUpO1xuXG4gIEBpZiAkaXNvbGF0aW9uIGFuZCBub3QoZ2V0LWxvY2F0aW9uKCRpc29sYXRlKSkge1xuICAgICRuZXc6IChcbiAgICAgIHNwYW46IG51bGwsXG4gICAgICBsb2NhdGlvbjogJGlzb2xhdGlvbixcbiAgICApO1xuICAgICRpc29sYXRlOiBtYXAtbWVyZ2UoJGlzb2xhdGUsICRuZXcpO1xuICB9XG5cbiAgQHJldHVybiBnZXQtaXNvbGF0aW9uKCRpc29sYXRlKTtcbn1cblxuXG4vLyBHZXQgSXNvbGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGhcbi8vIC0gJGlucHV0OiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1pc29sYXRpb24oXG4gICRpbnB1dFxuKSB7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRpbnB1dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGlucHV0KTtcbiAgJHdpZHRoICAgICAgOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyIGFuZCBub3QodW5pdGxlc3MoJGxvY2F0aW9uKSkge1xuICAgICR3aWR0aDogJGxvY2F0aW9uO1xuICB9IEBlbHNlIGlmICRsb2NhdGlvbiB7XG4gICAgJHB1c2g6ICRsb2NhdGlvbiAtIDE7XG4gICAgQGlmICRwdXNoID4gMCB7XG4gICAgICAkcHVzaDogbWFwLW1lcmdlKCRpbnB1dCwgKFxuICAgICAgICBzcGFuOiAkcHVzaCxcbiAgICAgICAgbG9jYXRpb246IDEsXG4gICAgICAgIHNwcmVhZDogd2lkZSxcbiAgICAgICkpO1xuICAgICAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkcHVzaCk7XG4gICAgfVxuICB9XG5cbiAgQGlmIHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGlucHV0KSA9PSBzcGxpdFxuICAgICAgYW5kIHN1c3ktZ2V0KGd1dHRlcnMsICRpbnB1dCkgPiAwIHtcbiAgICAkd2lkdGg6IGlmKCR3aWR0aCA9PSBudWxsLCBndXR0ZXJzKCRpbnB1dCksICR3aWR0aCArIGd1dHRlcnMoJGlucHV0KSk7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aCBvciAwO1xufVxuIiwiLy8gR2FsbGVyeSBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIEdhbGxlcnlcbi8vIC0tLS0tLS1cbi8vIENyZWF0ZSBhbiBpc29sYXRlZCBnYWxsZXJ5XG4vLyAtICRzcGFuICAgICAgICA6IDxzcGFuPlxuLy8gLSBbJHNlbGVjdG9yXSAgOiBjaGlsZCB8IG9mLXR5cGVcbkBtaXhpbiBnYWxsZXJ5KFxuICAkc3BhbixcbiAgJHNlbGVjdG9yOiBjaGlsZFxuKSB7XG4gICRpbnNwZWN0ICAgIDogJHNwYW47XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRzcGFuICAgICAgIDogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246IDEpKTtcblxuICAkbiAgICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkY29udGV4dCAgICAgIDogc3VzeS1jb3VudCgkY29sdW1ucyk7XG4gICRmbG93ICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG5cbiAgJGluc2lkZSAgICAgICA6IGlzLWluc2lkZSgkc3Bhbik7XG4gICRmcm9tICAgICAgICAgOiBmcm9tKCRmbG93KTtcbiAgJGxpbmUgICAgICAgICA6IGZsb29yKCRjb250ZXh0IC8gJG4pO1xuICAkc3ltbWV0cmljYWwgIDogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aCAgICAgICAgICAgICA6IG51bGwsXG4gICAgZmxvYXQgICAgICAgICAgICAgOiBmcm9tLFxuICAgIG1hcmdpbi1iZWZvcmUgICAgIDogbnVsbCxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IG51bGwsXG4gICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICApO1xuXG4gIEBpZiAkaW5zaWRlIHtcbiAgICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAoXG4gICAgICBwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKSxcbiAgICAgIHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKSxcbiAgICApKTtcbiAgfVxuXG4gIEBpZiAkc3ltbWV0cmljYWwge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAod2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKSkpO1xuICB9XG5cbiAgJGJveCAgICAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGdsb2JhbC1ib3ggICA6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSA9PSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2FsbGVyeSwgJGluc3BlY3QpO1xuXG4gIC8vIENvbGxlY3RpdmUgT3V0cHV0XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggb3IgKCRpbnNpZGUgYW5kIG5vdCgkYm94KSBhbmQgbm90KCRnbG9iYWwtYm94KSkge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogYm9yZGVyLWJveCkpO1xuICB9IEBlbHNlIGlmICRib3ggPT0gY29udGVudC1ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogY29udGVudC1ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIC8vIEluZGl2aWR1YWwgTG9vcFxuICBAZm9yICRpdGVtIGZyb20gMSB0aHJvdWdoICRsaW5lIHtcbiAgICAkbnRoOiAnI3skbGluZX1uICsgI3skaXRlbX0nO1xuICAgICY6bnRoLSN7JHNlbGVjdG9yfSgjeyRudGh9KSB7XG4gICAgICAvLyBJbmRpdmlkdWFsIFByZXBcbiAgICAgICRvdXRwdXQ6IChcbiAgICAgICAgd2lkdGggICAgICAgICAgICAgOiBpZigkc3ltbWV0cmljYWwsIG51bGwsIGdldC1zcGFuLXdpZHRoKCRzcGFuKSksXG4gICAgICAgIGZsb2F0ICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgbWFyZ2luLWJlZm9yZSAgICAgOiBnZXQtaXNvbGF0aW9uKCRzcGFuKSxcbiAgICAgICAgbWFyZ2luLWFmdGVyICAgICAgOiAtMTAwJSxcbiAgICAgICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgICAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICAgICApO1xuXG4gICAgICAvLyBJbmRpdmlkdWFsIE91dHB1dFxuICAgICAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgICAgIEBpZiBnZXQtZWRnZSgkc3BhbikgPT0gZmlyc3Qge1xuICAgICAgICBAaW5jbHVkZSBicmVhaztcbiAgICAgICAgQGluY2x1ZGUgZmlyc3QoJHNwYW4pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgTG9jYXRpb24gSW5jcmVtZW50XG4gICAgICAkbG9jYXRpb246IGdldC1sb2NhdGlvbigkc3BhbikgKyAkbjtcbiAgICAgICRsb2NhdGlvbjogaWYoJGxvY2F0aW9uID4gJGNvbnRleHQsIDEsICRsb2NhdGlvbik7XG4gICAgICAkc3BhbjogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246ICRsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZ3V0dGVyIDogZ3V0dGVyKCRzcGFuKTtcbiAgJHNwYW4gICA6IHNwYW4oJHNwYW4pO1xuICAkd2lkdGggIDogaWYoJHNwbGl0IGFuZCAkZ3V0dGVyLCAkc3BhbiArICRndXR0ZXIsICRzcGFuKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNxdWlzaCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmUoJHByZSk7XG4gIEBpbmNsdWRlIHBvc3QoJHBvc3QpO1xufVxuIiwiLy8gUGFkZGluZyBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmVmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFN1ZmZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzdWZmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHN1ZmZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUGFkXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBwYWQoXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocGFkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZWZpeCgkcHJlKTtcbiAgQGluY2x1ZGUgc3VmZml4KCRwb3N0KTtcblxufVxuIiwiLy8gQmxlZWQgU3ludGF4XG4vLyA9PT09PT09PT09PT1cblxuLy8gQmxlZWRcbi8vIC0tLS0tXG4vLyBBZGQgbmVnYXRpdmUgbWFyZ2lucywgYW5kIGVxdWFsIHBvc2l0aXZlIHBhZGRpbmcgdG8gY3JlYXRlIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQoXG4gICRibGVlZDogMCBndXR0ZXIoKVxuKSB7XG4gICRpbnNwZWN0ICA6ICRibGVlZDtcbiAgJG91dHB1dCAgIDogZ2V0LWJsZWVkKCRibGVlZCk7XG5cbiAgQGlmIHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSBjb250ZW50LWJveCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKChib3gtc2l6aW5nOiBjb250ZW50LWJveCksICRvdXRwdXQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJsZWVkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuXG4vLyBCbGVlZC14XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgaG9yaXpvbnRhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXgoXG4gICRibGVlZDogZ3V0dGVyKClcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAyKSAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXggb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEJsZWVkLXlcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciB2ZXJ0aWNhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXkoXG4gICRibGVlZDogaWYoZnVuY3Rpb24tZXhpc3RzKHJoeXRobSksIHJoeXRobSgxKSwgMWVtKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwIG50aCgkdHJibCwgMikgMCkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteSBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gR2V0IEJsZWVkXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBibGVlZCBvdXRwdXQgdmFsdWVzXG4vLyAtICRibGVlZDogPHNwYW4+XG5AZnVuY3Rpb24gZ2V0LWJsZWVkKFxuICAkYmxlZWRcbikge1xuICAkYmxlZWQgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJGJsZWVkKSk7XG4gICR0cmJsICAgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG4gICRzaG9ydCAgICA6IG51bGw7XG4gICRvdXRwdXQgICA6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR0cmJsKSB7XG4gICAgJHRoaXM6IG50aCgkdHJibCwgJGkpO1xuICAgICRuZXc6ICgpO1xuICAgICRtYXJnaW46IG51bGw7XG4gICAgJHBhZGRpbmc6IG51bGw7XG4gICAgJHBhZGRpbmcteDogbnVsbDtcblxuICAgIEBpZiAkdGhpcyA+IDAge1xuICAgICAgJHRoaXM6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAkdGhpcykpO1xuICAgICAgJG1hcmdpbjogc3BhbigkdGhpcyk7XG4gICAgICAkcGFkZGluZzogJG1hcmdpbjtcbiAgICAgICRwYWRkaW5nLXg6ICRwYWRkaW5nO1xuICAgIH1cblxuICAgIEBpZiAkbWFyZ2luIGFuZCAkbWFyZ2luID4gMCB7XG4gICAgICAkbWFyZ2luOiAtICRtYXJnaW47XG5cbiAgICAgIEBpZiBpcy1pbnNpZGUoJHRoaXMpIHtcbiAgICAgICAgJGd1dHRlcjogZ3V0dGVyKCR0aGlzKTtcbiAgICAgICAgJGpvaW46IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHBhZGRpbmcsICRndXR0ZXIpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICRwYWRkaW5nLXg6IGlmKCRqb2luIGFuZCAkcGFkZGluZyA+IDAsICRwYWRkaW5nICsgJGd1dHRlciwgJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAyIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDMge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gNCB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAkbmV3KTtcbiAgfVxuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG91dHB1dCB7XG4gICAgJG91dHB1dDogaWYoJHZhbHVlID09IDAsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJHByb3A6IG51bGwpKSwgJG91dHB1dCk7XG4gIH1cblxuICBAcmV0dXJuIGJsZWVkLXNob3J0aGFuZCgkb3V0cHV0KTtcbn1cblxuLy8gQmxlZWQgU2hvcnRoYW5kXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENvbnZlcnQgYmxlZWQgb3V0cHV0IGludG8gc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuXG4vLyAtICRibGVlZDogPG91dHB1dCBtYXA+XG5AZnVuY3Rpb24gYmxlZWQtc2hvcnRoYW5kKFxuICAkYmxlZWRcbikge1xuICAkbWFyZ2luOiAoKTtcbiAgJHBhZGRpbmc6ICgpO1xuICAkcmV0dXJuOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJsZWVkIHtcbiAgICBAaWYgc3RyLWluZGV4KCRrZXksIG1hcmdpbikge1xuICAgICAgJG1hcmdpbjogbWFwLW1lcmdlKCRtYXJnaW4sICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIGlmIHN0ci1pbmRleCgka2V5LCBwYWRkaW5nKSA+IDAge1xuICAgICAgJHBhZGRpbmc6IG1hcC1tZXJnZSgkcGFkZGluZywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICRwcm9wczogKFxuICAgIG1hcmdpbjogJG1hcmdpbixcbiAgICBwYWRkaW5nOiAkcGFkZGluZyxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJG1hcCBpbiAkcHJvcHMge1xuICAgICRmb3VyOiBpZihsZW5ndGgobWFwLWtleXMoJG1hcCkpID09IDQsIHRydWUsIGZhbHNlKTtcbiAgICAkbnVsbDogaWYoaW5kZXgobWFwLXZhbHVlcygkbWFwKSwgbnVsbCksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkZm91ciBhbmQgbm90KCRudWxsKSB7XG4gICAgICAkdG9wOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS10b3AnKTtcbiAgICAgICRyaWdodDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tcmlnaHQnKTtcbiAgICAgICRib3R0b206IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWJvdHRvbScpO1xuICAgICAgJGxlZnQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWxlZnQnKTtcblxuICAgICAgJHRiOiBpZigkdG9wID09ICRib3R0b20sICR0b3AsIG51bGwpO1xuICAgICAgJHJsOiBpZigkcmlnaHQgPT0gJGxlZnQsICRyaWdodCwgbnVsbCk7XG4gICAgICAkYWxsOiBpZigkdGIgPT0gJHJsLCAkdGIsIG51bGwpO1xuXG4gICAgICAkbmV3OiBpZigkYWxsLCAkYWxsLCBudWxsKTtcblxuICAgICAgQGlmIG5vdCgkbmV3KSB7XG4gICAgICAgIEBpZiAkdGIgYW5kICRybCB7XG4gICAgICAgICAgJG5ldzogJHRiICRybDtcbiAgICAgICAgfSBAZWxzZSBpZiAkcmwge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJsICRib3R0b207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJpZ2h0ICRib3R0b20gJGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmFtZTogJG5ldykpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICRtYXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cbiIsIi8qXG4qIFNjdXQsIGEgY29sbGVjdGlvbiBvZiBTYXNzIHV0aWxpdGllc1xuKiB0byBlYXNlIGFuZCBpbXByb3ZlIG91ciBpbXBsZW1lbnRhdGlvbnMgb2YgY29tbW9uIHN0eWxlLWNvZGUgcGF0dGVybnMuXG4qIHYxLjQuMFxuKiBEb2NzIGF0IGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0XG4qL1xuXG5AbWl4aW4gc2N1dC1jbGVhcmZpeCB7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNsZWFyZml4IHtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtdW5zdHlsZWQoXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCk7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1mbG9hdGVkIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJGRpcjogbGVmdCxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xuXG4gICYgPiBsaSB7XG4gICAgZmxvYXQ6ICRkaXI7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tI3skZGlyfTogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtZmxvYXRlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkO1xufVxuXG5AZnVuY3Rpb24gc2N1dC1hdXRvT3JWYWx1ZSAoJHZhbCkge1xuICBAaWYgJHZhbCA9PSBhIG9yICR2YWwgPT0gYXV0byB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtY29vcmRzIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICAkdG9wOiBudGgoJGNvb3JkaW5hdGVzLCAxKTtcbiAgJHJpZ2h0OiBudGgoJGNvb3JkaW5hdGVzLCAyKTtcbiAgJGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyk7XG4gICRsZWZ0OiBudGgoJGNvb3JkaW5hdGVzLCA0KTtcblxuICBAaWYgJHRvcCAhPSBuIHtcbiAgICB0b3A6IHNjdXQtYXV0b09yVmFsdWUoJHRvcCk7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBuIHtcbiAgICByaWdodDogc2N1dC1hdXRvT3JWYWx1ZSgkcmlnaHQpO1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG4ge1xuICAgIGJvdHRvbTogc2N1dC1hdXRvT3JWYWx1ZSgkYm90dG9tKTtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbiB7XG4gICAgbGVmdDogc2N1dC1hdXRvT3JWYWx1ZSgkbGVmdCk7XG4gIH1cblxufVxuQGZ1bmN0aW9uIHNjdXQtc3RyaXAtdW5pdCAoXG4gICRudW1cbikge1xuXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1lbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtZW0gKFxuICAkcGl4ZWxzLFxuICAkYmFzZTogJHNjdXQtZW0tYmFzZVxuKSB7XG5cbiAgLy8gJGJhc2UgY291bGQgYmUgaW4gZW0gb3IgcHggKG5vIHVuaXQgPSBweCkuXG4gIC8vIEFkanVzdCBhY2NvcmRpbmdseSB0byBjcmVhdGUgYSAkZGl2aXNvciB0aGF0XG4gIC8vIHNlcnZlcyBhcyBjb250ZXh0IGZvciAkcGl4ZWxzLlxuICAkbXVsdGlwbGllcjogaWYodW5pdCgkYmFzZSkgPT0gZW0sIDE2LCAxKTtcbiAgJGRpdmlzb3I6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZSkgKiAkbXVsdGlwbGllcjtcblxuICAkZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1lbXM6IChzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkZGl2aXNvcikgKiAxZW07XG4gICAgJGVtLXZhbHM6IGFwcGVuZCgkZW0tdmFscywgJHZhbC1pbi1lbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZW0tdmFscztcbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1yZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LXJlbSAoXG4gICRwaXhlbHNcbikge1xuXG4gICRyZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1yZW1zOiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkc2N1dC1yZW0tYmFzZSAqIDFyZW07XG4gICAgJHJlbS12YWxzOiBhcHBlbmQoJHJlbS12YWxzLCAkdmFsLWluLXJlbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcmVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkcmVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRyZW0tdmFscztcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1ib3JkZXIgKFxuICAkc3R5bGUsXG4gICRzaWRlczogbiB5XG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaWRlcykgPT0gMiB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaWRlcykgPT0gNCB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDMpICE9IG4ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgNCkgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlNjdXQtYm9yZGVyIHJlcXVpcmVzIGEgJHNpZGVzIGFyZ3VtZW50IG9mIDIgb3IgNCB2YWx1ZXMuXCJcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jaXJjbGUgKFxuICAkc2l6ZSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBAaWYgJGNvbG9yID09IGluaGVyaXQge1xuICAgIC8vIElmIHVzZXIgd2FudHMgdG8gaW5oZXJpdCB0aGUgY29sb3IsXG4gICAgLy8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBib3JkZXJcbiAgICAvLyBjb2xvciBkZWZhdWx0cyB0byB0aGUgdGV4dCBjb2xvciBvZiB0aGUgZWxlbWVudC5cbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGhlaWdodDogMDtcbiAgICB3aWR0aDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHVzZSBiYWNrZ3JvdW5kLWNvbG9yLlxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jb2xvci1zd2FwIChcbiAgJG9mZixcbiAgJG9uLFxuICAkZHVyYXRpb246IDAsXG4gICRiZzogZmFsc2Vcbikge1xuXG4gICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IG51bGw7XG4gICRvZmYtaXMtbGlzdDogdHlwZS1vZigkb2ZmKSA9PSBsaXN0O1xuICAkb24taXMtbGlzdDogdHlwZS1vZigkb24pID09IGxpc3Q7XG5cbiAgLy8gSWYgJG9mZiBJUyBhIGxpc3QsXG4gIC8vIGFzc2lnbiBjb2xvciBhbmQgYmFja2dyb3VuZC1jb2xvci5cbiAgQGlmICRvZmYtaXMtbGlzdCB7XG4gICAgY29sb3I6IG50aCgkb2ZmLCAxKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9mZiwgMik7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvciwgY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBUUlVFLFxuICAvLyBhc3NpZ24gYmFja2dyb3VuZC1jb2xvci5cbiAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9mZi1pcy1saXN0KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgRkFMU0UsXG4gIC8vIGFzc2lnbiBjb2xvci5cbiAgQGVsc2Uge1xuICAgIGNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGNvbG9yO1xuICB9XG5cbiAgLy8gT25seSBzZXQtdXAgdHJhbnNpdGlvbiBpZiAkZHVyYXRpb24gIT0gMC5cbiAgQGlmICRkdXJhdGlvbiAhPSAwIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzO1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuXG4gICAgLy8gJG9uIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgJG9mZiwgYWJvdmUuXG4gICAgQGlmICRvbi1pcy1saXN0IHtcbiAgICAgIGNvbG9yOiBudGgoJG9uLCAxKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb24sIDIpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvbi1pcy1saXN0KSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb247XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgY29sb3I6ICRvbjtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtaGQtYnAgKFxuICAkcmF0aW86IDEuM1xuKSB7XG5cbiAgQG1lZGlhICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAoJHJhdGlvIC8gMSkpLFxuICAgICAgICAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgICAgICAgIChtaW4tcmVzb2x1dGlvbjogKHJvdW5kKDk2ICogJHJhdGlvKSAqIDFkcGkpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oaWRlLXZpc3VhbGx5IHtcblxuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcblxufVxuXG4lc2N1dC1oaWRlLXZpc3VhbGx5IHtcbiAgQGluY2x1ZGUgc2N1dC1oaWRlLXZpc3VhbGx5O1xufVxuQG1peGluIHNjdXQtaW1hZ2UtcmVwbGFjZSB7XG5cbiAgdGV4dC1pbmRlbnQ6IDEwMiU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG5cbn1cblxuJXNjdXQtaW1hZ2UtcmVwbGFjZSB7XG4gIEBpbmNsdWRlIHNjdXQtaW1hZ2UtcmVwbGFjZTtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LXJlbSBhbmQgc2N1dC1zdHJpcC11bml0XG5cbkBtaXhpbiBzY3V0LXJlbS1mYWxsYmFjayAoXG4gICRwaXhlbHMsXG4gICRwcm9wZXJ0eTogZm9udC1zaXplXG4pIHtcblxuICAkcHgtdmFsczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXB4OiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgKiAxcHg7XG4gICAgJHB4LXZhbHM6IGFwcGVuZCgkcHgtdmFscywgJHZhbC1pbi1weCk7XG4gIH1cbiAgJHJlbS12YWxzOiBzY3V0LXJlbSgkcGl4ZWxzKTtcblxuICAjeyRwcm9wZXJ0eX06ICRweC12YWxzO1xuICAjeyRwcm9wZXJ0eX06ICRyZW0tdmFscztcblxufVxuQG1peGluIHNjdXQtcmVzZXQtYm9yZGVyLWJveCB7XG4gIC8vIE1ha2UgZXZlcnl0aGluZyBhIGJvcmRlci1ib3gsIGJlY2F1c2Ugd2h5IG5vdD9cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1hbnRpYWxpYXMge1xuICAvLyBBbnRpYWxpYXMhXG4gIGJvZHkge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXNlbWFudGljaXplIHtcbiAgLy8gTWFrZSBoZWFkZXJzIGFuZCA8Yj4gc2VtYW50aWMsIG5vdCBwcmVzZW50YXRpb25hbC5cbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wb2ludGVyIHtcbiAgLy8gQ2xpY2thYmxlIGZvcm0gZWxlbWVudHMgc2hvdWxkIGhhdmUgYSBwb2ludGVyLlxuICBsYWJlbCxcbiAgc2VsZWN0LFxuICBvcHRpb24sXG4gIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZvcm0ge1xuICBmaWVsZHNldCB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWJ1dHRvbiB7XG4gIC8vIFJlc2V0IGRlZmF1bHQgYnV0dG9uIHN0eWxlcywgd2hpY2ggYXJlIG5ldmVyIHVzZWQuXG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdLFxuICBbdHlwZT1cInJlc2V0XCJdIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogYXV0bztcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBhcmFncmFwaCB7XG4gIC8vIFNvbWUgcGFyYWdyYXBoIG1hcmdpbnMganVzdCBnZXQgaW4gdGhlIHdheS5cbiAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LW1lZGlhIHtcbiAgLy8gWW91IHdhbnQgdGhlc2UgZWxlbWVudHMgZmx1aWQsIHByb2JhYmx5LlxuICBpbWcsXG4gIHZpZGVvIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZpZ3VyZSB7XG4gIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbnMuXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8vIENhbGwgdGhlbSBhbGwsIG1pbnVzIGV4Y2x1c2lvbnMhXG5AbWl4aW4gc2N1dC1yZXNldCAoJGV4Y2x1ZGU6IGZhbHNlKSB7XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJvcmRlci1ib3gpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1ib3JkZXItYm94O1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGFudGlhbGlhcykpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWFudGlhbGlhcztcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBzZW1hbnRpY2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXNlbWFudGljaXplO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBvaW50ZXIpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wb2ludGVyO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZvcm0pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1mb3JtO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJ1dHRvbikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJ1dHRvbjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwYXJhZ3JhcGgpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wYXJhZ3JhcGg7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgbWVkaWEpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1tZWRpYTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmaWd1cmUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1maWd1cmU7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtc2VsZWN0ZWQgKFxuICAkYWN0aXZlOiBmYWxzZVxuKSB7XG5cbiAgQGlmICRhY3RpdmUge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtdHJpYW5nbGUgKFxuICAkZGlyZWN0aW9uOiByaWdodCxcbiAgJHNpemU6IDAuNzVlbSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIC8vIEZvciBpbXByb3ZlZCBhcHBlYXJhbmNlIGluIHNvbWUgV2Via2l0IGJyb3dzZXJzXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcblxuICAvLyBTZXQgdXAgc29tZSB2YXJpYWJsZXNcbiAgJHdpZHRoOiBudWxsO1xuICAkaGVpZ2h0OiBudWxsO1xuICAkYm9yZGVyLXdpZHRoczogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gbGlzdCB7XG4gICAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR3aWR0aDogJHNpemU7XG4gICAgJGhlaWdodDogJHNpemU7XG4gIH1cblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICAvLyBGb3IgdXAgYW5kIGRvd24sIHdpZHRoIGdldHMgdHdvIGJvcmRlcnMgYnV0IGhlaWdodCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgc2Vjb25kIGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICRoZWlnaHQgKCR3aWR0aCAvIDIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgLy8gRm9yIHJpZ2h0IGFuZCBsZWZ0LCBoZWlnaHQgZ2V0cyB0d28gYm9yZGVycyBidXQgd2lkdGggb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIGZpcnN0IGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgJHdpZHRoO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBGb3IgcmlnaHQgdHJpYW5nbGVzICh0aGUgcmVzdCksIGJvdGggc2lkZXMgZ2V0IHR3byBib3JkZXJzLFxuICAgIC8vIHNvIGRpdmlkZSBib3RoIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAoJHdpZHRoIC8gMik7XG4gIH1cblxuICBib3JkZXItd2lkdGg6ICRib3JkZXItd2lkdGhzO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG5cbiAgLy8gU1RBTkRBUkQgVFJJQU5HTEVTXG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cblxuICAvLyBDT1JORVIgVFJJQU5HTEVTXG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdG9wLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdHJpYW5nbGUge1xuICBAaW5jbHVkZSBzY3V0LXRyaWFuZ2xlO1xufVxuQG1peGluIHNjdXQtY2VudGVyLWFic29sdXRlbHkgKFxuICAkZGltZW5zaW9uc1xuKSB7XG5cbiAgJHdpZHRoOiBudGgoJGRpbWVuc2lvbnMsIDEpO1xuICAkaGVpZ2h0OiBudGgoJGRpbWVuc2lvbnMsIDIpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJHdpZHRoICE9IG4ge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAoLSR3aWR0aCAvIDIpO1xuICB9XG5cbiAgQGlmICRoZWlnaHQgIT0gbiB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6ICgtJGhlaWdodCAvIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1ibG9jayAoXG4gICRtYXgtd2lkdGg6IGZhbHNlXG4pIHtcblxuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBAaWYgJG1heC13aWR0aCB7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICB9XG5cbn1cblxuJXNjdXQtY2VudGVyLWJsb2NrIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItYmxvY2s7XG59XG5cbkBtaXhpbiBzY3V0LWNlbnRlci10cmFuc2Zvcm0gKFxuICAkYXhpczogZmFsc2UgLy8gb3IgeCBvciB5XG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICRheGlzICE9IHgge1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgfVxuXG4gIEBpZiAkYXhpcyAhPSB5IHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgJHRyYW5zbGF0ZS12YWw6IG51bGw7XG5cbiAgQGlmIG5vdCgkYXhpcykge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geCB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIC1tcy10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICB0cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXgge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeCk7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuQG1peGluIHNjdXQtZmlsbCAoXG4gICR3aWR0aC1oZWlnaHQ6IGZhbHNlXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgQGlmICR3aWR0aC1oZWlnaHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtZmlsbCB7XG4gIEBpbmNsdWRlIHNjdXQtZmlsbDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtY3VzdG9tIChcbiAgJGNvbnRlbnQ6IFwiXFwyMDIyXCIsXG4gICRtYXJrZXItd2lkdGg6IDAuNzVlbSxcbiAgJHBhZDogMCxcbiAgJG5vLW1hcmdpbjogZmFsc2Vcbikge1xuXG4gICRjb250ZW50LXZhbDogbnVsbDtcbiAgJGNvdW50ZXI6IGluZGV4KCRjb250ZW50LCBjb3VudCk7XG4gIEBpZiAkY291bnRlciB7XG4gICAgQGlmIGxlbmd0aCgkY29udGVudCkgPT0gMyB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyLCBudGgoJGNvbnRlbnQsIDMpKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAyIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICRjb250ZW50LXZhbDogJGNvbnRlbnQ7XG4gIH1cblxuICBwYWRkaW5nLWxlZnQ6ICRtYXJrZXItd2lkdGggKyAkcGFkO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gICYgPiBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiAkY291bnRlciB7XG4gICAgICBjb3VudGVyLWluY3JlbWVudDogc2N1dGxpc3Rjb3VudGVyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkY29udGVudC12YWw7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IC0kbWFya2VyLXdpZHRoO1xuICAgICAgd2lkdGg6ICRtYXJrZXItd2lkdGg7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC1mbG9hdGVkYCwgd2hpY2ggZGVwZW5kcyBpbiB0dXJuIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1kaXZpZGVkIChcbiAgJGRpdmlkZXI6IFwifFwiLFxuICAkc3BhY2U6IDAuNWVtLFxuICAkZGlyOiBsZWZ0LFxuICAkaGVpZ2h0OiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQoJGRpcjogJGRpciwgJG5vLW1hcmdpbjogJG5vLW1hcmdpbik7XG5cbiAgJHBzZXVkbzogaWYoJGRpciA9PSBsZWZ0LCAnYmVmb3JlJywgJ2FmdGVyJyk7XG5cbiAgLy8gSWYgYW4gZXhwbGljaXQgaGVpZ2h0IGlzIHBhc3NlZCxcbiAgLy8gdGhpbmdzIGFyZSBkaWZmZXJlbnQ6IEFsbCA8bGk+c1xuICAvLyBuZWVkIHRoZSBwc2V1ZG8tZWxlbWVudCAodG8gZm9yY2UgaGVpZ2h0KSxcbiAgLy8gYnV0IHRoZSBmaXJzdCdzIG11c3QgYmUgaGlkZGVuLlxuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICAmID4gbGkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICAmID4gbGk6I3skcHNldWRvfSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgJiA+IGxpOmZpcnN0LWNoaWxkOiN7JHBzZXVkb30ge1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gICYgPiBsaSArIGxpOiN7JHBzZXVkb30ge1xuICAgIEBpZiBub3QoJGhlaWdodCkge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjZTtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtYmFyIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQ7XG59XG5cbiVzY3V0LWxpc3QtYnJlYWRjcnVtYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKFwiL1wiKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWlubGluZSAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtaW5saW5lO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtcHVuY3R1YXRlZCAoXG4gICRkaXZpZGVyOiBcIiwgXCIsXG4gICRkaXNwbGF5OiBpbmxpbmUsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6ICRkaXNwbGF5O1xuICAgICY6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWNvbW1hIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXB1bmN0dWF0ZWQ7XG59XG5AbWl4aW4gc2N1dC1tYXJnaW4gKFxuICAkbWFyZ2luXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDEgYW5kICRtYXJnaW4gIT0gbiB7XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMiB7XG4gICAgJG1hcmdpbi15OiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgQGlmICRtYXJnaW4teSAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDMge1xuICAgICRtYXJnaW4teS10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLXktYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgQGlmICRtYXJnaW4teS10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi15LWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSA0IHtcbiAgICAkbWFyZ2luLXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4tcmlnaHQ6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgICRtYXJnaW4tbGVmdDogbnRoKCRtYXJnaW4sIDQpO1xuICAgIEBpZiAkbWFyZ2luLXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1yaWdodCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi1yaWdodDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWxlZnQgIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi1sZWZ0O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1wYWRkaW5nIChcbiAgJHBhZGRpbmdcbikge1xuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDEgYW5kICRwYWRkaW5nICE9IG4ge1xuICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDIge1xuICAgICRwYWRkaW5nLXk6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICBAaWYgJHBhZGRpbmcteSAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15O1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXk7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAzIHtcbiAgICAkcGFkZGluZy15LXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLXktYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgIEBpZiAkcGFkZGluZy15LXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15LXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteS1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gNCB7XG4gICAgJHBhZGRpbmctdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXJpZ2h0OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICAkcGFkZGluZy1sZWZ0OiBudGgoJHBhZGRpbmcsIDQpO1xuICAgIEBpZiAkcGFkZGluZy10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmctdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctcmlnaHQgIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy1yaWdodDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1sZWZ0ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy1sZWZ0O1xuICAgIH1cbiAgfVxufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1hYnNvbHV0ZSAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWFic29sdXRlIHtcbiAgQGluY2x1ZGUgc2N1dC1hYnNvbHV0ZTtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtZml4ZWQgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1maXhlZCB7XG4gIEBpbmNsdWRlIHNjdXQtZml4ZWQ7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LXJlbGF0aXZlIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cbkBtaXhpbiBzY3V0LXJhdGlvLWJveCAoXG4gICRyYXRpbzogMS8xXG4pIHtcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVGhlIGNvbnRhaW5lcidzIGhlaWdodCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZVxuICAvLyBjb250YWluZXIncyB3aWR0aCwgaXMgc2V0IGJ5IGFzc2lnbmluZ1xuICAvLyBwYWRkaW5nLXRvcCB0byBhIHBzZXVkby1lbGVtZW50LlxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgcGFkZGluZy10b3A6ICgxIC8gJHJhdGlvKSAqIDEwMCU7XG4gIH1cblxufVxuXG4lc2N1dC1yYXRpby1ib3gge1xuICBAaW5jbHVkZSBzY3V0LXJhdGlvLWJveDtcbn1cbkBtaXhpbiBzY3V0LXNpemUoXG4gICRzaXplXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAxIHtcbiAgICB3aWR0aDogICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICB3aWR0aDogIG50aCgkc2l6ZSwgMSk7XG4gICAgaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAtJGhlaWdodDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAjeyR3cmFwcGVyfTphZnRlcixcbiAgI3skZm9vdGVyfSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG5cbn1cblxuLy8gZGVwcmVjYXRlZFxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3RlciAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbil7XG4gIEBpbmNsdWRlIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCgkaGVpZ2h0LCAkd3JhcHBlciwgJGZvb3Rlcik7XG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZsdWlkIChcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICN7JGZvb3Rlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcbiAgICBoZWlnaHQ6IDFweDtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLWliIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICAvLyBUaGUgaW5uZXIgZWxlbWVudCBpcyB2ZXJ0aWNhbGx5IGNlbnRlcmVkXG4gIC8vIGJ5IG1pZGRsZS1hbGlnbmluZyBpdCB3aXRoIGFuIGlubGluZSBwc2V1ZG8tZWxlbWVudFxuICAvLyB3aG9zZSBoZWlnaHQgaXMgMTAwJS5cblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgLy8gQSBzbWFsbCBuZWdhdGl2ZSByaWdodCBtYXJnaW4gaXMgc2V0XG4gICAgLy8gdG8gYWNjb3VudCBmb3IgdGhlIGRlZmF1bHRcbiAgICAvLyB3b3JkLXNwYWNpbmcgb2YgaW5saW5lLWJsb2NrLlxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVlbTtcbiAgfVxuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC12Y2VudGVyLWliIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLWliO1xufVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLWxoIChcbiAgJGhlaWdodFxuKSB7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJGhlaWdodDtcblxufVxuQG1peGluIHNjdXQtdmNlbnRlci10ZCAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgZGlzcGxheTogdGFibGU7XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG5cbiVzY3V0LXZjZW50ZXItdGQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdGQ7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1jZW50ZXItdHJhbnNmb3JtXG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItdHQgKCkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbiVzY3V0LXZjZW50ZXItdHQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdHQ7XG59XG4vLyBzcGFjZVxuJHNjdXQtc3BhY2U6IFwiXFwwMDIwXCI7XG4vLyBub24tYnJlYWtpbmcgc3BhY2VcbiRzY3V0LW5ic3A6IFwiXFwwMGEwXCI7XG5cbi8vIHF1b3RhdGlvbiBtYXJrXG4kc2N1dC1xdW90OiBcIlxcMDAyMlwiO1xuLy8gbGVmdCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LWxzcXVvOiBcIlxcMjAxOFwiO1xuLy8gcmlnaHQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1yc3F1bzogXCJcXDIwMTlcIjtcbi8vIGxlZnQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1sZHF1bzogXCJcXDIwMUNcIjtcbi8vIHJpZ2h0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtcmRxdW86IFwiXFwyMDFEXCI7XG4vLyBsZWZ0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbHNhcXVvOiBcIlxcMjAzOVwiO1xuLy8gcmlnaHQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yc2FxdW86IFwiXFwyMDNBXCI7XG4vLyBsZWZ0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbGFxdW86IFwiXFwwMGFiXCI7XG4vLyByaWdodCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJhcXVvOiBcIlxcMDBiYlwiO1xuXG4vLyBlbSBkYXNoIChtdXR0b24pXG4kc2N1dC1tZGFzaDogXCJcXDIwMTRcIjtcbi8vIGVuIGRhc2ggKG51dClcbiRzY3V0LW5kYXNoOiBcIlxcMjAxM1wiO1xuLy8gaHlwaGVuXG4kc2N1dC1oeXBoZW46IFwiXFwyMDEwXCI7XG5cbi8vIGFtcGVyc2FuZFxuJHNjdXQtYW1wOiBcIlxcMDAyNlwiO1xuLy8gZ3JlYXRlciB0aGFuXG4kc2N1dC1ndDogXCJcXDAwM2VcIjtcbi8vIGxlc3MgdGhhblxuJHNjdXQtbHQ6IFwiXFwwMDNjXCI7XG4vLyB0aW1lc1xuJHNjdXQtdGltZXM6IFwiXFwwMEQ3XCI7XG4vLyBiaWcgdGltZXNcbiRzY3V0LWJpZ3RpbWVzOiBcIlxcMjcxNVwiO1xuLy8gY2hlY2ttYXJrXG4kc2N1dC1jaGVja21hcms6IFwiXFwyNzEzXCI7XG5cbi8vIHNlY3Rpb24gc2lnbiAoZG91YmxlIFMsIGh1cnJpY2FuZSwgc2VjdGlvbmFsIHN5bWJvbCwgdGhlIGxlZ2FsIGRvdWdobnV0LCBzaWdudW0gc2VjdGlvbmlzKVxuJHNjdXQtc2VjdDogXCJcXDAwYTdcIjtcbi8vIHBhcmFncmFwaCBzeW1ib2wgKHBpbGNyb3cpXG4kc2N1dC1wYXJhOiBcIlxcMDBiNlwiO1xuXG4vLyBtaWRkb3QgKGludGVycHVuY3QsIGludGVycG9pbnQpXG4kc2N1dC1taWRkb3Q6IFwiXFwwMGI3XCI7XG4vLyBvLXNsYXNoIChzbGFzaGVkIG8pXG4kc2N1dC1vc2xhc2g6IFwiXFwwMGY4XCI7XG4vLyBidWxsZXRcbiRzY3V0LWJ1bGw6IFwiXFwyMDIyXCI7XG4vLyB3aGl0ZSBidWxsZXRcbiRzY3V0LXdoaWJ1bGw6IFwiXFwyNUU2XCI7XG4vLyBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1oZWxsaXA6IFwiXFwyMDI2XCI7XG4vLyB2ZXJ0aWNhbCBlbGxpcHNpc1xuJHNjdXQtdmVsbGlwOiBcIlxcMjJFRVwiO1xuLy8gbWlkbGluZSBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1taWRoZWxsaXA6IFwiXFwyMkVGXCI7XG5cbi8vIHVwLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC11dHJpOiBcIlxcMjViMlwiO1xuLy8gZG93bi1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtZHRyaTogXCJcXDI1YmNcIjtcbi8vIGxlZnQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWx0cmk6IFwiXFwyNWMwXCI7XG4vLyByaWdodC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtcnRyaTogXCJcXDI1YjZcIjtcbi8vIHVwLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC11c3RyaTogXCJcXDI1YjRcIjtcbi8vIGRvd24tcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWRzdHJpOiBcIlxcMjViZVwiO1xuLy8gbGVmdC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtbHN0cmk6IFwiXFwyNWMyXCI7XG4vLyByaWdodC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtcnN0cmk6IFwiXFwyNWI4XCI7XG4vLyBkaWFtb25kXG4kc2N1dC1kaWFtb25kOiBcIlxcMjVjNlwiO1xuLy8gZmlzaGV5ZVxuJHNjdXQtZmlzaGV5ZTogXCJcXDI1YzlcIjtcbi8vIGJ1bGxzZXllXG4kc2N1dC1idWxsc2V5ZTogXCJcXDI1Y2VcIjtcbi8vIGNpcmNsZVxuJHNjdXQtY2lyY2xlOiBcIlxcMjVjZlwiO1xuLy8gd2hpdGUgY2lyY2xlXG4kc2N1dC13aGl0ZWNpcmNsZTogXCJcXDI1Y2JcIjtcbi8vIHNxdWFyZVxuJHNjdXQtc3F1YXJlOiBcIlxcMjVhMFwiO1xuLy8gd2hpdGUgc3F1YXJlXG4kc2N1dC13aGl0ZXNxdWFyZTogXCJcXDI1YTFcIjtcbi8vIHNtYWxsIHNxdWFyZVxuJHNjdXQtc3NxdWFyZTogXCJcXDI1YWFcIjtcbi8vIHNtYWxsIHdoaXRlIHNxdWFyZVxuJHNjdXQtc3doaXRlc3F1YXJlOiBcIlxcMjVhYlwiO1xuXG4vLyBnZW5lcmFsIGN1cnJlbmN5XG4kc2N1dC1jdXJyZW5jeTogXCJcXDAwYTRcIjtcbi8vIGNlbnRcbiRzY3V0LWNlbnQ6IFwiXFwwMGEyXCI7XG4vLyBkb2xsYXJcbiRzY3V0LWRvbGxhcjogXCJcXDAwMjRcIjtcbi8vIHBvdW5kXG4kc2N1dC1wb3VuZDogXCJcXDAwYTNcIjtcbi8vIGV1cm9cbiRzY3V0LWV1cm86IFwiXFwyMGFjXCI7XG4vLyB5ZW5cbiRzY3V0LXllbjogXCJcXDAwYTVcIjtcbi8vIHJ1cGVlXG4kc2N1dC1ydXBlZTogXCJcXDIwQjlcIjtcbkBmdW5jdGlvbiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KSB7XG4gIC8vIFJldHVybiB0aGUgbGlzdCBvZiBgc3JjYCB2YWx1ZXMsIGluIG9yZGVyLCB0aGF0XG4gIC8vIGEgZ29vZCBgQGZvbnQtZmFjZWAgd2lsbCBuZWVkLCBpbmNsdWRpbmcgb25seVxuICAvLyB0aG9zZSBmb3JtYXRzIHNwZWNpZmllZCBpbiB0aGUgbGlzdCBgJGZvcm1hdHNgLlxuICAkcmVzdWx0OiAoKTtcbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAkZW90LXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRlb3QtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmMikge1xuICAgICR3b2ZmMi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYyLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZikge1xuICAgICR3b2ZmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB0dGYpIHtcbiAgICAkdHRmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHR0Zi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHN2Zykge1xuICAgICRzdmctdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fScpIGZvcm1hdCgnc3ZnJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRzdmctdmFsLCBjb21tYSk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AbWl4aW4gc2N1dC1mb250LWZhY2UgKFxuICAkZm9udC1mYW1pbHksXG4gICRmaWxlLXBhdGgsXG4gICR3ZWlnaHQ6IG5vcm1hbCxcbiAgJHN0eWxlOiBub3JtYWwsXG4gICRmb3JtYXRzOiBlb3Qgd29mZjIgd29mZiB0dGYgc3ZnXG4pIHtcblxuICBAaWYgaW5kZXgoJ2l0YWxpYycgJ29ibGlxdWUnLCAkd2VpZ2h0KSB7XG4gICAgJHN0eWxlOiAkd2VpZ2h0O1xuICAgICR3ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuXG4gICAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAgIHNyYzogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgIH1cbiAgICBzcmM6IG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpO1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGFuZ2luZy1pbmRlbnQgKFxuICAkaW5kZW50OiAxZW1cbikge1xuXG4gIC8vIHBhZGRpbmctbGVmdCBjcmVhdGVzIHRoZSBpbmRlbnQsXG4gIC8vIHdoaWxlIHRleHQtaW5kZW50IHB1bGxzIHRoZSBmaXJzdCBsaW5lXG4gIC8vIGJhY2sgdG8gdGhlIGVkZ2UuXG5cbiAgcGFkZGluZy1sZWZ0OiAkaW5kZW50O1xuICB0ZXh0LWluZGVudDogLSRpbmRlbnQ7XG5cbn1cblxuJXNjdXQtaGFuZ2luZy1pbmRlbnQge1xuICBAaW5jbHVkZSBzY3V0LWhhbmdpbmctaW5kZW50O1xufVxuQG1peGluIHNjdXQtaW5kZW50ZWQtcHMgKFxuICAkaW5kZW50OiAxLjVlbSxcbiAgJG5vLWZpcnN0LWluZGVudDogdHJ1ZVxuKSB7XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtaW5kZW50OiAkaW5kZW50O1xuICB9XG5cbiAgQGlmICRuby1maXJzdC1pbmRlbnQge1xuICAgIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB0ZXh0LWluZGVudDogMDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1pbmRlbnRlZC1wcyB7XG4gIEBpbmNsdWRlIHNjdXQtaW5kZW50ZWQtcHM7XG59XG5AbWl4aW4gc2N1dC1rZXktdmFsIChcbiAgJGRpdmlkZXI6IFwiOlwiLFxuICAkcGFkOiAwLjI1ZW0sXG4gICRpbmRlbnQ6IDFlbSxcbiAgJHNwYWNpbmc6IDAsXG4gICRwYWQtbGVmdDogMFxuKSB7XG5cbiAgJiA+IGR0IHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkcGFkO1xuICAgICAgQGlmICRwYWQtbGVmdCAhPSAwIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRwYWQtbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmID4gZGQge1xuICAgIG1hcmdpbi1sZWZ0OiAkaW5kZW50O1xuICAgIEBpZiAkc3BhY2luZyAhPSAwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWtleS12YWwge1xuICBAaW5jbHVkZSBzY3V0LWtleS12YWw7XG59XG5AbWl4aW4gc2N1dC1saW5rLWJiIChcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkd2lkdGg6IDFweFxuKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gIGJvcmRlci1ib3R0b20td2lkdGg6ICR3aWR0aDtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgfVxuXG59XG5cbiVzY3V0LWxpbmstYmIge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstYmI7XG59XG4vLyBTQ1VUIExJTksgVU5TVFlMRURcbi8vIGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0LyNsaW5rLXVuc3R5bGVkXG5cbkBtaXhpbiBzY3V0LWxpbmstdW5zdHlsZWQoKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcblxufVxuXG4lc2N1dC1saW5rLXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLXVuc3R5bGVkKCk7XG59XG5cbkBtaXhpbiBzY3V0LXJldmVyc2UtaXRhbGljcyAoXG4gICRlbGVtZW50czogbnVsbFxuKSB7XG5cbiAgJGVsZW1lbnQtbGlzdDogZW0sIGNpdGUsIGk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgI3tqb2luKCRlbGVtZW50LWxpc3QsICRlbGVtZW50cyl9IHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cblxufVxuXG4lc2N1dC1yZXZlcnNlLWl0YWxpY3Mge1xuICBAaW5jbHVkZSBzY3V0LXJldmVyc2UtaXRhbGljcztcbn1cblxuQG1peGluIHNjdXQtc2lkZS1saW5lZCAoXG4gICRoZWlnaHQ6IDFweCxcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkdi1hZGp1c3Q6IGZhbHNlLFxuICAkZG91YmxlOiBmYWxzZVxuKSB7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDUwJTtcblxuICAgIGJvcmRlci10b3Atc3R5bGU6ICRzdHlsZTtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAkaGVpZ2h0O1xuXG4gICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgJHYtYWRqdXN0ICE9IGZhbHNlIHtcbiAgICAgIGJvdHRvbTogJHYtYWRqdXN0O1xuICAgIH1cblxuICAgIEBpZiAkZG91YmxlICE9IGZhbHNlIHtcbiAgICAgIGhlaWdodDogJGRvdWJsZTtcbiAgICAgIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6ICRoZWlnaHQ7XG4gICAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0OiAkc3BhY2U7XG4gICAgbWFyZ2luLWxlZnQ6IC01MCU7XG4gIH1cbiAgJjphZnRlciB7XG4gICAgbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXNpZGUtbGluZWQge1xuICBAaW5jbHVkZSBzY3V0LXNpZGUtbGluZWQ7XG59XG5AbWl4aW4gc2N1dC10cnVuY2F0ZSB7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbn1cblxuJXNjdXQtdHJ1bmNhdGUge1xuICBAaW5jbHVkZSBzY3V0LXRydW5jYXRlO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInRvb2xraXQvcGxhY2Vob2xkZXJzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcInRvb2xraXQvY29sb3JzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9mb250c1wiO1xuQGltcG9ydCBcInRvb2xraXQvaW50cmluc2ljLXJhdGlvXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9uZXN0ZWQtY29udGV4dFwiO1xuQGltcG9ydCBcInRvb2xraXQvcGFyYWxsYXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3J0bFwiO1xuQGltcG9ydCBcInRvb2xraXQvdGFyZ2V0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC90cmlhbmdsZVwiO1xuQGltcG9ydCBcInRvb2xraXQvY2VudGVyXCI7XG5AaW1wb3J0IFwidG9vbGtpdC92aWV3cG9ydFwiO1xuQGltcG9ydCBcInRvb2xraXQvdW5kZXJsaW5lXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9hcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3NldC1tdWx0aXBsZVwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRUb29sa2l0LVNldHRpbmdzOiAoXG4gICdjbGVhcmZpeCBleHRlbmQnOiBmYWxzZSxcbiAgJ2NvbG9yIHN0YWNrIGFtb3VudHMnOiAyNSUgNTAlIDc1JSA4NSUgOTAlLFxuICAndGludCBzaGFkZSBhbW91bnRzJzogNzUlIDUwJSAyNSUsXG4gICd0aW50IGNvbG9yJzogI2ZmZixcbiAgJ3NoYWRlIGNvbG9yJzogIzAwMCxcbiAgJ2NvbG9yIHNjYWxlIHN0ZXBzJzogNixcbiAgJ2xpZ2F0dXJlIGV4dGVuZCc6IGZhbHNlLFxuICAnZm9udCBmYWNlIHdlaWdodCc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBzdHlsZSc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZic6IGZhbHNlLFxuICAnaWNvbiBmb250IGV4dGVuZCc6IGZhbHNlLFxuICAnaWNvbiBmb250IHNwZWFrJzogZmFsc2UsXG4gICdmYWRlIGluIGR1cmF0aW9uJzogMXMsXG4gICdmYWRlIGluIGxvYWRpbmcgY2xhc3MnOiAnLndmLWxvYWRpbmcnLFxuICAnZmFkZSBpbiBleHRlbmQnOiBmYWxzZSxcbiAgJ2ludHJpbnNpYyByYXRpbyc6IDE2LzksXG4gICdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnOiAxMDAlLFxuICAnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJzogJz4gKicsXG4gICdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nOiB0b3AsXG4gICdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJzogZmFsc2UsXG4gICduZXN0ZWQgY29udGV4dCBjb250ZXh0cyc6IDEwMCUsXG4gICduZXN0ZWQgY29udGV4dCBwb3NpdGlvbic6IGxlZnQsXG4gICd0cmlhbmdsZSBjb2xvcic6ICMwMDAsXG4gICd0cmlhbmdsZSBoZWlnaHQnOiAxZW0sXG4gICd0cmlhbmdsZSB3aWR0aCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIGFuZ2xlJzogMCxcbiAgJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJzogMSxcbiAgJ3BhcmFsbGF4IGVsZW1lbnQnOiAnYm9keScsXG4gICdwYXJhbGxheCBpb3MnOiB0cnVlLFxuICAncGFyYWxsYXggZGlzdGFuY2UnOiAwLFxuICAndmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICd2ZXJ0aWNhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnOiA1MCUsXG4gICdob3Jpem9udGFsIGZpeGVkJzogZmFsc2UsXG4gICdob3Jpem9udGFsIGV4dGVuZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJzogZmFsc2UsXG4gICd1bmRlcmxpbmUgYmFja2dyb3VuZCc6ICNmZmYsXG4gICd1bmRlcmxpbmUgY29sb3InOiAjMDBlLFxuICAndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnOiB0cnVlLFxuICAndW5kZXJsaW5lIGRpc3RhbmNlJzogMSxcbiAgJ3VuZGVybGluZSB3aWR0aCc6IDIsXG4gICd1bmRlcmxpbmUgZXh0ZW5kJzogZmFsc2UsXG4gICdhcnQgcGl4ZWwgc2l6ZSc6IDFweCxcbiAgJ2FydCBjb2xvcic6IGJsYWNrLFxuICAnYXJ0IGJvcmRlciByYWRpdXMnOiAwJVxuKTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBOZXcgU2V0dGluZ3MgbW9kdWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdsb2JhbFxuJEdsb2JhbFNldHRpbmdzOiAkVG9vbGtpdC1TZXR0aW5ncyAhZGVmYXVsdDtcbi8vIFVzZXJcbiRVc2VyU2V0dGluZ3M6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVzZXIgU2V0dGluZyBFeGlzdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJFJldHVybjtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1oYXMoJHNldHRpbmcpIHtcbiAgQHJldHVybiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIEdldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEdsb2JhbFNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctZ2V0LW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkdmFsdWVzOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkdmFsdWVzOiBtYXAtbWVyZ2UoJHZhbHVlcywgKCRzZXR0aW5nOiBzZXR0aW5nLWdldCgkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICR2YWx1ZXM7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtZ2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1nZXQoJHNldHRpbmcpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZ3MgU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgJHNldHRpbmdzKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZS1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJFJldHVybjogKCk7XG5cbiAgQGVhY2ggJEtleSwgJFZhbHVlIGluICRVc2VyU2V0dGluZ3Mge1xuICAgICRSZXR1cm46IGlmKCRzZXR0aW5nID09ICRLZXksICRSZXR1cm4sIG1hcC1tZXJnZSgkUmV0dXJuLCAoJEtleTogJFZhbHVlKSkpO1xuICB9XG5cbiAgJFVzZXJTZXR0aW5nczogJFJldHVybiAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRjbGVhci10aGUtc2V0dGluZ3M6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcmVzZXQoKSB7XG4gICRVc2VyU2V0dGluZ3M6ICgpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLXJlc2V0KCk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBQaWNrXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2soJHNldHRpbmcsICRpbnB1dCkge1xuICBAcmV0dXJuIGlmKCRpbnB1dCAhPSBudWxsLCAkaW5wdXQsIHNldHRpbmctZ2V0KCRzZXR0aW5nKSk7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2stbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZywgJGlucHV0IGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogc2V0dGluZy1waWNrKCRpbnB1dCwgJHNldHRpbmcpKSk7XG4gIH1cblxuICBAcmV0dXJuICRSZXR1cm47XG59IiwiJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFBsYWNlaG9sZGVyIEdldC9TZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCkge1xuICAkdW5pcXVlLWlkOiB1bmlxdWUtaWQoKTtcbiAgJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6IG1hcC1tZXJnZSgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgKCRpZDogJHVuaXF1ZS1pZCkpICFnbG9iYWw7XG4gIEByZXR1cm4gJHVuaXF1ZS1pZDtcbn1cblxuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCkge1xuICBAcmV0dXJuIG1hcC1nZXQoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICRpZCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhdGUgUGxhY2Vob2xkZXIgQ2xhc3MgYW5kIEV4dGVuZFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKTtcblxuICBAaWYgJHBsYWNlaG9sZGVyLWlkID09IG51bGwge1xuICAgICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKTtcbiAgICBAYXQtcm9vdCAlI3skcGxhY2Vob2xkZXItaWR9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZXh0ZW5kICUjeyRwbGFjZWhvbGRlci1pZH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU3RhdGljIE1peGluIEhlbHBlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gbWl4aW4tZHJ5ZXIoJGlkLCAkZXh0ZW5kOiB0cnVlKSB7XG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNb2Rlcm4gQ2xlYXJmaXggTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNsZWFyZml4KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnY2xlYXJmaXggZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjbGVhcmZpeCcpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb21wYXNzIEV4dGVuc2lvbiBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUaW50IGFuZCBTaGFkZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMdW1hXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBsdW1hKCRjb2xvcikge1xuICBAcmV0dXJuIChyZWQoJGNvbG9yKSAqIC4yOTkpICsgKGdyZWVuKCRjb2xvcikgKiAuNTg3KSArIChibHVlKCRjb2xvcikgKiAuMTE0KTtcbn1cblxuQGZ1bmN0aW9uIGx1bWEtZ3RlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPj0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWx0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpIDw9IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1kaWZmKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQHJldHVybiBsdW1hKCRjb2xvcjEpIC0gbHVtYSgkY29sb3IyKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTdGFja3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXN0YWNrKCRtYWluLCAkc2Vjb25kYXJ5LCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ2NvbG9yIHN0YWNrIGFtb3VudHMnKTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJGFtb3VudHMpID09IDEge1xuICAgICRhbW91bnRzOiBudGgoJGFtb3VudHMsIDEpO1xuICB9XG5cbiAgJHN0YWNrOiAkbWFpbjtcblxuICBAZWFjaCAkYW1vdW50IGluICRhbW91bnRzIHtcbiAgICAkc3RhY2s6IGpvaW4oJHN0YWNrLCBtaXgoJHNlY29uZGFyeSwgbnRoKCRzdGFjaywgMSksICRhbW91bnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0YWNrO1xufVxuXG4vLyBUaW50IFN0YWNrXG5AZnVuY3Rpb24gdGludC1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFNoYWRlIFN0YWNrXG5AZnVuY3Rpb24gc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFRpbnQvU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgJGNvbG9yczogKCk7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgndGludCBzaGFkZSBhbW91bnRzJyk7XG4gIH1cbiAgJGxlbmd0aDogbGVuZ3RoKCRhbW91bnRzKTtcblxuICAvLyBTaGFkZXNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgc2hhZGUoJGNvbG9yLCBudGgoJGFtb3VudHMsICRpKSkpO1xuICB9XG5cbiAgLy8gQmFzZVxuICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgJGNvbG9yKTtcblxuICAvLyBUaW50c1xuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRsZW5ndGggLSAxIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgdGludCgkY29sb3IsIG50aCgkYW1vdW50cywgJGxlbmd0aCAtICRpKSkpO1xuICB9XG5cbiAgQHJldHVybiAkY29sb3JzO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFNjYWxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc2NhbGUoJG1haW4sICRzZWNvbmRhcnksICRzdGVwczogbnVsbCkge1xuICAkc3RlcHM6IGlmKCRzdGVwcyAhPSBudWxsLCAkc3RlcHMsIHRvb2xraXQtZ2V0KCdjb2xvciBzY2FsZSBzdGVwcycpKTtcblxuICAkbGlzdDogJG1haW47XG5cbiAgJHJlZDE6IHJlZCgkbWFpbik7XG4gICRyZWQyOiByZWQoJHNlY29uZGFyeSk7XG4gICRyZWQtZGlmZjogKCgkcmVkMSAtICRyZWQyKSAvICgoJHN0ZXBzIC0gMSkpKTtcblxuICAkaHVlMTogaHVlKCRtYWluKTtcbiAgJGh1ZTI6IGh1ZSgkc2Vjb25kYXJ5KTtcbiAgQGlmICgkaHVlMiArIDM1OSAtICRodWUxKSA8IGFicygkaHVlMSAtICRodWUyKSB7XG4gICAgJGh1ZTI6ICRodWUyICsgMzU5O1xuICB9XG4gICRodWUtZGlmZjogKCRodWUyIC0gJGh1ZTEpIC8gKCRzdGVwcyAtIDEpO1xuXG4gICRzYXQxOiBzYXR1cmF0aW9uKCRtYWluKTtcbiAgJHNhdDI6IHNhdHVyYXRpb24oJHNlY29uZGFyeSk7XG4gICRzYXQtZGlmZjogMDtcbiAgQGlmICRzYXQxID4gJHNhdDIge1xuICAgICRzYXQtZGlmZjogKCRzYXQyIC0gJHNhdDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MSAtICRzYXQyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRsdGUxOiBsaWdodG5lc3MoJG1haW4pO1xuICAkbHRlMjogbGlnaHRuZXNzKCRzZWNvbmRhcnkpO1xuICAkbHRlLWRpZmY6IDA7XG4gIEBpZiAkbHRlMSA+ICRsdGUyIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMiAtICRsdGUxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTEgLSAkbHRlMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkYWxwMTogYWxwaGEoJG1haW4pO1xuICAkYWxwMjogYWxwaGEoJHNlY29uZGFyeSk7XG4gICRhbHAtZGlmZjogMDtcbiAgQGlmICRhbHAxID4gJGFscDIge1xuICAgICRhbHAtZGlmZjogKCRhbHAyIC0gJGFscDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMSAtICRhbHAyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRodWUtaG9sZDogJGh1ZTE7XG4gICRzYXQtaG9sZDogJHNhdDE7XG4gICRsdGUtaG9sZDogJGx0ZTE7XG4gICRhbHAtaG9sZDogJGFscDE7XG4gICRjb2xvci1ob2xkOiAwO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJHN0ZXBzIHtcbiAgICAkaHVlLWhvbGQ6ICRodWUtaG9sZCArICRodWUtZGlmZjtcbiAgICAkc2F0LWhvbGQ6ICRzYXQtaG9sZCArICRzYXQtZGlmZjtcbiAgICAkbHRlLWhvbGQ6ICRsdGUtaG9sZCArICRsdGUtZGlmZjtcbiAgICAkYWxwLWhvbGQ6ICRhbHAtaG9sZCArICRhbHAtZGlmZjtcblxuICAgICRjb2xvci1ob2xkOiBoc2xhKCRodWUtaG9sZCwgJHNhdC1ob2xkLCAkbHRlLWhvbGQsICRhbHAtaG9sZCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGNvbG9yLWhvbGQpO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFbmFibGUgbGlnYXR1cmVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnbGlnYXR1cmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnZW5hYmxlIGxpZ2F0dXJlcycpIHtcbiAgICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXM7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2E9MSwgZGxpZz0xXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1zLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtby1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIixcImRsaWdcIjtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFjZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZm9udC1mYWNlKCRuYW1lLCAkZmlsZXMsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGlubGluZS13b2ZmOiBudWxsKSB7XG4gICR3ZWlnaHQ6IGlmKCR3ZWlnaHQgIT0gbnVsbCwgJHdlaWdodCwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSB3ZWlnaHQnKSk7XG4gICRzdHlsZTogaWYoJHN0eWxlICE9IG51bGwsICRzdHlsZSwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBzdHlsZScpKTtcbiAgJGlubGluZS13b2ZmOiBpZigkaW5saW5lLXdvZmYgIT0gbnVsbCwgJGlubGluZS13b2ZmLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIGlubGluZSB3b2ZmJykpO1xuXG4gICRmb250LXN0YWNrOiAoKTtcbiAgJGZvbnQtc3JjOiAnJztcbiAgJGVvdDogZmFsc2U7XG4gICRmb250LWV4dGVuc2lvbnM6ICgnZW90JzogJ2VtYmVkZGVkLW9wZW50eXBlJywgJ3dvZmYyJzogJ3dvZmYyJywgJ3dvZmYnOiAnd29mZicsICd0dGYnOiAndHJ1ZXR5cGUnLCAnc3ZnJzogJ3N2ZycpO1xuXG4gIEBlYWNoICRleHQsICRmb3JtYXQgaW4gJGZvbnQtZXh0ZW5zaW9ucyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRmaWxlcywgJGV4dCkge1xuICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhpbmxpbmUtZm9udC1maWxlcykgYW5kICRpbmxpbmUtd29mZiA9PSB0cnVlIGFuZCAoJGV4dCA9PSAnd29mZicgb3IgJGV4dCA9PSAnd29mZjInKSB7XG4gICAgICAgICRmb250LXNyYzogaW5saW5lLWZvbnQtZmlsZXMobWFwLWdldCgkZmlsZXMsICRleHQpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIGZ1bmN0aW9uLWV4aXN0cyhmb250LXVybCkge1xuICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkZm9udC1zdGFjazogYXBwZW5kKCRmb250LXN0YWNrLCAkZm9udC1zcmMsICdjb21tYScpO1xuICAgIH1cblxuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRuYW1lO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6ICRlb3Q7XG4gICAgfVxuICAgIEBpZiBsZW5ndGgoJGZvbnQtc3RhY2spID4gMCB7XG4gICAgICBzcmM6ICRmb250LXN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEljb24gRm9udFxuLy8gRnJvbSBodHRwOi8vaWNvbW9vbi5pb1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaWNvbi1mb250KCRmb250LXN0YWNrLCAkc3BlYWs6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHNwZWFrOiBpZigkc3BlYWsgIT0gbnVsbCwgJHNwZWFrLCB0b29sa2l0LWdldCgnaWNvbiBmb250IHNwZWFrJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjaztcbiAgQGlmICRzcGVhayA9PSBmYWxzZSB7XG4gICAgc3BlYWs6IG5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gaWNvbi1mb250LS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCAge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpY29uIGZvbnQgY29yZScpIHtcbiAgICAgIEBpbmNsdWRlIGljb24tZm9udC0tY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZCk7XG5cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWRlIEluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjb250ZW50LWZhZGUtaW4oJGR1cmF0aW9uOiBudWxsLCAkbG9hZGluZzogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZHVyYXRpb246IGlmKCRkdXJhdGlvbiAhPSBudWxsLCAkZHVyYXRpb24sIHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykpO1xuICAkbG9hZGluZzogaWYoJGxvYWRpbmcgIT0gbnVsbCwgJGxvYWRpbmcsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUgYW5kICRkdXJhdGlvbiA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpIGFuZCAkbG9hZGluZyA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjb250ZW50IGZhZGUgaW4nKSB7XG4gICAgICBAaW5jbHVkZSBjb250ZW50LWZhZGUtaW4oJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaWYgbm90IG1peGluLWV4aXN0cygnc2luZ2xlLXRyYW5zaXRpb24nKSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG9wYWNpdHkgJGR1cmF0aW9uKTtcbiAgICB9XG5cbiAgICAjeyRsb2FkaW5nfSAmIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZsdWlkIEVtYmVkcyBhbmQgd2hhdGV2ZXIgV0lUSCBOTyBKQVZBU0NJUFQhXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBwYXJlbnQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gY2hpbGQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICB0b3A6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG5cbiAgcGFkZGluZy0jeyRwb3NpdGlvbn06ICgxIC8gJHJhdGlvKSAqICR3aWR0aDtcbiAgd2lkdGg6ICR3aWR0aDtcbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRlbGVtZW50czogaWYoJGVsZW1lbnRzICE9IG51bGwsICRlbGVtZW50cywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZCk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xuXG4gIEBlYWNoICRlbGVtZW50IGluICRlbGVtZW50cyB7XG4gICAgI3skZWxlbWVudH0ge1xuICAgIFx0QGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXIoJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpbygkcmF0aW8sICR3aWR0aCwgJGVsZW1lbnRzLCAkZXh0ZW5kLCAkcG9zaXRpb24pO1xufVxuXG5AbWl4aW4gaXItcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG59IiwiLy8gc2ltcGxlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbnRleHQgb2YgYSBuZXN0ZWQgcGVyY2VudGFnZS5cbkBmdW5jdGlvbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG5cbiAgLy8gRmlyc3QgbGV2ZWwgZGVlcCBpcyBhbHdheXMgMTAwJVxuICAkcGVyY2VudGFnZTogMTAwJTtcblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBsZXZlbFxuICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgIC8vIEludmVydCB0aGUgcGVyY2VudGFnZSB0byBmaW5kIGNvbnRleHRcbiAgICAkcGVyY2VudGFnZTogcGVyY2VudGFnZSgkcGVyY2VudGFnZSAvICRjb250ZXh0KTtcbiAgfVxuICAvLyBSZXR1cm4gZmluYWwgcGVyY2VudGFnZVxuICBAcmV0dXJuICRwZXJjZW50YWdlO1xufVxuXG4vLyBtaXhpbiB0byBtYWtlIHRoaW5ncyBlYXNpZXJcbkBtaXhpbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nKSk7XG5cbiAgd2lkdGg6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cyk7XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJjZW50ZXJcIiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0uNTtcbiAgfVxuICBAaWYgJHBvc2l0aW9uID09IFwicmlnaHRcIiB7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtMSArIDEwMCU7XG4gIH1cbn0iLCIvLyBNYWdpYyBwYXJhbGxheCBtaXhpbnNcbkBtaXhpbiBwYXJhbGxheC1pbml0KCRwZXJzcGVjdGl2ZTogbnVsbCwgJGVsZW1lbnQ6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcblxuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJGVsZW1lbnQ6IGlmKCRlbGVtZW50ICE9IG51bGwsICRlbGVtZW50LCB0b29sa2l0LWdldCgncGFyYWxsYXggZWxlbWVudCcpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIEBpZiAkZWxlbWVudCA9PSAnYm9keScge1xuICAgIEBhdC1yb290IHtcbiAgICAgIGh0bWwsIGJvZHkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICBib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGVsZW1lbnQgPT0gdGhpcyB7XG4gICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGF0LXJvb3QgI3skZWxlbWVudH0ge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmU6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBvdmVyZmxvdzogYXV0bztcbiAgQGlmIG1peGluLWV4aXN0cyhwZXJzcGVjdGl2ZSkge1xuICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSAqIDFweCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgICBwZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICB9XG4gIC8vIEFsbG93cyBmb3Igc21vb3RoIHNjcm9sbGluZyBidXQgZGlzYWJsZXMgcGFyYWxsYXggZWZmZWN0cy5cbiAgQGlmICRwYXJhbGxheC1pb3MgPT0gZmFsc2Uge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAvLyBNYWtlIHN1cmUgM0QgcGVyc3BlY3RpdmUgaXMgcHJlc2VydmVkXG4gICYsICYgKiB7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0tc3R5bGUpIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZShwcmVzZXJ2ZS0zZCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheCgkZGlzdGFuY2U6IG51bGwsICRwZXJzcGVjdGl2ZTogbnVsbCkge1xuXG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGRpc3RhbmNlJykpO1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcblxuICAkdHJhbnNmb3JtOiB0cmFuc2xhdGVaKCRkaXN0YW5jZSAqICRwZXJzcGVjdGl2ZSAqIDFweCkgc2NhbGUoYWJzKCRkaXN0YW5jZSAtIDEpKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnNmb3JtKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gICAgdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICB9XG5cbiAgei1pbmRleDogJGRpc3RhbmNlICogMTAwO1xufVxuIiwiQG1peGluIHJ0bCgkcHJvcGVydHksICR2YWx1ZSkge1xuICAkX3Byb3BlcnR5OiAkcHJvcGVydHk7XG4gICN7JHByb3BlcnR5fTogJHZhbHVlO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA9PSA0IHtcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgI3skcHJvcGVydHl9OiBudGgoJHZhbHVlLCAxKSBudGgoJHZhbHVlLCA0KSBudGgoJHZhbHVlLCAzKSBudGgoJHZhbHVlLCAyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpIC0gMSkgKyAncmlnaHQnO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykgLSAxKSArICdsZWZ0JztcbiAgICB9XG5cbiAgICBAaWYgJHByb3BlcnR5ICE9ICRfcHJvcGVydHkge1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiQG1peGluIHRhcmdldCgkdGFyZ2V0KSB7XG4gIEBhdC1yb290IHtcbiAgICAvKiEgQHt0YXJnZXQ6ICN7JHRhcmdldH19ICovXG4gICAgJiB7XG4gICAgICBAY29udGVudDsgIFxuICAgIH1cbiAgICAvKiEge3RhcmdldDogI3skdGFyZ2V0fX1AICovICBcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRHJhdyB0cmlhbmdsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gdHJpYW5nbGUoJGNvbG9yOiBudWxsLCAkaGVpZ2h0OiBudWxsLCAkd2lkdGg6IG51bGwsICRhbmdsZTogbnVsbCkge1xuXG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGNvbG9yJykpO1xuICAkaGVpZ2h0OiBpZigkaGVpZ2h0ICE9IG51bGwsICRoZWlnaHQsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBoZWlnaHQnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIHdpZHRoJykpO1xuICAkYW5nbGU6IGlmKCRhbmdsZSAhPSBudWxsLCAkYW5nbGUsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBhbmdsZScpKTtcblxuICBAaWYgbnRoKCRhbmdsZSwgMSkgPT0gXCJ0b3BcIiBvciBudGgoJGFuZ2xlLCAxKSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IFwiI3skYW5nbGV9XCI7XG4gIH1cblxuICBAaWYgJGFuZ2xlID09IFwidG9wXCIge1xuICAgICRhbmdsZTogMDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiA3O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJyaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAxO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDQ7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiAzO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA2O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNTtcbiAgfVxuXG4gIEBpZiB1bml0KCRoZWlnaHQpID09IFwiXCIgb3IgdW5pdCgkaGVpZ2h0KSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skaGVpZ2h0fSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIGhlaWdodC5cIlxuICB9XG5cbiAgQGlmIHVuaXQoJHdpZHRoKSA9PSBcIlwiIG9yIHVuaXQoJHdpZHRoKSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skd2lkdGh9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3Igd2lkdGguXCJcbiAgfVxuXG4gIC8vIG9mZnNldCA0NWRlZyB0byBtYWtlIGVhY2ggc2lkZSBzdGFydCBhdCAwXG4gICRkZWc6ICRhbmdsZSArIDQ1O1xuICAvLyBpZiB1bml0cywgcmVtb3ZlIHVuaXRzXG4gIEBpZiB1bml0KCRkZWcpID09IGRlZyB7XG4gICAgJGRlZzogJGRlZyAvIDFkZWc7XG4gIH1cbiAgLy8gc2hpZnQgdG8gYmUgb24gYSBzY2FsZSBmcm9tIDAgdG8gOTAuXG4gIEB3aGlsZSAkZGVnID4gOTAge1xuICAgICRkZWc6ICRkZWcgLSA5MDtcbiAgfVxuICBAd2hpbGUgJGRlZyA8IDAge1xuICAgICRkZWc6ICRkZWcgKyA5MDtcbiAgfVxuICAvLyBHZXQgYSByYXRpbyBvZiA5MCB0byBtdWx0aXBseSBieS5cbiAgJGRlZzogJGRlZyAvIDkwO1xuXG4gIC8vIG1ha2Ugc3VyZSBtZXRyaWNzIGFyZSByZXNldFxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gIC8vIHJ1biB0aHJvdWdoIHNpZGVzXG4gIEBpZiAkYW5nbGUgPD0gNDUgb3IgJGFuZ2xlID4gMzE1IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKSAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gNDUgYW5kICRhbmdsZSA8PSAxMzUge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqICRkZWcpIDAgKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGg7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDEzNSBhbmQgJGFuZ2xlIDw9IDIyNSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAoJHdpZHRoICogJGRlZykgMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDIyNSBhbmQgJGFuZ2xlIDw9IDMxNSB7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aCAoJGhlaWdodCAqICRkZWcpIDA7XG4gIH1cbn0iLCIvLyBWZXJ0aWNhbGx5IGNlbnRlciBhbnl0aGluZywgbGl0ZXJhbGx5IGFueXRoaW5nLlxuLy8gaHR0cDovL3plcm9zaXh0aHJlZS5zZS92ZXJ0aWNhbC1hbGlnbi1hbnl0aGluZy13aXRoLWp1c3QtMy1saW5lcy1vZi1jc3MvXG5AbWl4aW4gdmVydGljYWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuXG4gIHRvcDogJG1pZHBvaW50O1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3ZlcnRpY2FsIGNlbnRlcicpIHtcbiAgICAgIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhvcml6b250YWwgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgQGlmICRtaWRwb2ludCAhPSAwJSB7XG4gICAgbGVmdDogJG1pZHBvaW50O1xuICB9XG5cbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBYnNvbHV0ZSBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFic29sdXRlLWNlbnRlcigkdmVydGljYWw6IG51bGwsICRob3Jpem9udGFsOiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHZlcnRpY2FsOiBpZigkdmVydGljYWwgIT0gbnVsbCwgJHZlcnRpY2FsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgdG9wOiAkdmVydGljYWw7XG4gIEBpZiAkaG9yaXpvbnRhbCAhPSAwJSB7XG4gICAgbGVmdDogJGhvcml6b250YWw7XG4gIH1cblxuICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENTUyBsZXZlbCA0IFZpZXdwb3J0XG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtZGV2aWNlLWFkYXB0LyN0aGUtYXR2aWV3cG9ydC1ydWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiB2aWV3cG9ydCB7XG4gIEAtd2Via2l0LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tcy12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQHZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4iLCJAbWl4aW4gdW5kZXJsaW5lKCRiYWNrZ3JvdW5kOiBudWxsLCAkY29sb3I6IG51bGwsICRjbGVhci1kZXNjZW5kZXJzOiBudWxsLCAkZGlzdGFuY2U6IG51bGwsICR3aWR0aDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkYmFja2dyb3VuZDogaWYoJGJhY2tncm91bmQgIT0gbnVsbCwgJGJhY2tncm91bmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgYmFja2dyb3VuZCcpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNvbG9yJykpO1xuICAkY2xlYXItZGVzY2VuZGVyczogaWYoJGNsZWFyLWRlc2NlbmRlcnMgIT0gbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnMsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycycpKTtcbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGRpc3RhbmNlJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgd2lkdGgnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgJFBYOiAuMDYyNWVtO1xuXG4gIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKCRleHRlbmQpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHMoYmFja2dyb3VuZC1pbWFnZSkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhsaW5lYXItZ3JhZGllbnQpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKFxuICAgICAgbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKVxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSk7XG4gIH1cbiAgYmFja2dyb3VuZC1zaXplOiAoMiAqICRQWCkgKCgxICsgJHdpZHRoKSAqICRQWCk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgKCgkd2lkdGgpICogJFBYKSArICRkaXN0YW5jZTtcblxuICBAaWYgJGNsZWFyLWRlc2NlbmRlcnMge1xuICAgIHRleHQtc2hhZG93OiAoMSAqICRQWCkgKDEgKiAkUFgpIDAgJGJhY2tncm91bmQsICgtMSAqICRQWCkgMCAwICRiYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd1bmRlcmxpbmUnKSB7XG4gICAgICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBUlQhXG4vLyBJbnNwaXJlZCBieSBodHRwOi8vZWxydW1vcmRlbGFsdXouZ2l0aHViLmlvL1BpeGVsYXRvci9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFydCgkYXJ0LCAkcHgtc2l6ZTogbnVsbCwgJGNvbG9yOiBudWxsLCAkcmFkaXVzOiBudWxsKSB7XG4gICRweC1zaXplOiBpZigkcHgtc2l6ZSAhPSBudWxsLCAkcHgtc2l6ZSwgdG9vbGtpdC1nZXQoJ2FydCBwaXhlbCBzaXplJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCdhcnQgY29sb3InKSk7XG4gICRyYWRpdXM6IGlmKCRyYWRpdXMgIT0gbnVsbCwgJHJhZGl1cywgdG9vbGtpdC1nZXQoJ2FydCBib3JkZXIgcmFkaXVzJykpO1xuXG4gICRidWlsZDogKCk7XG4gICR5OiAkcHgtc2l6ZTtcbiAgJHg6IDA7XG5cbiAgaGVpZ2h0OiAkcHgtc2l6ZTtcbiAgd2lkdGg6ICRweC1zaXplO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyX2xlbmd0aCgkYXJ0KSB7XG4gICAgJGNoYXI6IHN0cl9zbGljZSgkYXJ0LCAkaSwgJGkpO1xuICAgICR4OiAkeCArICRweC1zaXplO1xuXG4gICAgQGlmICRjaGFyID09ICduJyB7XG4gICAgICAkeTogJHkgKyAkcHgtc2l6ZTtcbiAgICAgICR4OiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY2hhciAhPSAnICcge1xuICAgICAgJGJvcmRlcjogJHggJHkgMCAkY29sb3I7XG4gICAgICAkYnVpbGQ6IGFwcGVuZCgkYnVpbGQsICRib3JkZXIsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBib3gtc2hhZG93OiAkYnVpbGQ7XG59IiwiQG1peGluIHNldC1tdWx0aXBsZSgkdmFsdWUsICRwcm9wZXJ0aWVzLi4uKSB7XG4gICRwcm9wZXJ0eS1sZW5ndGg6IGxlbmd0aCgkcHJvcGVydGllcyk7XG4gICRlcnJvci1tc2c6IFwiVGhlIGBzZXQtbXVsdGlwbGVgIG1peGluIHJlcXVpcmVzIHlvdSB0byBwYXNzIGluIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzIHRoZSBzZWNvbmQgYXJndW1lbnRcIjtcblxuICBAaWYgJHByb3BlcnR5LWxlbmd0aCA8IDEge1xuICAgIEBpZiBmZWF0dXJlLWV4aXN0cyhhdC1lcnJvcikge1xuICAgICAgQGVycm9yICRlcnJvci1tc2c7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICRlcnJvci1tc2c7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCBpbiBpcyBhIHdoaXRlLXNwYWNlZCBzZXBhcmF0ZWQgbGlzdC5cbiAgJHByb3BlcnRpZXM6IGlmKCRwcm9wZXJ0eS1sZW5ndGggPT0gMSwgbnRoKCRwcm9wZXJ0aWVzLCAxKSwgJHByb3BlcnRpZXMpO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSBpbiAkcHJvcGVydGllcyB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWVcbiAgfVxufVxuIiwiLy8gIE1vZHVsZSBTY2FsZSBhbmQgYmFzZSBmb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJGJhc2UtZm9udC1zaXplOiAgIDE0cHg7XG4kaWRlYWwtZm9udC1zaXplOiAgMjJweDtcbi8vICRiYXNlLWxpbmUtaGVpZ2h0OiBtcygxLCAkYmFzZS1mb250LXNpemUpO1xuXG4kcmh5dGhtLXVuaXQ6IFwicmVtXCI7XG4kcmh5dGhtLWdhcDogOHB4O1xuJHJlbS13aXRoLXB4LWZhbGxiYWNrOiBmYWxzZTtcblxuJHNjdXQtcmVtLWJhc2U6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZS1mb250LXNpemUpO1xuXG5cbi8vIHt7IENvbXBvbmVudCBzaXplIH19XG4kZ2xvYmFsLXJhZGl1czogM3B4O1xuIiwiLy8gIEdyaWQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG5cbiRsYXlvdXQtYmFzZTogKFxuICBndXR0ZXJzOiAxLzUsXG4gIGNvbHVtbi13aWR0aDogODBweCxcbiAgLy8gZ3V0dGVyLXBvc2l0aW9uOiBpbnNpZGUtc3RhdGljLFxuICBkZWJ1ZzogKFxuICAgIC8vIGltYWdlOiBzaG93LFxuICApLFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IHRydWUsXG4gICAgcmVtOiBmYWxzZSxcbiAgKSxcbik7XG4kc3VzeTogbGF5b3V0KDUgJGxheW91dC1iYXNlKTtcblxuLy8ge3sgRWxlbWVudCB0d2ljayBwb2ludHMgfX1cblxuLy8ge3sgRGV2aWNlIGxheW91dHMgfX1cbiRzdXN5LW1lZGlhOiAoXG4gICdtb2JpbGUnOiAnKG1heC13aWR0aDogNDE0cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6ICcobWF4LXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiAnKG1heC13aWR0aDogMTAyNHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3RhYmxldCc6ICcobWluLXdpZHRoOiA3NjhweCknLFxuICAndGFibGV0LXBvcnRyYWl0LW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ2Rlc2t0b3AnOiAnKG1pbi13aWR0aDogMTIwMHB4KScsXG4gICdjYXRlZ29yeS1tZW51JzogJyhtaW4td2lkdGg6IDEwMjRweCknXG4pO1xuJHRhYmxldDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgdGFibGV0KSxcbiAgbGF5b3V0OiA5IC41XG4pO1xuJHRhYmxldC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCR0YWJsZXQsIGxheW91dCkpO1xuJGRlc2t0b3A6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIGRlc2t0b3ApLFxuICBsYXlvdXQ6IDEyIDEuNSBzcGxpdFxuKTtcbiRkZXNrdG9wLWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJGRlc2t0b3AsIGxheW91dCkpO1xuJGRlc2t0b3AtZ3JpZC1wYWRkaW5nOiBzY3V0LXJlbSgxNSk7XG5cbi8vICB7eyBMYXllcnMgLS0tLS0tIH19XG4kbGF5ZXJzOiAoXG4gIGJhc2UsXG4gIGhlYWRlci1tZW51LFxuICBkcmF3ZXIsXG4gIGRyYXdlci1zaGFkb3csXG4gIGRyYXdlci1uYXYsXG4pOyIsIi8vICBTZXR0aW5nc1xuLy8gID09PT09PT09XG5cbiRjb2xvci1saWdodC1zYXR1cmF0aW9uOiA5MyU7XG5cbi8vICBDb2xvcnNcbi8vICA9PT09PT1cblxuJGdyYXktYmFzZTogICAgICMwMDAgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrZXI6ICAgdGludCgkZ3JheS1iYXNlLCAxMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrOiAgICAgdGludCgkZ3JheS1iYXNlLCAyMCUpICAgIWRlZmF1bHQ7XG4kZ3JheTogICAgICAgICAgdGludCgkZ3JheS1iYXNlLCAzMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodDogICAgdGludCgkZ3JheS1iYXNlLCA0Ni41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodGVyOiAgdGludCgkZ3JheS1iYXNlLCA5My41JSkgIWRlZmF1bHQ7XG5cbi8vICBUZXh0c1xuLy8gIC0tLS0tXG5cbiR0ZXh0LWNvbG9yOiAkZ3JheS1kYXJrO1xuXG4vLyAgUGFsbGV0ZVxuLy8gIC0tLS0tLS0tLS0tXG5cbiRibHVlOiAjMmQ2ZWM2O1xuJGJsdWUtZGFyazogcmdiKDAsIDY5LCAxNjQpO1xuJGJsdWUtbGlnaHQ6ICNkOGU5ZmY7XG4keWVsbG93OiAjZmM5NjAwO1xuJHllbGxvdy1kYXJrOiAjYjg2ZTAwO1xuJHllbGxvdy1saW5rOiAjZmZkODAwO1xuJG9yYW5nZTogI2ZjNDcwMDtcbiRvcmFuZ2UtZGFyazogI2I4NmUwMDtcbiRyZWQ6IHJnYigyMDYsIDY4LCA2Mik7XG4kZ3JlZW46IHJnYigyOCwgMTQ5LCAyMik7XG4kcGluazogcmdiKDE5NywgMzEsIDEyNCk7XG5cbiRwcmltYXJ5OiBzaGFkZSgjNDI4YmNhLCA2LjUlKTtcbiRzdWNjZXNzOiAjNWNiODVjO1xuJGluZm86ICAgICM1YmMwZGM7XG4kd2FybmluZzogI2YwYWQ0ZTtcbiRkYW5nZXI6ICAjZDk1MzRmO1xuXG4kaW5wdXQtYm9yZGVyOiAjZTRlNGU0O1xuJGJvcmRlci1ncmF5OiAjOTE5MTkxO1xuJGJhY2tncm91bmQtZ3JheTogI2U5ZTllOTtcblxuLy8gIExpbmtzXG4vLyAgLS0tLS1cblxuJGxpbmstY29sb3I6ICAgICAgICAgICAjMDAwICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICBzaGFkZSgkbGluay1jb2xvciwgMTUlKSAhZGVmYXVsdDtcbiRsaW5rLWZvY3VzLWNvbG9yOiAgICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLWFjdGl2ZS1jb2xvcjogICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLXZpc2l0ZWQtY29sb3I6ICAgJGdyYXktZGFyayAhZGVmYXVsdDtcblxuLy8gIE5Qcm9ncmVzc1xuLy8gIC0tLS0tLS0tLVxuJG5wcm9ncmVzcy1jb2xvcjogICAgJHByaW1hcnk7XG4iLCIvLyAgRm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiAgIHJpZ2h0O1xuXG4vLyDlg4Xph53lsI3oi7Hmlodcbi8vIEBmb250LWZhY2Uge1xuLy8gICBmb250LWZhbWlseTogRW5nbGlzaDtcbi8vICAgdW5pY29kZS1yYW5nZTogVSswMC0wMjRGO1xuLy8gICBzcmM6IGxvY2FsKEhlbHZldGljYSk7XG4vLyB9XG5cbiRzYW5zOiAgICBIZWx2ZXRpY2FOZXVlLUxpZ2h0XG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUgTGlnaHQnXG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUnXG4gICAgICAgLCAgSGVsdmV0aWNhXG4gICAgICAgLCAnSGVpdGkgVEMnXG4gICAgICAgLCAnTGlIZWkgUHJvJ1xuICAgICAgICwgJ01pY3Jvc29mdCBKaGVuZ0hlaSdcbiAgICAgICAsICflvq7ou5/mraPpu5Hpq5QnXG4gICAgICAgLCAgQXJpYWxcbiAgICAgICAsICBzYW5zLXNlcmlmO1xuXG4kc2VyaWY6ICAnUFQgU2VyaWYnXG4gICAgICAgLCBHZW9yZ2lhXG4gICAgICAgLCBUaW1lc1xuICAgICAgICwgJ1RpbWVzIE5ldyBSb21hbidcbiAgICAgICAsICdTb25ndGkgVEMnXG4gICAgICAgLCAnSGlyYWdpbm8gTWluY2hvIFByb04nXG4gICAgICAgLCBzZXJpZjtcblxuJGJhc2UtZm9udC1mYW1pbHk6ICRzYW5zOyJdLCJtYXBwaW5ncyI6IkE4Q0FBOzs7OztFQUtFO0E5Q01zQixBOEN1QnhCLGdCOUN2QndDLEM4Q3VCcEI7RUFWbEIsZUFBZSxFQUFFLElBQUs7RUFDdEIsWUFBWSxFQUFFLENBQUU7RUFHZCxVQUFVLEVBQUUsQ0FBRTtFQUNkLGFBQWEsRUFBRSxDQUFFLEdBT3BCOztBOUN6QnVCLEFBQUEsZ0JBQWdCLENBQUM7RUFFdkMsVUFBVSxFQ1ZxQixJQUFXLEdEVzNDOztBQUNELEFBQUEsd0JBQXdCLENBQUM7RUFDdkIsTUFBTSxFQ2J5QixHQUFXLENEYTdCLElBQUk7RUFDakIsVUFBVSxFQUFFLE1BQU87RUFDbkIsU0FBUyxFQUFFLElBQUssR0FDakI7O0FBQ0QsQUFBQSx3QkFBd0IsQ0FBQztFQUN2QixPQUFPLEVBQUUsS0FBTTtFQUNmLEtBQUssRUFBRSxJQUFLLEdBQ2I7O0FBQ0QsQUFBQSxzQkFBc0IsQ0FBQztFQUFFLEtBQUssRUFBRSxJQUFLLEdBQUkiLCJuYW1lcyI6W119 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.military-gallery {
  display: none; }

@media (min-width: 768px) {
  .military-gallery {
    display: block; } }
.military-gallery__cell {
  display: inline-block;
  padding: 8px;
  margin-bottom: 8px;
  background-color: #e9e9e9;
  width: calc(33.33% - 5px); }

@media (min-width: 1200px) {
  .military-gallery__cell {
    width: calc(25% - 6px); } }
.military-gallery__heading {
  margin: 8px auto 0;
  text-align: center;
  font-weight: 700;
  font-size: 16px;
  line-height: 1.5; }

.military-gallery__image {
  width: 100%; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX21pbGl0YXJ5LWdhbGxlcnkuc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX21pbGl0YXJ5LWdhbGxlcnkuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy5taWxpdGFyeS1nYWxsZXJ5IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7IGRpc3BsYXk6IGJsb2NrOyB9XG59XG4ubWlsaXRhcnktZ2FsbGVyeV9fY2VsbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogcigxKTtcbiAgbWFyZ2luLWJvdHRvbTogcigxKTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtZ3JheTtcbiAgd2lkdGg6IGNhbGMoMzMuMzMlIC0gNXB4KTtcbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkgeyB3aWR0aDogY2FsYygyNSUgLSA2cHgpOyB9XG59XG4ubWlsaXRhcnktZ2FsbGVyeV9faGVhZGluZyB7XG4gIG1hcmdpbjogcigxKSBhdXRvIDA7XG4gIHRleHQ6IGNlbnRlciBib2xkIDE2cHggMS41O1xufVxuLm1pbGl0YXJ5LWdhbGxlcnlfX2ltYWdlIHsgd2lkdGg6IDEwMCU7IH0iLCIvLyB7e1Nhc3MgbWl4aW5zIC0tLS0tLS0tfX1cbkBmdW5jdGlvbiBuKCkgeyBAcmV0dXJuIHVucXVvdGUoXCIqXCIpOyB9XG5cbkBmdW5jdGlvbiByKCR0aW1lczogMSkgeyBAcmV0dXJuICRyaHl0aG0tZ2FwICogJHRpbWVzOyB9XG5cbkBtaXhpbiBzdXN5KCRtYXApIHtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJG1hcCwgcXVlcnkpLCBtYXAtZ2V0KCRtYXAsIGxheW91dCkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gcmV2ZXJzZS1oaWRlLXZpc3VhbGx5KCkge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG59XG5cbkBtaXhpbiBzaGFyZS1icmVha3BvaW50cygkbWFwLCAkY3NzcHJvcDogY29udGVudCkge1xuICAkZGVzY3JpcHRpb246ICcnO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRtYXAge1xuICAgIEBpZiAkZGVzY3JpcHRpb24gIT0gICcnIHtcbiAgICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJyB8ICc7XG4gICAgfVxuICAgIFxuICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJHByb3BlcnR5ICsnOiAnKyBpbnNwZWN0KCR2YWx1ZSk7XG4gIH1cblxuICBkaXNwbGF5OiBub25lO1xuICAjeyRjc3Nwcm9wfTogICRkZXNjcmlwdGlvbjtcbn1cblxuQG1peGluIHRvZ2dsZS1mYWRlKCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICB9XG59XG5cbkBtaXhpbiB0b2dnbGUtc2hvdygpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAwO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgfSAgXG59XG5cbkBtaXhpbiBzaG93KCkge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgaGVpZ2h0OiBhdXRvOyAgXG59XG5cbkBtaXhpbiBpbnB1dC1wbGFjZWhvbGRlcigpIHtcbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgXG4gICY6Oi1tb3otcGxhY2Vob2xkZXIsXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbn1cblxuQG1peGluIGRlYnVnKCRjb2xvcjogI2ZmZiByZ2JhKHRvbWF0bywgLjMpKSB7XG4gIGNvbG9yOiAkY29sb3Jcbn1cblxuQG1peGluIGxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpO1xuICA+IGxpICsgbGk6YmVmb3JlIHsgbWFyZ2luLWxlZnQ6ICRzcGFjZSArIDRweDsgfVxufVxuIiwiQG1peGluIEhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG5AbWl4aW4gU2VsZWN0IHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgcGFkZGluZzogMCByKDIpIDAgcigxKTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgLy8gaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICAvLyBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAvLyBiYWNrZ3JvdW5kOiB1cmwoXCJpbWFnZXMvYXJyb3ctZG93bi5zdmdcIilcbiAgLy8gICAgICAgICAgIDkyJSA1MCUgLyA4cHggMTBweFxuICAvLyAgICAgICAgICAgbm8tcmVwZWF0XG4gIC8vICAgICAgICAgICB0cmFuc3BhcmVudDtcbiAgLm5vLWNzcy1hcHBlYXJhbmNlICYge1xuICAgIEBpbmNsdWRlIHNjdXQtcGFkZGluZyhuIDApO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIE5vcm1hbGl6ZSgpIHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lIHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwO1xufSIsIi8vIFN1c3lcbi8vID09PT1cblxuQGltcG9ydCAnc3VzeS9sYW5ndWFnZS9zdXN5JztcbiIsIi8vIFN1c3kgTmV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuJHN1c3ktdmVyc2lvbjogMi4xO1xuXG5AaW1wb3J0IFwiLi4vc3VcIjtcbkBpbXBvcnQgXCIuLi9vdXRwdXQvZmxvYXRcIjtcblxuQGltcG9ydCBcInN1c3kvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdXN5L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdXN5L2dyaWRzXCI7XG5AaW1wb3J0IFwic3VzeS9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VzeS9jb250ZXh0XCI7XG5AaW1wb3J0IFwic3VzeS9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VzeS9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzdXN5L3NwYW5cIjtcbkBpbXBvcnQgXCJzdXN5L2d1dHRlcnNcIjtcbkBpbXBvcnQgXCJzdXN5L2lzb2xhdGVcIjtcbkBpbXBvcnQgXCJzdXN5L2dhbGxlcnlcIjtcbkBpbXBvcnQgXCJzdXN5L3Jvd3NcIjtcbkBpbXBvcnQgXCJzdXN5L21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzdXN5L3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2JsZWVkXCI7XG5AaW1wb3J0IFwic3VzeS9icmVha3BvaW50LXBsdWdpblwiO1xuIiwiLy8gU3Vcbi8vID09XG5cbkBpbXBvcnQgXCJzdS91dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJzdS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdS9ncmlkXCI7XG4iLCIvLyBNYXAgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gVHJ1bmNhdGUgTGlzdFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSBsaXN0LCB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBsZW5ndGhcbkBmdW5jdGlvbiBfc3VzeS10cnVuY2F0ZS1saXN0KFxuICAkbGlzdCxcbiAgJGxlbmd0aFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGlzdCkge1xuICAgICRfcmV0dXJuOiBpZigkaSA8PSAkbGVuZ3RoLCBhcHBlbmQoJF9yZXR1cm4sIG50aCgkbGlzdCwgJGkpKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIEdldFxuLy8gLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtZ2V0KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiAkbWFwO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiB0eXBlLW9mKCRfcmV0dXJuKSA9PSBtYXAge1xuICAgICAgJF9yZXR1cm46IG1hcC1nZXQoJF9yZXR1cm4sICRrZXkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBTZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFNldCBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLXNldChcbiAgJG1hcCxcbiAgJGtleXMtdmFsdWUuLi5cbikge1xuICAkX3ZhbHVlOiBudGgoJGtleXMtdmFsdWUsIC0xKTtcbiAgJF9rZXlzOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRrZXlzLXZhbHVlLCBsZW5ndGgoJGtleXMtdmFsdWUpIC0gMSk7XG4gICRfbGVuZ3RoOiBsZW5ndGgoJF9rZXlzKTtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJF9sZW5ndGgge1xuICAgICRfbjogMCAtICRpO1xuICAgICRfbGV2ZWw6IF9zdXN5LXRydW5jYXRlLWxpc3QoJF9rZXlzLCAkX2xlbmd0aCArICRfbik7XG4gICAgJF9sZXZlbDogX3N1c3ktZGVlcC1nZXQoJG1hcCwgJF9sZXZlbC4uLik7XG4gICAgJF9tZXJnZTogbnRoKCRfa2V5cywgJF9uKTtcbiAgICAkX21lcmdlOiAoJF9tZXJnZTogJF92YWx1ZSk7XG4gICAgJF9yZXR1cm46IGlmKCRfbGV2ZWwsIG1hcC1tZXJnZSgkX2xldmVsLCAkX21lcmdlKSwgJF9tZXJnZSk7XG4gICAgJF92YWx1ZTogJF9yZXR1cm47XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgTWVyZ2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiAyIG9iamVjdHMgb2YgYW55IGRlcHRoLCBtZXJnZWRcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLW1lcmdlKFxuICAkbWFwMSxcbiAgJG1hcDJcbikge1xuXG4gIEBpZiB0eXBlLW9mKCRtYXAxKSAhPSBtYXAgb3IgdHlwZS1vZigkbWFwMikgIT0gbWFwIHtcbiAgICAkbWFwMTogJG1hcDI7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwMiB7XG4gICAgICAkX25ldzogKCRrZXk6IF9zdXN5X2RlZXAtbWVyZ2UobWFwLWdldCgkbWFwMSwgJGtleSksICR2YWx1ZSkpO1xuICAgICAgJG1hcDE6IG1hcC1tZXJnZSgkbWFwMSwgJF9uZXcpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG1hcDE7XG59XG5cblxuLy8gRGVlcCBIYXMtS2V5XG4vLyAtLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIHRydWUgaWYgYSBkZWVwIGtleSBleGlzdHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWhhcy1rZXkoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46IG51bGw7XG4gICRfc3RvcDogZmFsc2U7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIG5vdCgkX3N0b3ApIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KTtcbiAgICB9XG5cbiAgICBAaWYgJF9yZXR1cm4ge1xuICAgICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfc3RvcDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU2V0dGluZ3Ncbi8vID09PT09PT09XG5cbi8vIFZlcnNpb25cbi8vIC0tLS0tLS1cbiRzdS12ZXJzaW9uOiAxLjE7XG5cblxuLy8gRGVmYXVsdCBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVGhlIGJhc2ljIHNldHRpbmdzXG4kc3VzeS1kZWZhdWx0czogKFxuICBjb2x1bW5zOiA0LFxuICBndXR0ZXJzOiAuMjUsXG4pO1xuXG5cbi8vIFVzZXIgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gRGVmaW5lIHRoZSAkc3VzeSB2YXJpYWJsZSB3aXRoIGEgbWFwIG9mIHlvdXIgb3duIHNldHRpbmdzLlxuLy8gLSBTZXQgRUlUSEVSICRjb2x1bW4td2lkdGggT1IgJGNvbnRhaW5lclxuLy8gLSBVc2UgJGNvbHVtbi13aWR0aCBmb3Igc3RhdGljIGxheW91dHNcbiRzdXN5OiAoKSAhZGVmYXVsdDtcblxuXG4vLyBTdXN5IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBBZGQgZGVmYXVsdHMgdG8gU3VzeVxuQG1peGluIHN1c3ktZGVmYXVsdHMoXG4gICRkZWZhdWx0c1xuKSB7XG4gICRzdXN5LWRlZmF1bHRzOiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRkZWZhdWx0cykgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IFNldFxuLy8gLS0tLS0tLS1cbi8vIENoYW5nZSBvbmUgc2V0dGluZ1xuLy8gLSAka2V5ICAgOiBzZXR0aW5nIG5hbWVcbi8vIC0gJHZhbHVlIDogc2V0dGluZyB2YWx1ZVxuQG1peGluIHN1c3ktc2V0KFxuICAka2V5LXZhbHVlLi4uXG4pIHtcbiAgJHN1c3k6IF9zdXN5LWRlZXAtc2V0KCRzdXN5LCAka2V5LXZhbHVlLi4uKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgR2V0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJuIG9uZSBzZXR0aW5nIGZyb20gYSBncmlkXG4vLyAtICRrZXkgICAgIDogPGtleXdvcmQ+XG4vLyAtICRsYXlvdXQgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIHN1c3ktZ2V0KFxuICAka2V5LFxuICAkbGF5b3V0OiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRzdXN5KVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfb3B0aW9uczogJGxheW91dCAkc3VzeSAkc3VzeS1kZWZhdWx0cztcbiAgJF9icmVhazogZmFsc2U7XG4gICRfcmV0dXJuOiBudWxsO1xuXG4gIEBlYWNoICRvcHQgaW4gJF9vcHRpb25zIHtcbiAgICBAaWYgdHlwZS1vZigkb3B0KSA9PSBtYXAgYW5kIG5vdCgkX2JyZWFrKSB7XG4gICAgICAkX2tleXNldDogX3N1c3ktZGVlcC1oYXMta2V5KCRvcHQsICRrZXkuLi4pO1xuICAgICAgQGlmICRfa2V5c2V0IHtcbiAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtZ2V0KCRvcHQsICRrZXkuLi4pO1xuICAgICAgICAkX2JyZWFrOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBNYXRoIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PVxuXG5cbi8vIFZhbGlkIENvbHVtbnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBjb2x1bW4gc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW5zKFxuICAkY29sdW1ucyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkY29sdW1ucyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGNvbHVtbnMpIHtcbiAgICAkcmV0dXJuOiAkY29sdW1ucztcbiAgfSBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAkZmFpbDogbnVsbDtcbiAgICBAZWFjaCAkY29sIGluICRjb2x1bW5zIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRjb2wpID09IG51bWJlciB7XG4gICAgICAgICRmYWlsOiAkZmFpbCBvciBpZih1bml0bGVzcygkY29sKSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGZhaWw6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgICRyZXR1cm46IGlmKCRmYWlsLCAkcmV0dXJuLCAkY29sdW1ucyk7XG4gIH1cblxuICBAaWYgJHJldHVybiAhPSAkY29sdW1ucyBhbmQgbm90KCRzaWxlbnQpIHtcbiAgICAkcmV0dXJuOiBudWxsO1xuICAgICR3YXJuOiAnJGNvbHVtbnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlciBvciBsaXN0IG9mIHVuaXRsZXNzIG51bWJlcnMuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRjb2x1bW5zfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cblxuLy8gVmFsaWQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGd1dHRlciBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWd1dHRlcnMoXG4gICRndXR0ZXJzLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRndXR0ZXJzKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkZ3V0dGVycykge1xuICAgICRyZXR1cm46ICRndXR0ZXJzO1xuICB9IEBlbHNlIGlmIG5vdCgkc2lsZW50KSB7XG4gICAgJHdhcm46ICckZ3V0dGVycyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skZ3V0dGVyc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQ29sdW1uIG1hdGhcbi8vID09PT09PT09PT09XG5cblxuLy8gSXMgU3ltbWV0cmljYWxcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgYSBncmlkIGlzIHN5bW1ldHJpY2FsLlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIGlzLXN5bW1ldHJpY2FsKFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaWYodHlwZS1vZigkY29sdW1ucykgPT0gbnVtYmVyLCAkY29sdW1ucywgbnVsbCk7XG59XG5cblxuLy8gU3VzeSBDb3VudFxuLy8gLS0tLS0tLS0tLVxuLy8gRmluZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gYSBnaXZlbiBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LWNvdW50KFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpIG9yIGxlbmd0aCgkY29sdW1ucyk7XG59XG5cblxuLy8gU3VzeSBTdW1cbi8vIC0tLS0tLS0tXG4vLyBGaW5kIHRoZSB0b3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeS1zdW0oXG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcblxuICAkc3ByZWFkOiBpZigkc3ByZWFkID09IHdpZGUsIDAsIGlmKCRzcHJlYWQgPT0gd2lkZXIsIDEsIC0xKSk7XG4gICRndXR0ZXItc3VtOiAoc3VzeS1jb3VudCgkY29sdW1ucykgKyAkc3ByZWFkKSAqICRndXR0ZXJzO1xuICAkY29sdW1uLXN1bTogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gIEBpZiBub3QoJGNvbHVtbi1zdW0pIHtcbiAgICBAZWFjaCAkY29sdW1uIGluICRjb2x1bW5zIHtcbiAgICAgICRjb2x1bW4tc3VtOiAoJGNvbHVtbi1zdW0gb3IgMCkgKyAkY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi1zdW0gKyAkZ3V0dGVyLXN1bTtcbn1cblxuXG4vLyBTdXN5IFNsaWNlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgb2YgY29sdW1ucyBhdCBhIGdpdmVuIGxvY2F0aW9uLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktc2xpY2UoXG4gICRzcGFuLFxuICAkbG9jYXRpb24sXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJHN1Yi1jb2x1bW5zOiAkc3BhbjtcblxuICBAaWYgbm90KGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSkge1xuICAgICRsb2NhdGlvbjogJGxvY2F0aW9uIG9yIDE7XG4gICAgJHN1Yi1jb2x1bW5zOiAoKTtcbiAgICBAZm9yICRpIGZyb20gJGxvY2F0aW9uIHRvICgkbG9jYXRpb24gKyAkc3Bhbikge1xuICAgICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRpKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3ViLWNvbHVtbnM7XG59XG5cblxuLy8gU3VzeVxuLy8gLS0tLVxuLy8gRmluZCB0aGUgc3VtIG9mIGEgY29sdW1uLXNwYW4uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbiAgICAgOiBmYWxzZSxcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgICAgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICAgICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAkc3Bhbjogc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG5cbiAgQHJldHVybiBzdXN5LXN1bSgkc3BhbiwgJGd1dHRlcnMsICRzcHJlYWQpO1xufVxuIiwiLy8gRmxvYXQgQVBJXG4vLyA9PT09PT09PT1cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5AaW1wb3J0IFwiZmxvYXQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiZmxvYXQvc3BhblwiO1xuQGltcG9ydCBcImZsb2F0L2VuZFwiO1xuQGltcG9ydCBcImZsb2F0L2lzb2xhdGVcIjtcbiIsIi8vIFNoYXJlZCBBUElcbi8vID09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnRcIjtcblxuQGltcG9ydCBcInNoYXJlZC9pbnNwZWN0XCI7XG5AaW1wb3J0IFwic2hhcmVkL291dHB1dFwiO1xuQGltcG9ydCBcInNoYXJlZC9kaXJlY3Rpb25cIjtcbkBpbXBvcnQgXCJzaGFyZWQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInNoYXJlZC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzaGFyZWQvbWFyZ2luc1wiO1xuQGltcG9ydCBcInNoYXJlZC9wYWRkaW5nXCI7XG5cblxuXG4iLCIvLyBTdXN5IEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnQvc3VwcG9ydFwiO1xuQGltcG9ydCBcInN1cHBvcnQvcHJlZml4XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9yZW1cIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2NsZWFyZml4XCI7XG4iLCIvLyBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IFN1cHBvcnQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogZmFsc2UsXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kLW9wdGlvbnM6IGZhbHNlLFxuICAgIGJyZWFrcG9pbnQ6IHRydWUsXG4gICAgYm94LXNpemluZzogdHJ1ZSxcbiAgICByZW06IHRydWUsXG4gICksXG4pKTtcblxuXG4vLyBTdXN5IFN1cHBvcnQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlbmQgcHJvcGVydHktdmFsdWUgcGFpcnMgdG8gdGhlIHByb3BlciBzdXBwb3J0IG1vZHVsZXMuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1zdXBwb3J0KFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gIC8vIEJhY2tncm91bmQgU3VwcG9ydFxuICBAaWYgJHByb3AgPT0gYmFja2dyb3VuZC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWltYWdlKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtc2l6ZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLXNpemUoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1vcmlnaW4ge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1jbGlwIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtY2xpcCgkdmFsKTtcbiAgfVxuXG4gIC8vIEJveC1TaXppbmcgU3VwcG9ydFxuICBAZWxzZSBpZiAkcHJvcCA9PSBib3gtc2l6aW5nIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJveC1zaXppbmcoJHZhbCk7XG4gIH1cblxuICAvLyBSZW0gU3VwcG9ydFxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJHByb3AsICR2YWwpO1xuICB9XG59XG5cblxuLy8gU3VzeSBTdXBwb3J0IFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3Igc3VwcG9ydCBvZiBhIGZlYXR1cmUuXG4vLyAtICRmZWF0dXJlICAgICAgIDogPHN0cmluZz5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyBcInJlbVwiIG9yIFwiYm94LXNpemluZ1wiXG4vLyAtICRyZXF1aXJlbWVudHMgIDogPG1hcD5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyAodmFyaWFibGU6IHJlbS13aXRoLXB4LWZhbGxiYWNrLCBtaXhpbjogcmVtKVxuLy8gLSAkd2FybiAgICAgICAgICA6IDxib29sPlxuQGZ1bmN0aW9uIHN1c3ktc3VwcG9ydChcbiAgJGZlYXR1cmUsXG4gICRyZXF1aXJlbWVudHM6ICgpLFxuICAkd2FybjogdHJ1ZVxuKSB7XG4gICRfc3VwcG9ydDogc3VzeS1nZXQodXNlLWN1c3RvbSAkZmVhdHVyZSk7XG5cbiAgQGlmICRfc3VwcG9ydCB7XG4gICAgJF9mYWlsOiBmYWxzZTtcblxuICAgIEBlYWNoICRfdHlwZSwgJF9yZXEgaW4gJHJlcXVpcmVtZW50cyB7XG4gICAgICBAZWFjaCAkX2kgaW4gJF9yZXEge1xuICAgICAgICAkX3Bhc3M6IGNhbGwodW5xdW90ZShcIiN7JF90eXBlfS1leGlzdHNcIiksICRfaSk7XG5cbiAgICAgICAgQGlmIG5vdCgkX3Bhc3MpIHtcbiAgICAgICAgICAkX2ZhaWw6IHRydWU7XG4gICAgICAgICAgQGlmICR3YXJuIHtcbiAgICAgICAgICAgIEB3YXJuIFwiWW91IHJlcXVlc3RlZCBjdXN0b20gc3VwcG9ydCBvZiAjeyRmZWF0dXJlfSwgYnV0IHRoZSAjeyRfaX0gI3skX3R5cGV9IGlzIG5vdCBhdmFpbGFibGUuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zdXBwb3J0OiBpZigkX2ZhaWwsIGZhbHNlLCAkX3N1cHBvcnQpO1xuICB9XG5cbiAgQHJldHVybiAkX3N1cHBvcnQ7XG59XG4iLCIvLyBTdXN5IFByZWZpeFxuLy8gPT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBzaW1wbGUgcHJlZml4ZWQgcHJvcGVydGllcy5cbi8vIC0gJHByb3AgICAgICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICAgICAgOiA8Y3NzIHZhbHVlPlxuLy8gLSBbJHByZWZpeF0gIDogPGJyb3dzZXIgcHJlZml4IGxpc3Q+XG5AbWl4aW4gc3VzeS1wcmVmaXgoXG4gICRwcm9wLFxuICAkdmFsLFxuICAkcHJlZml4OiBvZmZpY2lhbFxuKSB7XG4gIEBlYWNoICRmaXggaW4gJHByZWZpeCB7XG4gICAgJGZpeDogaWYoJGZpeCA9PSBvZmZpY2lhbCBvciBub3QoJGZpeCksICRwcm9wLCAnLSN7JGZpeH0tI3skcHJvcH0nKTtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkZml4LCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gQmFja2dyb3VuZCBQcm9wZXJ0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIEltYWdlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWltYWdlPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLWltYWdlLCAobWl4aW46IGJhY2tncm91bmQtaW1hZ2UpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS4uLik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgU2l6ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1zaXplPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1zaXplKFxuICAkc2l6ZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtc2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoJHNpemUpO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBPcmlnaW5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLW9yaWdpbj5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtb3JpZ2luKFxuICAkb3JpZ2luXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1vcmlnaW4pKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1vcmlnaW4oJG9yaWdpbik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkb3JpZ2luO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBDbGlwXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtY2xpcD5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtY2xpcChcbiAgJGNsaXBcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLWNsaXApKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1jbGlwKCRjbGlwKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcDtcbiAgfVxufVxuIiwiLy8gQm94IFNpemluZ1xuLy8gPT09PT09PT09PVxuXG4vLyBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJG1vZGVsOiA8Ym94LXNpemluZz5cbkBtaXhpbiBzdXN5LWJveC1zaXppbmcoXG4gICRtb2RlbDogY29udGVudC1ib3hcbikge1xuICBAaWYgJG1vZGVsIHtcbiAgICBAaWYgc3VzeS1zdXBwb3J0KGJveC1zaXppbmcsIChtaXhpbjogYm94LXNpemluZyksICR3YXJuOiBmYWxzZSkge1xuICAgICAgQGluY2x1ZGUgYm94LXNpemluZygkbW9kZWwpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByZWZpeDogKG1veiwgd2Via2l0LCBvZmZpY2lhbCk7XG4gICAgICBAaW5jbHVkZSBzdXN5LXByZWZpeChib3gtc2l6aW5nLCAkbW9kZWwsICRwcmVmaXgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRGVidWdnaW5nXG4vLyA9PT09PT09PT1cblxuLy8gU3VzeSBJbnNwZWN0XG4vLyAtLS0tLS0tLS0tLS1cbi8vIE91dHB1dCBhcmd1bWVudHMgcGFzc2VkIHRvIGEgaW5zcGVjdC5cbi8vIC0gJG1peGluICA6IDxzdXN5IG1peGluPlxuLy8gLSAkaW5zcGVjICAgOiA8bWl4aW4gYXJndW1lbnRzPlxuXG5AbWl4aW4gc3VzeS1pbnNwZWN0KFxuICAkbWl4aW4sXG4gICRpbnNwZWN0XG4pIHtcbiAgJHNob3c6IGZhbHNlO1xuXG4gIEBlYWNoICRpdGVtIGluICRpbnNwZWN0IHtcbiAgICBAaWYgaW5kZXgoJGl0ZW0sIGluc3BlY3QpIHtcbiAgICAgICRzaG93OiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2hvdyBvciBzdXN5LWdldChkZWJ1ZyBpbnNwZWN0KSB7XG4gICAgLXN1c3ktI3skbWl4aW59OiBpbnNwZWN0KCRpbnNwZWN0KTtcbiAgfVxufVxuIiwiLy8gT3V0cHV0XG4vLyA9PT09PT1cblxuLy8gT3V0cHV0XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBDU1Mgd2l0aCBwcm9wZXIgYnJvd3NlciBzdXBwb3J0LlxuLy8gLSAkc3R5bGVzICA6IDxtYXAgb2YgY3NzIHByb3BlcnR5LXZhbHVlIHBhaXJzPlxuQG1peGluIG91dHB1dChcbiAgJHN0eWxlc1xuKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsIGluICRzdHlsZXMge1xuICAgIEBpbmNsdWRlIHN1c3ktc3VwcG9ydCgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIERpcmVjdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEZsb3cgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgZmxvdzogbHRyLFxuKSk7XG5cbi8vIEdldCBEaXJlY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIG9yICd0bycgZGlyZWN0aW9uIG9mIGEgbHRyIG9yIHJ0bCBmbG93LlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuLy8gLSBbJGtleV0gICA6IGZyb20gfCB0b1xuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGtleTogZnJvbVxuKSB7XG4gICRyZXR1cm46IGlmKCRmbG93ID09IHJ0bCwgKGZyb206IHJpZ2h0LCB0bzogbGVmdCksIChmcm9tOiBsZWZ0LCB0bzogcmlnaHQpKTtcbiAgQHJldHVybiBtYXAtZ2V0KCRyZXR1cm4sICRrZXkpO1xufVxuXG4vLyBUb1xuLy8gLS1cbi8vIFJldHVybiB0aGUgJ3RvJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gdG8oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgdG8pO1xufVxuXG4vLyBGcm9tXG4vLyAtLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gZnJvbShcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCBmcm9tKTtcbn1cbiIsIi8vIEdyaWQgQmFja2dyb3VuZCBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cbi8vIC0gU3ViLXBpeGVsIHJvdW5kaW5nIGNhbiBsZWFkIHRvIHNldmVyYWwgcGl4ZWxzIHZhcmlhdGlvbiBiZXR3ZWVuIGJyb3dzZXJzLlxuXG4vLyBHcmlkIEJhY2tncm91bmQgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRpbWFnZTogYmFja2dyb3VuZC1pbWFnZVxuLy8gLSAkc2l6ZTogYmFja2dyb3VuZC1zaXplXG4vLyAtICRjbGlwOiBiYWNrZ3JvdW5kLWNsaXBcbi8vIC0gWyRmbG93XTogbHRyIHwgcnRsXG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkLW91dHB1dCAoXG4gICRpbWFnZSxcbiAgJHNpemU6IG51bGwsXG4gICRjbGlwOiBudWxsLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlLFxuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemUsXG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRjbGlwLFxuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogZnJvbSgkZmxvdykgdG9wLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFNoYXJlZCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICAgICAgICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGNvbnRhaW5lci1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICAkb3V0cHV0OiAoXG4gICAgI3skcHJvcGVydHl9OiAkd2lkdGggb3IgMTAwJSxcbiAgICBtYXJnaW4tbGVmdDogbnRoKCRqdXN0aWZ5LCAxKSxcbiAgICBtYXJnaW4tcmlnaHQ6IG50aCgkanVzdGlmeSwgMiksXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gTWFyZ2lucyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIE1hcmdpbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gbWFyZ2luLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3skZnJvbX06ICRiZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFBhZGRpbmcgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBQYWRkaW5nIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gcGFkZGluZy1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgQ29udGFpbmVyXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBmbG9hdC1jb250YWluZXIoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICBAaW5jbHVkZSBzdXN5LWNsZWFyZml4O1xuICBAaW5jbHVkZSBjb250YWluZXItb3V0cHV0KCR3aWR0aCwgJGp1c3RpZnksICRwcm9wZXJ0eSk7XG59XG4iLCIvLyBGbG9hdCBTcGFuIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgU3BhbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICR3aWR0aCAgICAgICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvYXRdICAgICAgICAgICA6IGZyb20gfCB0b1xuLy8gLSBbJG1hcmdpbi1iZWZvcmVdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJG1hcmdpbi1hZnRlcl0gICAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYmVmb3JlXSAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYWZ0ZXJdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICAgICAgICAgICAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1zcGFuLW91dHB1dChcbiAgJHdpZHRoLFxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb20sXG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbCxcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsLFxuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGwsXG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbCxcbiAgJGZsb3cgICAgICAgICAgICAgOiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0byAgICAgOiB0bygkZmxvdyk7XG4gICRmcm9tICAgOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGg6ICR3aWR0aCxcbiAgICBmbG9hdDogaWYoJGZsb2F0ID09IHRvLCAkdG8sIG51bGwpIG9yIGlmKCRmbG9hdCA9PSBmcm9tLCAkZnJvbSwgbnVsbCksXG4gICAgbWFyZ2luLSN7JGZyb219OiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJHBhZGRpbmctYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgRW5kcyBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRW5kIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgbGFzdC1mbG93OiB0byxcbikpO1xuXG4vLyBGbG9hdCBMYXN0XG4vLyAtLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtbGFzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAkbGFzdC1mbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBsYXN0LWZsb3cpLFxuICAkbWFyZ2luOiAwXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiBpZigkbGFzdC1mbG93ID09IHRvLCAkdG8sIG51bGwpLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4sXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG4vLyBGbG9hdCBGaXJzdFxuLy8gLS0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1maXJzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0je2Zyb20oJGZsb3cpfTogMCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBJc29sYXRpb24gQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIElzb2xhdGUgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkcHVzaCAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gaXNvbGF0ZS1vdXRwdXQoXG4gICRwdXNoLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogJGZyb20sXG4gICAgbWFyZ2luLSN7JGZyb219OiAkcHVzaCxcbiAgICBtYXJnaW4tI3skdG99OiAtMTAwJSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTdXN5IFNldHRpbmdzXG4vLyA9PT09PT09PT09PT09XG5cbi8vIFN1c3kgTGFuZ3VhZ2UgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogZmx1aWQsXG4gIG91dHB1dDogZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogY2VudGVyLFxuICBndXR0ZXItcG9zaXRpb246IGFmdGVyLFxuICBnbG9iYWwtYm94LXNpemluZzogY29udGVudC1ib3gsXG4gIGRlYnVnOiAoXG4gICAgaW1hZ2U6IGhpZGUsXG4gICAgY29sb3I6IHJnYmEoIzY2ZiwgLjI1KSxcbiAgICBvdXRwdXQ6IGJhY2tncm91bmQsXG4gICAgdG9nZ2xlOiB0b3AgcmlnaHQsXG4gICksXG4pKTtcblxuXG4vLyBWYWxpZCBLZXl3b3JkIFZhbHVlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURTogRE9OVCdUIFRPVUNIXG4kc3VzeS1rZXl3b3JkczogKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IHN0YXRpYyBmbHVpZCxcbiAgb3V0cHV0OiBpc29sYXRlIGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGxlZnQgY2VudGVyIHJpZ2h0LFxuICBmbG93OiBsdHIgcnRsLFxuICBndXR0ZXItcG9zaXRpb246IGJlZm9yZSBhZnRlciBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYyxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveCBjb250ZW50LWJveCxcbiAgc3BhbjogZnVsbCxcbiAgZWRnZTogZmlyc3QgYWxwaGEgbGFzdCBvbWVnYSBmdWxsLFxuICBzcHJlYWQ6IG5hcnJvdyB3aWRlIHdpZGVyLFxuICBndXR0ZXItb3ZlcnJpZGU6IG5vLWd1dHRlcnMgbm8tZ3V0dGVyLFxuICByb2xlOiBuZXN0LFxuICBjbGVhcjogYnJlYWsgbm9icmVhayxcbiAgZGVidWcgaW1hZ2U6IHNob3cgaGlkZSBzaG93LWNvbHVtbnMgc2hvdy1iYXNlbGluZSxcbiAgZGVidWcgb3V0cHV0OiBiYWNrZ3JvdW5kIG92ZXJsYXksXG4pO1xuXG5cbi8vIFBhcnNlIFN1c3kgS2V5d29yZHMgYW5kIE1hcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zZXR0aW5ncyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBzdHJpbmcge1xuICAgICAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHN1c3kta2V5d29yZHMge1xuICAgICAgICAgIEBpZiBpbmRleCgkdmFsdWUsICRpdGVtKSB7XG4gICAgICAgICAgICAkX2tleS12YWx1ZTogYXBwZW5kKCRrZXksICRpdGVtKTtcbiAgICAgICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLXNldCgkX3JldHVybiwgJF9rZXktdmFsdWUuLi4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgLy8gbWFwc1xuICAgICAgfSBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBtYXAge1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBDb2x1bW5zICYgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1sYXlvdXQoXG4gICRzaG9ydFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcbiAgJF9jb2x1bW5zOiAoKTtcbiAgJF9ndXR0ZXJzOiBudWxsO1xuXG4gIEBpZiBub3QodW5pdGxlc3MobnRoKG50aCgkc2hvcnQsIDEpLCAxKSkpIHtcbiAgICAkX2d1dHRlcnM6IG50aCgkc2hvcnQsIDEpO1xuICB9IEBlbHNlIHtcbiAgICAkX2NvbHVtbnM6IChjb2x1bW5zOiBudGgoJHNob3J0LCAxKSk7XG4gICAgJF9ndXR0ZXJzOiBpZihsZW5ndGgoJHNob3J0KSA+IDEsIG50aCgkc2hvcnQsIDIpLCAkX2d1dHRlcnMpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJF9ndXR0ZXJzKSA9PSBsaXN0IGFuZCBsZW5ndGgoJF9ndXR0ZXJzKSA+IDAge1xuICAgICRfZ3V0dGVyczogKFxuICAgICAgZ3V0dGVyczogbnRoKCRfZ3V0dGVycywgMikgLyBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICAgIGNvbHVtbi13aWR0aDogbnRoKCRfZ3V0dGVycywgMSksXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9ndXR0ZXJzOiBpZigkX2d1dHRlcnMsIChndXR0ZXJzOiAkX2d1dHRlcnMpLCAoKSk7XG4gIH1cblxuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2NvbHVtbnMpO1xuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2d1dHRlcnMpO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3JpZC9Db250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ncmlkKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46IHBhcnNlLXNldHRpbmdzKCRzaG9ydCk7XG4gICRfbGF5b3V0OiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIG51bWJlciBvciBsaXN0XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIG9yIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qge1xuICAgICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCBvciB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAgICRfbGF5b3V0OiBhcHBlbmQoJF9sYXlvdXQsICRpdGVtKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNvbnRhaW5lcjogJGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfbGF5b3V0OiBpZihsZW5ndGgoJF9sYXlvdXQpID4gMCwgcGFyc2UtbGF5b3V0KCRfbGF5b3V0KSwgJF9sYXlvdXQpO1xuICB9XG5cbiAgQHJldHVybiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfbGF5b3V0KTtcbn1cblxuXG4vLyBQYXJzZSBTcGFuXG4vLyAtLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc3BhbihcbiAgJHNob3J0LFxuICAka2V5OiBzcGFuXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICAkX2F0OiBpbmRleCgkc2hvcnQsIGF0KTtcblxuICAgIEBpZiAkX2F0IHtcbiAgICAgICRfbG9jaTogJF9hdCArIDE7XG4gICAgICAkX2xvY2F0aW9uOiBudGgoJHNob3J0LCAkX2xvY2kpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGxvY2F0aW9uOiAkX2xvY2F0aW9uKSk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2F0LCBudWxsKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfbG9jaSwgbnVsbCk7XG4gICAgfVxuXG4gICAgJF9pOiAxO1xuICAgICRfc3BhbjogKCk7XG5cbiAgICBAd2hpbGUgJF9pIDw9IGxlbmd0aCgkc2hvcnQpIHtcbiAgICAgICRfdGhpczogbnRoKCRzaG9ydCwgJF9pKTtcblxuICAgICAgQGlmIHR5cGUtb2YoJF90aGlzKSA9PSBudW1iZXIge1xuICAgICAgICAkX3NwYW46IGFwcGVuZCgkX3NwYW4sICRfdGhpcyk7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICB9IEBlbHNlIGlmICRfdGhpcyA9PSBvZiB7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICAgICRfaTogbGVuZ3RoKCRzaG9ydCkgKyAxO1xuICAgICAgfVxuXG4gICAgICAkX2k6ICRfaSArIDE7XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkX3NwYW4pID4gMCB7XG4gICAgICAkX3NwYW46IGlmKGxlbmd0aCgkX3NwYW4pID09IDEsIG50aCgkX3NwYW4sIDEpLCAkX3NwYW4pO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRrZXk6ICRfc3BhbikpO1xuICAgIH1cblxuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIHBhcnNlLWdyaWQoJHNob3J0KSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ndXR0ZXJzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9ndXR0ZXJzOiBwYXJzZS1zcGFuKCRzaG9ydCwgZ3V0dGVyLW92ZXJyaWRlKTtcbiAgJF9zcGFuOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRfZ3V0dGVycyk7XG5cbiAgQGlmICRfc3BhbiBhbmQgbm90KG1hcC1nZXQoJF9ndXR0ZXJzLCBjb2x1bW5zKSkge1xuICAgICRfY29udGV4dDogKCk7XG4gICAgJF9uZXc6ICgpO1xuXG4gICAgQGVhY2ggJGl0ZW0gaW4gJF9zcGFuIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICRfY29udGV4dDogYXBwZW5kKCRfY29udGV4dCwgJGl0ZW0pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRfbmV3OiBhcHBlbmQoJF9uZXcsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2NvbnRleHQ6IHBhcnNlLWdyaWQoJF9jb250ZXh0KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAwLCBudWxsLCAkX25ldyk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMSwgbnRoKCRfbmV3LCAxKSwgJF9uZXcpO1xuICAgICRfbmV3OiAoZ3V0dGVyLW92ZXJyaWRlOiBpZigkX25ldyAhPSAkX3NwYW4sICRfbmV3LCAkX3NwYW4pKTtcblxuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9uZXcpO1xuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9jb250ZXh0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuIiwiLy8gVmFsaWRhdGlvblxuLy8gPT09PT09PT09PVxuXG5cbi8vIFZhbGlkYXRlIENvbHVtbiBNYXRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbi1tYXRoKFxuICAkbWF0aCxcbiAgJGNvbHVtbi13aWR0aFxuKSB7XG4gIEBpZiAkbWF0aCA9PSBzdGF0aWMgYW5kIG5vdCgkY29sdW1uLXdpZHRoKSB7XG4gICAgQGVycm9yICdTdGF0aWMgbWF0aCByZXF1aXJlcyBhIHZhbGlkIGNvbHVtbi13aWR0aCBzZXR0aW5nLic7XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4td2lkdGg7XG59XG4iLCIvLyBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gU2V0IGEgbmV3IGxheW91dCB1c2luZyBhIHNob3J0aGFuZFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIGxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGF5b3V0LCAkaW5zcGVjdCk7XG59XG5cblxuLy8gVXNlIEdyaWRcbi8vIC0tLS0tLS0tXG4vLyBVc2UgYW4gYXJiaXRyYXJ5IGxheW91dCBmb3IgYSBzZWN0aW9uIG9mIGNvZGVcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiB3aXRoLWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRvbGQgICAgICA6ICRzdXN5O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHdpdGgtbGF5b3V0LCAkaW5zcGVjdCk7XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3k6ICRvbGQgIWdsb2JhbDtcbn1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIGEgcGFyc2VkIGxheW91dCBtYXAgYmFzZWQgb24gc2hvcnRoYW5kIHN5bnRheFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gbGF5b3V0KFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbn1cblxuXG4vLyBHZXQgTGF5b3V0XG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuZXcgbGF5b3V0IGJhc2VkIG9uIGN1cnJlbnQgYW5kIGdpdmVuIHNldHRpbmdzXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AZnVuY3Rpb24gX2dldC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkbGF5b3V0OiBsYXlvdXQoJGxheW91dCk7XG4gIEByZXR1cm4gaWYoJGNsZWFuLCAkbGF5b3V0LCBfc3VzeS1kZWVwLW1lcmdlKCRzdXN5LCAkbGF5b3V0KSk7XG59XG4iLCIvLyBTdXN5IEJveCBTaXppbmdcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgYm94IG1vZGVsIGdsb2JhbGx5IG9uIGFsbCBlbGVtZW50cy5cbi8vIC0gWyRib3hdOiBib3JkZXItYm94IHwgY29udGVudC1ib3hcbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gZ2xvYmFsLWJveC1zaXppbmcoXG4gICRib3g6IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSxcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3Q6ICRib3g7XG5cbiAgQGlmICRpbmhlcml0IHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgaHRtbCB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gICAgICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG4gICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdsb2JhbC1ib3gtc2l6aW5nLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHVwZGF0ZS1ib3gtbW9kZWwoJGJveCk7XG59XG5cbi8vIEJvcmRlciBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gQSBsZWdhY3kgc2hvcnRjdXQuLi5cbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gYm9yZGVyLWJveC1zaXppbmcoXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGdsb2JhbC1ib3gtc2l6aW5nKGJvcmRlci1ib3gsICRpbmhlcml0KTtcbn1cblxuLy8gVXBkYXRlIEJveCBNb2RlbFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVXBkYXRlcyBnbG9iYWwgYm94IG1vZGVsIHNldHRpbmdcbkBtaXhpbiB1cGRhdGUtYm94LW1vZGVsKFxuICAkYm94XG4pIHtcbiAgQGlmICRib3ggIT0gc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpIHtcbiAgQGluY2x1ZGUgc3VzeS1zZXQoZ2xvYmFsLWJveC1zaXppbmcsICRib3gpO1xuICB9XG59XG4iLCIvLyBDb250ZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gTmVzdGVkIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgZ3JpZCBmb3IgbmVzdGVkIGNvbnRleHQuXG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGNvbnRleHQgICAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJHNwYW4gICAgICAgOiBzdXN5LWdldChzcGFuLCAkY29udGV4dCk7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRjb250ZXh0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbn1cblxuLy8gTmVzdGVkIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBVc2UgYSBzdWJzZXQgZ3JpZCBmb3IgYSBuZXN0ZWQgY29udGV4dFxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG4vLyAtIEBjb250ZW50ICAgOiA8Y29udGVudD5cbkBtaXhpbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkb2xkICAgICAgOiBzdXN5LWdldChjb2x1bW5zKTtcbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogbmVzdGVkKCRjb250ZXh0KSkpICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KG5lc3RlZCwgJGluc3BlY3QpO1xuICBAY29udGVudDtcblxuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiAkb2xkKSkgIWdsb2JhbDtcbn1cbiIsIi8vIEJhY2tncm91bmQgR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiBmYWxzZTtcblxuXG4vLyBTaG93IEdyaWQvc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFNob3cgZ3JpZCBvbiBhbnkgZWxlbWVudCB1c2luZyBlaXRoZXIgYmFja2dyb3VuZCBvciBvdmVybGF5LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBzaG93LWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0OiAkZ3JpZDtcbiAgJF9vdXRwdXQ6IGRlYnVnLWdldChvdXRwdXQsICRncmlkKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc2hvdy1ncmlkLCAkaW5zcGVjdCk7XG4gIEBpZiAkX291dHB1dCA9PSBvdmVybGF5IGFuZCBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpICE9IGhpZGUge1xuICAgIEBpbmNsdWRlIG92ZXJsYXktZ3JpZCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gIH1cbn1cblxuQG1peGluIHNob3ctZ3JpZHMoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkZ3JpZCk7XG59XG5cbi8vIEJhY2tncm91bmQgR3JpZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTaG93IGEgZ3JpZCBiYWNrZ3JvdW5kIG9uIGFueSBlbGVtZW50LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRncmlkO1xuICAkX291dHB1dCAgOiBnZXQtYmFja2dyb3VuZCgkZ3JpZCk7XG5cbiAgQGlmIGxlbmd0aCgkX291dHB1dCkgPiAwIHtcbiAgICAkX2Zsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKTtcblxuICAgICRfaW1hZ2U6ICgpO1xuICAgIEBlYWNoICRuYW1lLCAkbGF5ZXIgaW4gbWFwLWdldCgkX291dHB1dCwgaW1hZ2UpIHtcbiAgICAgICRfZGlyZWN0aW9uOiBpZigkbmFtZSA9PSBiYXNlbGluZSwgdG8gYm90dG9tLCB0byB0bygkX2Zsb3cpKTtcbiAgICAgICRfaW1hZ2U6IGFwcGVuZCgkX2ltYWdlLCBsaW5lYXItZ3JhZGllbnQoJF9kaXJlY3Rpb24sICRsYXllciksIGNvbW1hKTtcbiAgICB9XG4gICAgJF9vdXRwdXQ6IG1hcC1tZXJnZSgkX291dHB1dCwgKGltYWdlOiAkX2ltYWdlKSk7XG5cbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmFja2dyb3VuZC1ncmlkLCAkaW5zcGVjdCk7XG4gIH1cbn1cblxuXG4vLyBPdmVybGF5IEdyaWRcbi8vIC0tLS0tLS0tLS0tLVxuLy8gR2VuZXJhdGUgYW4gaWNvbiB0byB0cmlnZ2VyIGdyaWQtb3ZlcmxheXMgb24gYW55IGdpdmVuIGVsZW1lbnRzLlxuLy8gJGdyaWRzLi4uICA6IDxzZWxlY3Rvcj4gWzxzZXR0aW5ncz5dIFssIDxzZWxlY3Rvcj5dKlxuQG1peGluIG92ZXJsYXktZ3JpZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpZiBub3QoJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzKSB7XG4gICAgQGF0LXJvb3QgaGVhZCB7IEBpbmNsdWRlIG92ZXJsYXktaGVhZCgkZ3JpZCk7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmJlZm9yZSB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlcjsgfVxuICAgIEBhdC1yb290IGhlYWQ6aG92ZXIgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXItaG92ZXI7IH1cbiAgICAkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIGhlYWQ6aG92ZXIgfiAmLFxuICBoZWFkOmhvdmVyIH4gYm9keSAmIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1vdmVybGF5LWJhc2U7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXIge1xuICBjb250ZW50OiBcInx8fFwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGZvbnQ6IHtcbiAgICBmYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgc2l6ZTogMTZweDtcbiAgICB3ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyIEhvdmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjUpO1xuICBjb2xvcjogcmVkO1xufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IEhlYWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDxoZWFkPiBzdHlsZXMgdG8gY3JlYXRlIGdyaWQgb3ZlcmxheSB0b2dnbGVcbkBtaXhpbiBvdmVybGF5LWhlYWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkX3RvZ2dsZTogZGVidWctZ2V0KHRvZ2dsZSwgJGdyaWQpO1xuICAkX2hvcno6IG51bGw7XG4gICRfdmVydDogbnVsbDtcblxuICBAZWFjaCAkc2lkZSBpbiAkX3RvZ2dsZSB7XG4gICAgJF9ob3J6OiBpZigkc2lkZSA9PSBsZWZ0IG9yICRzaWRlID09IHJpZ2h0LCAkc2lkZSwgJF9ob3J6KTtcbiAgICAkX3ZlcnQ6IGlmKCRzaWRlID09IHRvcCBvciAkc2lkZSA9PSBib3R0b20sICRzaWRlLCAkX3ZlcnQpO1xuICB9XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgI3skX2hvcnp9OiAxMHB4O1xuICAjeyRfdmVydH06IDEwcHg7XG4gIHotaW5kZXg6IDk5OTtcbiAgY29sb3I6ICMzMzM7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC4yNSk7XG59XG5cblxuLy8gW1ByaXZhdGVdIEdyaWQgT3ZlcmxheSBCYXNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJhc2Ugc3R5bGVzIGZvciBnZW5lcmF0aW5nIGEgZ3JpZCBvdmVybGF5XG5AbWl4aW4gZ3JpZC1vdmVybGF5LWJhc2UoKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBjb250ZW50OiBcIiBcIjtcbiAgei1pbmRleDogOTk4O1xufVxuXG5cbi8vIEdldCBTeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1zeW0oXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgICAgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfZ3V0dGVycyAgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRncmlkKTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkZ3JpZCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRncmlkKTtcblxuICAkX2NvbG9yICAgICAgICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX3RyYW5zICAgICAgICAgOiB0cmFuc3BhcmVudDtcbiAgJF9saWdodCAgICAgICAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuXG4gICRfZW5kICAgICAgICAgICA6IDEgKyAkX2d1dHRlcnM7XG4gICRfYWZ0ZXIgICAgICAgICA6IHBlcmNlbnRhZ2UoMS8kX2VuZCk7XG4gICRfc3RvcHMgICAgICAgICA6ICgpO1xuICAkX3NpemUgICAgICAgICAgOiBzcGFuKDEgJGdyaWQgd2lkZSk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQ7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3NwbGl0OiAkX2d1dHRlcnMvMjtcbiAgICAkX2JlZm9yZTogcGVyY2VudGFnZSgkX3NwbGl0LyRfZW5kKTtcbiAgICAkX2FmdGVyOiBwZXJjZW50YWdlKCgxICsgJF9zcGxpdCkvJF9lbmQpO1xuICAgICRfc3RvcHM6ICRfdHJhbnMgJF9iZWZvcmUsICRfY29sb3IgJF9iZWZvcmUsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfVxuXG4gIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAkX3NpemU6IHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpICogJF9lbmQ7XG4gIH1cblxuICAkX291dHB1dDogKFxuICAgIGltYWdlOiAoY29sdW1uczogJF9zdG9wcyksXG4gICAgc2l6ZTogJF9zaXplLFxuICApO1xuXG4gIEByZXR1cm4gJF9vdXRwdXQ7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBJbnNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0taW5zaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIFNwbGl0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tc3BsaXQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkc3RhcnQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcblxuICAgICRfZW5kOiAkc3RhcnQgKyBzcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkX2VuZCwgY29tbWEpO1xuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBPdXRzaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1vdXRzaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3RyYW5zICAgOiB0cmFuc3BhcmVudDtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRndXR0ZXI6IGdldC1zcGFuLXdpZHRoKGZpcnN0ICRsb2NhdGlvbiAkZ3JpZCk7XG5cbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcblxuICAgICAgJGd1dHRlcjogJF9saWdodCAkZ3V0dGVyLCAkX3RyYW5zICRndXR0ZXIsICRfdHJhbnMgJF9lbmQ7XG4gICAgICAkdGhpcy1zdG9wOiBqb2luKCR0aGlzLXN0b3AsICRndXR0ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLWFzeW0oXG4gICRncmlkXG4pIHtcbiAgJF9zdG9wczogKCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLWluc2lkZSgkZ3JpZCk7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1zcGxpdCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLW91dHNpZGUoJGdyaWQpO1xuICB9XG5cbiAgQHJldHVybiAoaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSk7XG59XG5cblxuLy8gR2V0IEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfc2hvdyAgICA6IHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCk7XG4gICRfcmV0dXJuICA6ICgpO1xuXG4gIEBpZiAkX3Nob3cgYW5kICRfc2hvdyAhPSAnaGlkZScge1xuICAgICRfY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgJF9zeW06IGlzLXN5bW1ldHJpY2FsKCRfY29sdW1ucyk7XG4gICAgICAkX3JldHVybjogaWYoJF9zeW0sIGdldC1iYWNrZ3JvdW5kLXN5bSgkZ3JpZCksIGdldC1iYWNrZ3JvdW5kLWFzeW0oJGdyaWQpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBjb250ZW50LWJveCkpO1xuICAgIH1cblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctY29sdW1ucydcbiAgICAgIGFuZCBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKGJhc2UtbGluZS1oZWlnaHQpXG4gICAgICBhbmQgdHlwZS1vZigkYmFzZS1saW5lLWhlaWdodCkgPT0gJ251bWJlcidcbiAgICAgIGFuZCBub3QgdW5pdGxlc3MoJGJhc2UtbGluZS1oZWlnaHQpIHtcbiAgICAgICRfY29sb3I6IHZhcmlhYmxlLWV4aXN0cygnZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yJyk7XG4gICAgICAkX2NvbG9yOiBpZigkX2NvbG9yLCAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yLCAjMDAwKTtcblxuICAgICAgJF9pbWFnZTogbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpO1xuICAgICAgJF9zaXplOiBtYXAtZ2V0KCRfcmV0dXJuLCBzaXplKTtcbiAgICAgICRfYmFzZWxpbmU6IChiYXNlbGluZTogKCRfY29sb3IgMXB4LCB0cmFuc3BhcmVudCAxcHgpKTtcbiAgICAgICRfYmFzZWxpbmUtc2l6ZTogMTAwJSAkYmFzZS1saW5lLWhlaWdodDtcblxuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKFxuICAgICAgICBpbWFnZTogaWYoJF9pbWFnZSwgbWFwLW1lcmdlKCRfaW1hZ2UsICRfYmFzZWxpbmUpLCAkX2Jhc2VsaW5lKSxcbiAgICAgICAgc2l6ZTogaWYoJF9zaXplLCAoJF9zaXplLCAkX2Jhc2VsaW5lLXNpemUpLCAkX2Jhc2VsaW5lLXNpemUpLFxuICAgICAgKSk7XG5cbiAgICAgIEBpZiAkX3Nob3cgPT0gJ3Nob3cnIHtcbiAgICAgICAgJF9jbGlwOiBtYXAtZ2V0KCRfcmV0dXJuLCBjbGlwKTtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGpvaW4oJF9jbGlwLCBib3JkZXItYm94LCBjb21tYSkpKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRfc2hvdyA9PSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgQHdhcm4gJ1BsZWFzZSBwcm92aWRlIGEgJGJhc2UtbGluZS1oZWlnaHQgd2l0aCB0aGUgZGVzaXJlZCBoZWlnaHQgYW5kIHVuaXRzJztcbiAgICB9XG4gIH1cblxuICBAaWYgbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIEdldCBEZWJ1Z1xuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgZGVidWcgc2V0dGluZ1xuLy8gLSAka2V5OiA8c2V0dGluZz5cbkBmdW5jdGlvbiBkZWJ1Zy1nZXQoXG4gICRrZXksXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRrZXk6IGpvaW4oZGVidWcsICRrZXksIHNwYWNlKTtcbiAgQHJldHVybiBzdXN5LWdldCgka2V5LCAkZ3JpZCk7XG59XG4iLCIvLyBDb250YWluZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgY29udGFpbmVyIGVsZW1lbnRcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgICAgOiAkbGF5b3V0O1xuICAkbGF5b3V0ICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG5cbiAgJF93aWR0aCAgICAgOiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xuICAkX2p1c3RpZnkgICA6IHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihzdXN5LWdldChjb250YWluZXItcG9zaXRpb24sICRsYXlvdXQpKTtcbiAgJF9wcm9wZXJ0eSAgOiBpZihzdXN5LWdldChtYXRoLCAkbGF5b3V0KSA9PSBzdGF0aWMsIHdpZHRoLCBtYXgtd2lkdGgpO1xuXG4gICRfYm94ICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJGxheW91dCk7XG5cbiAgQGlmICRfYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRfYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoY29udGFpbmVyLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGZsb2F0LWNvbnRhaW5lcigkX3dpZHRoLCAkX2p1c3RpZnksICRfcHJvcGVydHkpO1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGxheW91dCk7XG59XG5cbi8vIENvbnRhaW5lciBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICBAcmV0dXJuIGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG59XG5cbi8vIEdldCBDb250YWluZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSB0aGUgY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XTogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1jb250YWluZXItd2lkdGgoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dCAgICAgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF93aWR0aCAgICAgICAgIDogc3VzeS1nZXQoY29udGFpbmVyLCAkbGF5b3V0KTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkbGF5b3V0KTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGxheW91dCk7XG5cbiAgQGlmIG5vdCgkX3dpZHRoKSBvciAkX3dpZHRoID09IGF1dG8ge1xuICAgIEBpZiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSB7XG4gICAgICAkX2NvbHVtbnMgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRsYXlvdXQpO1xuICAgICAgJF9ndXR0ZXJzICAgOiBzdXN5LWdldChndXR0ZXJzLCAkbGF5b3V0KTtcbiAgICAgICRfc3ByZWFkICAgIDogaWYoaXMtc3BsaXQoJGxheW91dCksIHdpZGUsIG5hcnJvdyk7XG4gICAgICAkX3dpZHRoICAgICA6IHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkgKiAkX2NvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3dpZHRoO1xufVxuXG4vLyBQYXJzZSBDb250YWluZXIgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyc2UgdGhlICRjb250YWluZXItcG9zaXRpb24gaW50byBtYXJnaW4gdmFsdWVzLlxuLy8gLSBbJGp1c3RpZnldICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCA8bGVuZ3RoPiBbPGxlbmd0aD5dXG5AZnVuY3Rpb24gcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKFxuICAkanVzdGlmeTogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgY29udGFpbmVyLXBvc2l0aW9uKVxuKSB7XG4gICRfcmV0dXJuOiBpZigkanVzdGlmeSA9PSBsZWZ0LCAwLCBhdXRvKSBpZigkanVzdGlmeSA9PSByaWdodCwgMCwgYXV0byk7XG5cbiAgQGlmIG5vdChpbmRleChsZWZ0IHJpZ2h0IGNlbnRlciwgJGp1c3RpZnkpKSB7XG4gICAgJF9yZXR1cm46IG50aCgkanVzdGlmeSwgMSk7XG4gICAgJF9yZXR1cm46ICRfcmV0dXJuIGlmKGxlbmd0aCgkanVzdGlmeSkgPiAxLCBudGgoJGp1c3RpZnksIDIpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU3BhbiBTeW50YXhcbi8vID09PT09PT09PT09XG5cbi8vIFNwYW4gW21peGluXVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBzcGFubmluZyBlbGVtZW50IHVzaW5nIHNob3J0aGFuZCBzeW50YXguXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbjogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRvdXRwdXQ6IHNwYW4tbWF0aCgkc3Bhbik7XG4gICRuZXN0aW5nOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjbGVhcjogc3VzeS1nZXQoY2xlYXIsICRzcGFuKTtcblxuICAkYm94OiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRjb250ZW50LWJveDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuICAkYm94OiAkYm94IG9yIGlmKGlzLWluc2lkZSgkc3BhbikgYW5kICRjb250ZW50LWJveCwgYm9yZGVyLWJveCwgbnVsbCk7XG5cbiAgQGlmICRjbGVhciA9PSBicmVhayB7XG4gICAgQGluY2x1ZGUgYnJlYWs7XG4gIH0gQGVsc2UgaWYgJGNsZWFyID09IG5vYnJlYWsge1xuICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3BhbiwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTtcbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgQGlmIHZhbGlkLWNvbHVtbnMoJG5lc3RpbmcsIHNpbGVudCkge1xuICAgIEBpbmNsdWRlIG5lc3RlZCgkc3BhbikgeyBAY29udGVudDsgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTcGFuIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIHNwYW4uXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQGZ1bmN0aW9uIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgQHJldHVybiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG59XG5cbi8vIFNwYW4gTWF0aFxuLy8gLS0tLS0tLS0tXG4vLyBHZXQgYWxsIHRoZSBzcGFuIHJlc3VsdHMuXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIHNwYW4tbWF0aChcbiAgJHNwYW5cbikge1xuICAkbmVzdCAgICAgICAgICAgICA6IGlmKHN1c3ktZ2V0KHJvbGUsICRzcGFuKSA9PSBuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRzcGxpdC1uZXN0ICAgICAgIDogaWYoaXMtc3BsaXQoJHNwYW4pIGFuZCAkbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZWRnZSAgICAgICAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgICAgICAgOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbTtcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsO1xuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGw7XG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbDtcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aWR0aHNcbiAgJHNwcmVhZDogaW5kZXgobWFwLXZhbHVlcygkc3BhbiksIHNwcmVhZCk7XG4gICRzcGFuOiBpZigkc3BsaXQtbmVzdCBhbmQgbm90KCRzcHJlYWQpLCBtYXAtbWVyZ2UoJHNwYW4sIChzcHJlYWQ6IHdpZGUpKSwgJHNwYW4pO1xuICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbiAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAvLyBhcHBseSBndXR0ZXJzXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaWYgbm90KHN1c3ktZ2V0KHJvbGUsICRzcGFuKSkge1xuICAgICAgJHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBub3QoJHNwbGl0LW5lc3QpIHtcbiAgICAgICRtYXJnaW4tYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJG1hcmdpbi1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNwZWNpYWwgbWFyZ2luIGhhbmRsaW5nXG4gIEBpZiBzdXN5LWdldChvdXRwdXQsICRzcGFuKSA9PSBpc29sYXRlIGFuZCAkbG9jYXRpb24ge1xuICAgICRtYXJnaW4tYmVmb3JlOiBnZXQtaXNvbGF0aW9uKCRzcGFuKTtcbiAgICAkbWFyZ2luLWFmdGVyOiAtMTAwJTtcbiAgfSBAZWxzZSBpZiAkZWRnZSB7XG4gICAgJGlzLXNwbGl0OiBpcy1zcGxpdCgkc3Bhbik7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG5cbiAgICBAaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkZmxvYXQ6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJHNwYW4pO1xuICAgIH1cblxuICAgIEBpZiBub3QoJGlzLXNwbGl0KSB7XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gZmlyc3QgYW5kICRwb3MgPT0gYmVmb3JlKSB7XG4gICAgICAgICRtYXJnaW4tYmVmb3JlOiAwO1xuICAgICAgfVxuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGxhc3QgYW5kICRwb3MgPT0gYWZ0ZXIpIHtcbiAgICAgICAgJG1hcmdpbi1hZnRlcjogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gKFxuICAgIHdpZHRoICAgICAgICAgICA6ICR3aWR0aCxcbiAgICBmbG9hdCAgICAgICAgICAgOiAkZmxvYXQsXG4gICAgbWFyZ2luLWJlZm9yZSAgIDogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLWFmdGVyICAgIDogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLWJlZm9yZSAgOiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy1hZnRlciAgIDogJHBhZGRpbmctYWZ0ZXIsXG4gICAgZmxvdyAgICAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xufVxuXG4vLyBHZXQgU3BhbiBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBzcGFuIHdpZHRoLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBnZXQtc3Bhbi13aWR0aChcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcblxuICAkbiAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRsb2NhdGlvbiA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycywgJHNwYW4pO1xuICAkc3ByZWFkICAgOiBzdXN5LWdldChzcHJlYWQsICRzcGFuKTtcblxuICAkY29udGV4dCAgOiBudWxsO1xuICAkc3Bhbi1zdW0gOiBudWxsO1xuICAkd2lkdGggICAgOiBudWxsO1xuXG4gIEBpZiAkbiA9PSAnZnVsbCcge1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuICAgICRyb2xlOiBzdXN5LWdldChyb2xlLCAkc3Bhbik7XG4gICAgJG46IGlmKCRwb3MgPT0gc3BsaXQgYW5kICRyb2xlICE9IG5lc3QsIHN1c3ktY291bnQoJGNvbHVtbnMpLCAxMDAlKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRuKSAhPSBudW1iZXIge1xuICAgIEB3YXJuIFwiKCN7dHlwZS1vZigkbil9KSAjeyRufSBpcyBub3QgYSB2YWxpZCBzcGFuLlwiO1xuICB9IEBlbHNlIGlmIHVuaXRsZXNzKCRuKSB7XG4gICAgJGNvbnRleHQ6IHN1c3ktc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgaWYoaXMtc3BsaXQoJHNwYW4pLCB3aWRlLCBuYXJyb3cpKTtcbiAgICAkc3ByZWFkOiBpZihpcy1pbnNpZGUoJHNwYW4pLCAkc3ByZWFkIG9yIHdpZGUsICRzcHJlYWQpO1xuICAgICRzcGFuLXN1bTogc3VzeSgkbiwgJGxvY2F0aW9uLCAkY29sdW1ucywgJGd1dHRlcnMsICRzcHJlYWQpO1xuXG4gICAgJF9tYXRoOiBzdXN5LWdldChtYXRoLCAkc3Bhbik7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJHNwYW4pO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICR3aWR0aDogJHNwYW4tc3VtICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJHNwYW4tc3VtIC8gJGNvbnRleHQpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHdpZHRoOiAkbjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuIiwiLy8gR3V0dGVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIEd1dHRlcnNcbi8vIC0tLS0tLS1cbi8vIFNldCBndXR0ZXJzIG9uIGFuIGVsZW1lbnQuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVycyA6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX291dHB1dDogKFxuICAgIGJlZm9yZTogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSksXG4gICAgYWZ0ZXI6IG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlciksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChndXR0ZXJzLCAkaW5zcGVjdCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH1cbn1cblxuQG1peGluIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZ3V0dGVycygkc3Bhbik7XG59XG5cblxuLy8gR3V0dGVyXG4vLyAtLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBndXR0ZXIuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRzcGFuOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX2d1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSBvciBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuXG5AZnVuY3Rpb24gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQHJldHVybiBndXR0ZXIoJHNwYW4pO1xufVxuXG5cbi8vIEdldCBHdXR0ZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBndXR0ZXIgd2lkdGguXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXItd2lkdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVycyA6IHN1c3ktZ2V0KGd1dHRlcnMsICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgIDogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkY29udGV4dCk7XG5cbiAgQGlmICRfZ3V0dGVycyBhbmQgKCRfZ3V0dGVycyA+IDApIGFuZCBub3QoJF9ndXR0ZXIpIHtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkY29udGV4dCk7XG4gICAgJF9tYXRoOiBndXR0ZXItbWF0aCgkY29udGV4dCk7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJF9ndXR0ZXI6ICRfZ3V0dGVycyAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuICAgICAgJF9zcHJlYWQgIDogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCB3aWRlLCBzdXN5LWdldChzcHJlYWQsICRjb250ZXh0KSk7XG4gICAgICAkX2d1dHRlciAgOiBwZXJjZW50YWdlKCRfZ3V0dGVycyAvIHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkpO1xuICAgIH1cbiAgfVxuXG4gICRfZ3V0dGVyOiBpZigkX2d1dHRlciA9PSAnbm8tZ3V0dGVycycgb3IgJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcicsIG51bGwsICRfZ3V0dGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVyO1xufVxuXG5cbi8vIEdldCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGJlZm9yZSBhbmQgYWZ0ZXIgZ3V0dGVyIHZhbHVlcy5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlcnMoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICAgICAgICAgICAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlci1wb3NpdGlvbiAgIDogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICAgICAgICAgICAgOiBnZXQtZ3V0dGVyLXdpZHRoKCRjb250ZXh0KTtcblxuICAkX3JldHVybiAgICAgICAgICAgIDogKGJlZm9yZTogbnVsbCwgYWZ0ZXI6IG51bGwpO1xuXG4gIEBpZiBpcy1zcGxpdCgkY29udGV4dCkgYW5kICRfZ3V0dGVyIHtcbiAgICAkX2d1dHRlcjogJF9ndXR0ZXIgLyAyO1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChiZWZvcmU6ICRfZ3V0dGVyLCBhZnRlcjogJF9ndXR0ZXIpKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRfZ3V0dGVyLXBvc2l0aW9uOiAkX2d1dHRlcikpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBJcyBJbnNpZGVcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIGluc2lkZS5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1pbnNpZGUoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9pbnNpZGU6IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX2luc2lkZSwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gSXMgU3BsaXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgc3BsaXQuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtc3BsaXQoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9zcGxpdDogc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfc3BsaXQsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIEd1dHRlciBNYXRoXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBtYXRoIHRvIHVzZSBmb3IgZ3V0dGVyIGNhbGN1bGF0aW9uc1xuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGd1dHRlci1tYXRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkX3JldHVybiAgOiBzdXN5LWdldChtYXRoLCAkY29udGV4dCk7XG4gICRfcmV0dXJuICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpID09IGluc2lkZS1zdGF0aWMsIHN0YXRpYywgJF9yZXR1cm4pO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBJc29sYXRpb24gU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cblxuLy8gSXNvbGF0ZSBbTWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBpc29sYXRpb24gYXMgYW4gb3ZlcnJpZGUuXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AbWl4aW4gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaW5zcGVjdDogJGlzb2xhdGU7XG5cbiAgJG91dHB1dDogKFxuICAgIHB1c2g6IGlzb2xhdGUoJGlzb2xhdGUpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRpc29sYXRlKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoaXNvbGF0ZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBpc29sYXRlLW91dHB1dCgkb3V0cHV0Li4uKTtcbn1cblxuXG4vLyBJc29sYXRlIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGFuIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGguXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AZnVuY3Rpb24gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaXNvbGF0ZTogcGFyc2Utc3BhbigkaXNvbGF0ZSk7XG4gICRpc29sYXRpb246IHN1c3ktZ2V0KHNwYW4sICRpc29sYXRlKTtcblxuICBAaWYgJGlzb2xhdGlvbiBhbmQgbm90KGdldC1sb2NhdGlvbigkaXNvbGF0ZSkpIHtcbiAgICAkbmV3OiAoXG4gICAgICBzcGFuOiBudWxsLFxuICAgICAgbG9jYXRpb246ICRpc29sYXRpb24sXG4gICAgKTtcbiAgICAkaXNvbGF0ZTogbWFwLW1lcmdlKCRpc29sYXRlLCAkbmV3KTtcbiAgfVxuXG4gIEByZXR1cm4gZ2V0LWlzb2xhdGlvbigkaXNvbGF0ZSk7XG59XG5cblxuLy8gR2V0IElzb2xhdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBpc29sYXRpb24gb2Zmc2V0IHdpZHRoXG4vLyAtICRpbnB1dDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtaXNvbGF0aW9uKFxuICAkaW5wdXRcbikge1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkaW5wdXQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRpbnB1dCk7XG4gICR3aWR0aCAgICAgIDogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciBhbmQgbm90KHVuaXRsZXNzKCRsb2NhdGlvbikpIHtcbiAgICAkd2lkdGg6ICRsb2NhdGlvbjtcbiAgfSBAZWxzZSBpZiAkbG9jYXRpb24ge1xuICAgICRwdXNoOiAkbG9jYXRpb24gLSAxO1xuICAgIEBpZiAkcHVzaCA+IDAge1xuICAgICAgJHB1c2g6IG1hcC1tZXJnZSgkaW5wdXQsIChcbiAgICAgICAgc3BhbjogJHB1c2gsXG4gICAgICAgIGxvY2F0aW9uOiAxLFxuICAgICAgICBzcHJlYWQ6IHdpZGUsXG4gICAgICApKTtcbiAgICAgICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHB1c2gpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRpbnB1dCkgPT0gc3BsaXRcbiAgICAgIGFuZCBzdXN5LWdldChndXR0ZXJzLCAkaW5wdXQpID4gMCB7XG4gICAgJHdpZHRoOiBpZigkd2lkdGggPT0gbnVsbCwgZ3V0dGVycygkaW5wdXQpLCAkd2lkdGggKyBndXR0ZXJzKCRpbnB1dCkpO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGggb3IgMDtcbn1cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJvdyBTdGFydCAmIEVuZFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIEJyZWFrXG4vLyAtLS0tLVxuLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCBzaG91bGQgZm9yY2UgYSBsaW5lIGJyZWFrLlxuQG1peGluIGJyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogYm90aCkpO1xufVxuXG5cbi8vIE5vQnJlYWtcbi8vIC0tLS0tLS1cbi8vIENhbmNlbCB0aGUgYnJlYWsoKSBlZmZlY3QsIGUuZy4gd2hlbiB1c2luZyBtZWRpYSBxdWVyaWVzLlxuQG1peGluIG5vYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBub25lKSk7XG59XG5cblxuLy8gRnVsbFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8bGF5b3V0IHNob3J0aGFuZD5cbkBtaXhpbiBmdWxsKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCA6ICRjb250ZXh0O1xuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZnVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBzcGFuKGZ1bGwgb2YgcGFyc2UtZ3JpZCgkY29udGV4dCkgYnJlYWspO1xufVxuXG5cbi8vIEZpcnN0XG4vLyAtLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gZmlyc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmaXJzdCwgJGluc3BlY3QpO1xuICBAaWYgbm90KGlzLXNwbGl0KCRjb250ZXh0KSkge1xuICAgIEBpbmNsdWRlIGZsb2F0LWZpcnN0KCRmbG93KTtcbiAgfVxufVxuXG5AbWl4aW4gYWxwaGEoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGZpcnN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBMYXN0XG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBsYXN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxhc3QsICRpbnNwZWN0KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpLFxuICAgIGxhc3QtZmxvdzogc3VzeS1nZXQobGFzdC1mbG93LCAkY29udGV4dCksXG4gICAgbWFyZ2luOiBpZihpcy1zcGxpdCgkY29udGV4dCksIG51bGwsIDApLFxuICApO1xuXG4gIEBpbmNsdWRlIGZsb2F0LWxhc3QoJG91dHB1dC4uLik7XG59XG5cbkBtaXhpbiBvbWVnYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgbGFzdCgkY29udGV4dCk7XG59XG5cblxuLy8gR2V0IEVkZ2Vcbi8vIC0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgZWRnZSB2YWx1ZSBiYXNlZCBvbiBsb2NhdGlvbiwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtZWRnZShcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IHN1c3ktZ2V0KGVkZ2UsICRzcGFuKTtcblxuICBAaWYgbm90KCRlZGdlKSB7XG4gICAgJGNvdW50OiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSk7XG4gICAgJGxvY2F0aW9uOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAgICRuOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgICAkbnVtYmVyOiBpZih0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyLCB0cnVlLCBmYWxzZSk7XG4gICAgJGluZGV4OiBpZigkbnVtYmVyIGFuZCB1bml0bGVzcygkbG9jYXRpb24pLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJG4gPT0gJGNvdW50IHtcbiAgICAgICRlZGdlOiBmdWxsO1xuICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uIGFuZCAkbiBhbmQgJGluZGV4IHtcbiAgICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAgICRlZGdlOiBpZigkbiA9PSAkY291bnQsIGZ1bGwsIGZpcnN0KTtcbiAgICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uICsgJG4gLSAxID09ICRjb3VudCB7XG4gICAgICAgICRlZGdlOiBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkZWRnZSA9PSBhbHBoYSBvciAkZWRnZSA9PSBvbWVnYSB7XG4gICAgJGVkZ2U6IGlmKCRlZGdlID09IGFscGhhLCBmaXJzdCwgbGFzdCk7XG4gIH1cblxuICBAcmV0dXJuICRlZGdlO1xufVxuXG5cbi8vIEdldCBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgbG9jYXRpb24gdmFsdWUgYmFzZWQgb24gZWRnZSwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtbG9jYXRpb24oXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJG4gICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgQGlmICRlZGdlIGFuZCBub3QoJGxvY2F0aW9uKSBhbmQgdHlwZS1vZigkbikgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkbikge1xuICAgIEBpZiAkZWRnZSA9PSBmaXJzdCB7XG4gICAgICAkbG9jYXRpb246IDE7XG4gICAgfSBAZWxzZSBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRsb2NhdGlvbjogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpIC0gJG4gKyAxO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxvY2F0aW9uXG59XG4iLCIvLyBNYXJnaW4gU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cbi8vIFByZVxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW4gICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJGd1dHRlciA6IGd1dHRlcigkc3Bhbik7XG4gICRzcGFuICAgOiBzcGFuKCRzcGFuKTtcbiAgJHdpZHRoICA6IGlmKCRzcGxpdCBhbmQgJGd1dHRlciwgJHNwYW4gKyAkZ3V0dGVyLCAkc3Bhbik7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBQb3N0XG4vLyAtLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwb3N0KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwb3N0LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFB1c2hcbi8vIC0tLS1cbi8vIFNpbXBsZSBzeW5vbnltbiBmb3IgcHJlLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdXNoKFxuICAkc3BhblxuKSB7XG4gIEBpbmNsdWRlIHByZSgkc3Bhbik7XG59XG5cbi8vIFB1bGxcbi8vIC0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdWxsKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIDAgLSBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIDAgLSBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHB1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3F1aXNoXG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBzcXVpc2goXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICAgICAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcXVpc2gsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlKCRwcmUpO1xuICBAaW5jbHVkZSBwb3N0KCRwb3N0KTtcbn1cbiIsIi8vIFBhZGRpbmcgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZWZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTdWZmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3VmZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzdWZmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFBhZFxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gcGFkKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBhZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmVmaXgoJHByZSk7XG4gIEBpbmNsdWRlIHN1ZmZpeCgkcG9zdCk7XG5cbn1cbiIsIi8vIEJsZWVkIFN5bnRheFxuLy8gPT09PT09PT09PT09XG5cbi8vIEJsZWVkXG4vLyAtLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIG1hcmdpbnMsIGFuZCBlcXVhbCBwb3NpdGl2ZSBwYWRkaW5nIHRvIGNyZWF0ZSBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkKFxuICAkYmxlZWQ6IDAgZ3V0dGVyKClcbikge1xuICAkaW5zcGVjdCAgOiAkYmxlZWQ7XG4gICRvdXRwdXQgICA6IGdldC1ibGVlZCgkYmxlZWQpO1xuXG4gIEBpZiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gY29udGVudC1ib3gge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgoYm94LXNpemluZzogY29udGVudC1ib3gpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChibGVlZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cblxuLy8gQmxlZWQteFxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIGhvcml6b250YWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC14KFxuICAkYmxlZWQ6IGd1dHRlcigpXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMikgMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC14IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBCbGVlZC15XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgdmVydGljYWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC15KFxuICAkYmxlZWQ6IGlmKGZ1bmN0aW9uLWV4aXN0cyhyaHl0aG0pLCByaHl0aG0oMSksIDFlbSlcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDApKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCBudGgoJHRyYmwsIDIpIDApKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXkgb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEdldCBCbGVlZFxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmxlZWQgb3V0cHV0IHZhbHVlc1xuLy8gLSAkYmxlZWQ6IDxzcGFuPlxuQGZ1bmN0aW9uIGdldC1ibGVlZChcbiAgJGJsZWVkXG4pIHtcbiAgJGJsZWVkICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRibGVlZCkpO1xuICAkdHJibCAgICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuICAkc2hvcnQgICAgOiBudWxsO1xuICAkb3V0cHV0ICAgOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkdHJibCkge1xuICAgICR0aGlzOiBudGgoJHRyYmwsICRpKTtcbiAgICAkbmV3OiAoKTtcbiAgICAkbWFyZ2luOiBudWxsO1xuICAgICRwYWRkaW5nOiBudWxsO1xuICAgICRwYWRkaW5nLXg6IG51bGw7XG5cbiAgICBAaWYgJHRoaXMgPiAwIHtcbiAgICAgICR0aGlzOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogJHRoaXMpKTtcbiAgICAgICRtYXJnaW46IHNwYW4oJHRoaXMpO1xuICAgICAgJHBhZGRpbmc6ICRtYXJnaW47XG4gICAgICAkcGFkZGluZy14OiAkcGFkZGluZztcbiAgICB9XG5cbiAgICBAaWYgJG1hcmdpbiBhbmQgJG1hcmdpbiA+IDAge1xuICAgICAgJG1hcmdpbjogLSAkbWFyZ2luO1xuXG4gICAgICBAaWYgaXMtaW5zaWRlKCR0aGlzKSB7XG4gICAgICAgICRndXR0ZXI6IGd1dHRlcigkdGhpcyk7XG4gICAgICAgICRqb2luOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCRwYWRkaW5nLCAkZ3V0dGVyKSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAkcGFkZGluZy14OiBpZigkam9pbiBhbmQgJHBhZGRpbmcgPiAwLCAkcGFkZGluZyArICRndXR0ZXIsICRwYWRkaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMiB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAzIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDQge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgJG5ldyk7XG4gIH1cblxuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRvdXRwdXQge1xuICAgICRvdXRwdXQ6IGlmKCR2YWx1ZSA9PSAwLCBtYXAtbWVyZ2UoJG91dHB1dCwgKCRwcm9wOiBudWxsKSksICRvdXRwdXQpO1xuICB9XG5cbiAgQHJldHVybiBibGVlZC1zaG9ydGhhbmQoJG91dHB1dCk7XG59XG5cbi8vIEJsZWVkIFNob3J0aGFuZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDb252ZXJ0IGJsZWVkIG91dHB1dCBpbnRvIHNob3J0aGFuZCB3aGVuIHBvc3NpYmxlLlxuLy8gLSAkYmxlZWQ6IDxvdXRwdXQgbWFwPlxuQGZ1bmN0aW9uIGJsZWVkLXNob3J0aGFuZChcbiAgJGJsZWVkXG4pIHtcbiAgJG1hcmdpbjogKCk7XG4gICRwYWRkaW5nOiAoKTtcbiAgJHJldHVybjogKCk7XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRibGVlZCB7XG4gICAgQGlmIHN0ci1pbmRleCgka2V5LCBtYXJnaW4pIHtcbiAgICAgICRtYXJnaW46IG1hcC1tZXJnZSgkbWFyZ2luLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfSBAZWxzZSBpZiBzdHItaW5kZXgoJGtleSwgcGFkZGluZykgPiAwIHtcbiAgICAgICRwYWRkaW5nOiBtYXAtbWVyZ2UoJHBhZGRpbmcsICgka2V5OiAkdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAkcHJvcHM6IChcbiAgICBtYXJnaW46ICRtYXJnaW4sXG4gICAgcGFkZGluZzogJHBhZGRpbmcsXG4gICk7XG5cbiAgQGVhY2ggJG5hbWUsICRtYXAgaW4gJHByb3BzIHtcbiAgICAkZm91cjogaWYobGVuZ3RoKG1hcC1rZXlzKCRtYXApKSA9PSA0LCB0cnVlLCBmYWxzZSk7XG4gICAgJG51bGw6IGlmKGluZGV4KG1hcC12YWx1ZXMoJG1hcCksIG51bGwpLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJGZvdXIgYW5kIG5vdCgkbnVsbCkge1xuICAgICAgJHRvcDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tdG9wJyk7XG4gICAgICAkcmlnaHQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXJpZ2h0Jyk7XG4gICAgICAkYm90dG9tOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1ib3R0b20nKTtcbiAgICAgICRsZWZ0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1sZWZ0Jyk7XG5cbiAgICAgICR0YjogaWYoJHRvcCA9PSAkYm90dG9tLCAkdG9wLCBudWxsKTtcbiAgICAgICRybDogaWYoJHJpZ2h0ID09ICRsZWZ0LCAkcmlnaHQsIG51bGwpO1xuICAgICAgJGFsbDogaWYoJHRiID09ICRybCwgJHRiLCBudWxsKTtcblxuICAgICAgJG5ldzogaWYoJGFsbCwgJGFsbCwgbnVsbCk7XG5cbiAgICAgIEBpZiBub3QoJG5ldykge1xuICAgICAgICBAaWYgJHRiIGFuZCAkcmwge1xuICAgICAgICAgICRuZXc6ICR0YiAkcmw7XG4gICAgICAgIH0gQGVsc2UgaWYgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRybCAkYm90dG9tO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRyaWdodCAkYm90dG9tICRsZWZ0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJG5hbWU6ICRuZXcpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAkbWFwKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBCcmVha3BvaW50IEludGVncmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW1lZGlhOiAoKSAhZGVmYXVsdDtcbiRzdXN5LW1lZGlhLWZhbGxiYWNrOiBmYWxzZSAhZGVmYXVsdDtcblxuJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICgpO1xuXG5cbi8vIFN1c3kgQnJlYWtwb2ludFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGFuZ2UgZ3JpZHMgYXQgZGlmZmVyZW50IG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRzLlxuLy8gLSAkcXVlcnkgICAgIDogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPiB8IDxtYXA+XG4vLyAtICRsYXlvdXQgICAgOiA8c2V0dGluZ3M+XG4vLyAtICRuby1xdWVyeSAgOiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1icmVha3BvaW50KFxuICAkcXVlcnksXG4gICRsYXlvdXQ6IGZhbHNlLFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1yb3V0ZXIoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAaWYgJGxheW91dCB7XG4gICAgICBAaW5jbHVkZSB3aXRoLWxheW91dCgkbGF5b3V0KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gU3VzeSBNZWRpYVxuLy8gLS0tLS0tLS0tLVxuLy8gLSAkcXVlcnk6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT5cbi8vIC0gJG5vLXF1ZXJ5OiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1tZWRpYShcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgJG9sZC1jb250ZXh0OiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgJG5hbWU6IGlmKG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkcXVlcnkpLCAkcXVlcnksIG51bGwpO1xuICAkcXVlcnk6IHN1c3ktZ2V0LW1lZGlhKCRxdWVyeSk7XG4gICRxdWVyeTogc3VzeS1wYXJzZS1tZWRpYSgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkcXVlcnksICRuYW1lKTtcblxuICBAaWYgJG5vLXF1ZXJ5IGFuZCB0eXBlLW9mKCRuby1xdWVyeSkgIT0gc3RyaW5nIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSB7XG4gICAgQG1lZGlhICN7c3VzeS1yZW5kZXItbWVkaWEoJHF1ZXJ5KX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJG5vLXF1ZXJ5KSA9PSBzdHJpbmcge1xuICAgICAgI3skbm8tcXVlcnl9ICYge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJG9sZC1jb250ZXh0LCAkY2xlYW46IHRydWUpO1xufVxuXG5cbi8vIE1lZGlhIFJvdXRlclxuLy8gLS0tLS0tLS0tLS0tXG4vLyBSb3V0IG1lZGlhIGFyZ3VtZW50cyB0byB0aGUgY29ycmVjdCBtaXhpbi5cbkBtaXhpbiBzdXN5LW1lZGlhLXJvdXRlcihcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChicmVha3BvaW50LCAobWl4aW46IGJyZWFrcG9pbnQpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktbWVkaWEoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFVwZGF0ZSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBTZXQgdGhlIG5ldyBtZWRpYSBjb250ZXh0XG5AbWl4aW4gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcXVlcnksXG4gICRuYW1lOiBudWxsLFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJHF1ZXJ5OiBtYXAtbWVyZ2UoKG5hbWU6ICRuYW1lKSwgJHF1ZXJ5KTtcblxuICBAaWYgJGNsZWFuIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogJHF1ZXJ5ICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiBtYXAtbWVyZ2UoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRxdWVyeSkgIWdsb2JhbDtcbiAgfVxufVxuXG5cbi8vIE1lZGlhIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgZnVsbCBtZWRpYSBjb250ZXh0LCBvciBhIHNpbmdsZSBtZWRpYSBwcm9wZXJ0eSAoZS5nLiBtaW4td2lkdGgpXG5AZnVuY3Rpb24gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcHJvcGVydHk6IGZhbHNlXG4pIHtcbiAgQGlmICRwcm9wZXJ0eSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcHJvcGVydHkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICB9XG59XG5cblxuLy8gR2V0IE1lZGlhXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBhIG5hbWVkIG1lZGlhLXF1ZXJ5IGZyb20gJHN1c3ktbWVkaWEuXG4vLyAtICRuYW1lOiA8a2V5PlxuQGZ1bmN0aW9uIHN1c3ktZ2V0LW1lZGlhKFxuICAkbmFtZVxuKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJG5hbWUpIHtcbiAgICAkbWFwLXZhbHVlOiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCAkbmFtZSk7XG4gICAgQGlmICgkbmFtZSA9PSAkbWFwLXZhbHVlKSB7XG4gICAgICAkbmFtZTogJG1hcC12YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRuYW1lOiBzdXN5LWdldC1tZWRpYSgkbWFwLXZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuYW1lO1xufVxuXG5cbi8vIFJlbmRlciBNZWRpYVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBCdWlsZCBhIG1lZGlhLXF1ZXJ5IHN0cmluZyBmcm9tIHZhcmlvdXMgbWVkaWEgc2V0dGluZ3NcbkBmdW5jdGlvbiBzdXN5LXJlbmRlci1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG91dHB1dDogbnVsbDtcbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHF1ZXJ5IHtcbiAgICAkc3RyaW5nOiBudWxsO1xuXG4gICAgQGlmICRwcm9wZXJ0eSA9PSBtZWRpYSB7XG4gICAgICAkc3RyaW5nOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RyaW5nOiAnKCN7JHByb3BlcnR5fTogI3skdmFsdWV9KSc7XG4gICAgfVxuXG4gICAgJG91dHB1dDogaWYoJG91dHB1dCwgJyN7JG91dHB1dH0gYW5kICN7JHN0cmluZ30nLCAkc3RyaW5nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuXG4vLyBQYXJzZSBNZWRpYVxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBwYXJzZWQgbWVkaWEtcXVlcnkgc2V0dGluZ3MgYmFzZWQgb24gc2hvcnRoYW5kXG5AZnVuY3Rpb24gc3VzeS1wYXJzZS1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG1xOiBudWxsO1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09IG1hcCB7XG4gICAgJG1xOiAkcXVlcnk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IG51bWJlciB7XG4gICAgJG1xOiAobWluLXdpZHRoOiAkcXVlcnkpO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBsaXN0IGFuZCBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gbnVtYmVyIHtcbiAgICAgICRtcTogKFxuICAgICAgICBtaW4td2lkdGg6IG1pbigkcXVlcnkuLi4pLFxuICAgICAgICBtYXgtd2lkdGg6IG1heCgkcXVlcnkuLi4pLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtcTogKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkbXE6IChtZWRpYTogJyN7JHF1ZXJ5fScpO1xuICB9XG5cbiAgQHJldHVybiAkbXE7XG59XG4iLCIvKlxuKiBTY3V0LCBhIGNvbGxlY3Rpb24gb2YgU2FzcyB1dGlsaXRpZXNcbiogdG8gZWFzZSBhbmQgaW1wcm92ZSBvdXIgaW1wbGVtZW50YXRpb25zIG9mIGNvbW1vbiBzdHlsZS1jb2RlIHBhdHRlcm5zLlxuKiB2MS40LjBcbiogRG9jcyBhdCBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dFxuKi9cblxuQG1peGluIHNjdXQtY2xlYXJmaXgge1xuXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jbGVhcmZpeCB7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG59XG5AbWl4aW4gc2N1dC1saXN0LXVuc3R5bGVkKFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZmxvYXRlZCAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRkaXI6IGxlZnQsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcblxuICAmID4gbGkge1xuICAgIGZsb2F0OiAkZGlyO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLSN7JGRpcn06ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWZsb2F0ZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZDtcbn1cblxuQGZ1bmN0aW9uIHNjdXQtYXV0b09yVmFsdWUgKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gYSBvciAkdmFsID09IGF1dG8ge1xuICAgIEByZXR1cm4gYXV0bztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LWNvb3JkcyAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgJHRvcDogbnRoKCRjb29yZGluYXRlcywgMSk7XG4gICRyaWdodDogbnRoKCRjb29yZGluYXRlcywgMik7XG4gICRib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpO1xuICAkbGVmdDogbnRoKCRjb29yZGluYXRlcywgNCk7XG5cbiAgQGlmICR0b3AgIT0gbiB7XG4gICAgdG9wOiBzY3V0LWF1dG9PclZhbHVlKCR0b3ApO1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbiB7XG4gICAgcmlnaHQ6IHNjdXQtYXV0b09yVmFsdWUoJHJpZ2h0KTtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBuIHtcbiAgICBib3R0b206IHNjdXQtYXV0b09yVmFsdWUoJGJvdHRvbSk7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG4ge1xuICAgIGxlZnQ6IHNjdXQtYXV0b09yVmFsdWUoJGxlZnQpO1xuICB9XG5cbn1cbkBmdW5jdGlvbiBzY3V0LXN0cmlwLXVuaXQgKFxuICAkbnVtXG4pIHtcblxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LWVtIChcbiAgJHBpeGVscyxcbiAgJGJhc2U6ICRzY3V0LWVtLWJhc2Vcbikge1xuXG4gIC8vICRiYXNlIGNvdWxkIGJlIGluIGVtIG9yIHB4IChubyB1bml0ID0gcHgpLlxuICAvLyBBZGp1c3QgYWNjb3JkaW5nbHkgdG8gY3JlYXRlIGEgJGRpdmlzb3IgdGhhdFxuICAvLyBzZXJ2ZXMgYXMgY29udGV4dCBmb3IgJHBpeGVscy5cbiAgJG11bHRpcGxpZXI6IGlmKHVuaXQoJGJhc2UpID09IGVtLCAxNiwgMSk7XG4gICRkaXZpc29yOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UpICogJG11bHRpcGxpZXI7XG5cbiAgJGVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tZW1zOiAoc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJGRpdmlzb3IpICogMWVtO1xuICAgICRlbS12YWxzOiBhcHBlbmQoJGVtLXZhbHMsICR2YWwtaW4tZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJGVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJGVtLXZhbHM7XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtcmVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1yZW0gKFxuICAkcGl4ZWxzXG4pIHtcblxuICAkcmVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcmVtczogc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJHNjdXQtcmVtLWJhc2UgKiAxcmVtO1xuICAgICRyZW0tdmFsczogYXBwZW5kKCRyZW0tdmFscywgJHZhbC1pbi1yZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHJlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJHJlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcmVtLXZhbHM7XG4gIH1cblxufVxuQG1peGluIHNjdXQtYm9yZGVyIChcbiAgJHN0eWxlLFxuICAkc2lkZXM6IG4geVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2lkZXMpID09IDIge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkc2lkZXMpID09IDQge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAzKSAhPSBuIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDQpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJTY3V0LWJvcmRlciByZXF1aXJlcyBhICRzaWRlcyBhcmd1bWVudCBvZiAyIG9yIDQgdmFsdWVzLlwiXG4gIH1cblxufVxuQG1peGluIHNjdXQtY2lyY2xlIChcbiAgJHNpemUsXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgQGlmICRjb2xvciA9PSBpbmhlcml0IHtcbiAgICAvLyBJZiB1c2VyIHdhbnRzIHRvIGluaGVyaXQgdGhlIGNvbG9yLFxuICAgIC8vIHRha2UgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgYm9yZGVyXG4gICAgLy8gY29sb3IgZGVmYXVsdHMgdG8gdGhlIHRleHQgY29sb3Igb2YgdGhlIGVsZW1lbnQuXG4gICAgYm9yZGVyLXdpZHRoOiAkc2l6ZSAvIDI7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgd2lkdGg6IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwganVzdCB1c2UgYmFja2dyb3VuZC1jb2xvci5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICB3aWR0aDogJHNpemU7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY29sb3Itc3dhcCAoXG4gICRvZmYsXG4gICRvbixcbiAgJGR1cmF0aW9uOiAwLFxuICAkYmc6IGZhbHNlXG4pIHtcblxuICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBudWxsO1xuICAkb2ZmLWlzLWxpc3Q6IHR5cGUtb2YoJG9mZikgPT0gbGlzdDtcbiAgJG9uLWlzLWxpc3Q6IHR5cGUtb2YoJG9uKSA9PSBsaXN0O1xuXG4gIC8vIElmICRvZmYgSVMgYSBsaXN0LFxuICAvLyBhc3NpZ24gY29sb3IgYW5kIGJhY2tncm91bmQtY29sb3IuXG4gIEBpZiAkb2ZmLWlzLWxpc3Qge1xuICAgIGNvbG9yOiBudGgoJG9mZiwgMSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvZmYsIDIpO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3IsIGNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgVFJVRSxcbiAgLy8gYXNzaWduIGJhY2tncm91bmQtY29sb3IuXG4gIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvZmYtaXMtbGlzdCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIEZBTFNFLFxuICAvLyBhc3NpZ24gY29sb3IuXG4gIEBlbHNlIHtcbiAgICBjb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBjb2xvcjtcbiAgfVxuXG4gIC8vIE9ubHkgc2V0LXVwIHRyYW5zaXRpb24gaWYgJGR1cmF0aW9uICE9IDAuXG4gIEBpZiAkZHVyYXRpb24gIT0gMCB7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogJHRyYW5zaXRpb24tcHJvcGVydGllcztcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAkZHVyYXRpb247XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcblxuICAgIC8vICRvbiBpcyB0cmVhdGVkIHRoZSBzYW1lIGFzICRvZmYsIGFib3ZlLlxuICAgIEBpZiAkb24taXMtbGlzdCB7XG4gICAgICBjb2xvcjogbnRoKCRvbiwgMSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9uLCAyKTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb24taXMtbGlzdCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9uO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkb247XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWhkLWJwIChcbiAgJHJhdGlvOiAxLjNcbikge1xuXG4gIEBtZWRpYSAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogKCRyYXRpbyAvIDEpKSxcbiAgICAgICAgICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gICAgICAgICAobWluLXJlc29sdXRpb246IChyb3VuZCg5NiAqICRyYXRpbykgKiAxZHBpKSkge1xuICAgIEBjb250ZW50O1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGlkZS12aXN1YWxseSB7XG5cbiAgYm9yZGVyOiAwO1xuICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG5cbn1cblxuJXNjdXQtaGlkZS12aXN1YWxseSB7XG4gIEBpbmNsdWRlIHNjdXQtaGlkZS12aXN1YWxseTtcbn1cbkBtaXhpbiBzY3V0LWltYWdlLXJlcGxhY2Uge1xuXG4gIHRleHQtaW5kZW50OiAxMDIlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuXG59XG5cbiVzY3V0LWltYWdlLXJlcGxhY2Uge1xuICBAaW5jbHVkZSBzY3V0LWltYWdlLXJlcGxhY2U7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1yZW0gYW5kIHNjdXQtc3RyaXAtdW5pdFxuXG5AbWl4aW4gc2N1dC1yZW0tZmFsbGJhY2sgKFxuICAkcGl4ZWxzLFxuICAkcHJvcGVydHk6IGZvbnQtc2l6ZVxuKSB7XG5cbiAgJHB4LXZhbHM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1weDogc2N1dC1zdHJpcC11bml0KCR2YWwpICogMXB4O1xuICAgICRweC12YWxzOiBhcHBlbmQoJHB4LXZhbHMsICR2YWwtaW4tcHgpO1xuICB9XG4gICRyZW0tdmFsczogc2N1dC1yZW0oJHBpeGVscyk7XG5cbiAgI3skcHJvcGVydHl9OiAkcHgtdmFscztcbiAgI3skcHJvcGVydHl9OiAkcmVtLXZhbHM7XG5cbn1cbkBtaXhpbiBzY3V0LXJlc2V0LWJvcmRlci1ib3gge1xuICAvLyBNYWtlIGV2ZXJ5dGhpbmcgYSBib3JkZXItYm94LCBiZWNhdXNlIHdoeSBub3Q/XG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYW50aWFsaWFzIHtcbiAgLy8gQW50aWFsaWFzIVxuICBib2R5IHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1zZW1hbnRpY2l6ZSB7XG4gIC8vIE1ha2UgaGVhZGVycyBhbmQgPGI+IHNlbWFudGljLCBub3QgcHJlc2VudGF0aW9uYWwuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcG9pbnRlciB7XG4gIC8vIENsaWNrYWJsZSBmb3JtIGVsZW1lbnRzIHNob3VsZCBoYXZlIGEgcG9pbnRlci5cbiAgbGFiZWwsXG4gIHNlbGVjdCxcbiAgb3B0aW9uLFxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1mb3JtIHtcbiAgZmllbGRzZXQge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1idXR0b24ge1xuICAvLyBSZXNldCBkZWZhdWx0IGJ1dHRvbiBzdHlsZXMsIHdoaWNoIGFyZSBuZXZlciB1c2VkLlxuICBidXR0b24sXG4gIFt0eXBlPVwiYnV0dG9uXCJdLFxuICBbdHlwZT1cInN1Ym1pdFwiXSxcbiAgW3R5cGU9XCJyZXNldFwiXSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wYXJhZ3JhcGgge1xuICAvLyBTb21lIHBhcmFncmFwaCBtYXJnaW5zIGp1c3QgZ2V0IGluIHRoZSB3YXkuXG4gIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICBwOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1tZWRpYSB7XG4gIC8vIFlvdSB3YW50IHRoZXNlIGVsZW1lbnRzIGZsdWlkLCBwcm9iYWJseS5cbiAgaW1nLFxuICB2aWRlbyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1maWd1cmUge1xuICAvLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zLlxuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG4vLyBDYWxsIHRoZW0gYWxsLCBtaW51cyBleGNsdXNpb25zIVxuQG1peGluIHNjdXQtcmVzZXQgKCRleGNsdWRlOiBmYWxzZSkge1xuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBib3JkZXItYm94KSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYm9yZGVyLWJveDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBhbnRpYWxpYXMpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1hbnRpYWxpYXM7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgc2VtYW50aWNpemUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1zZW1hbnRpY2l6ZTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwb2ludGVyKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcG9pbnRlcjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmb3JtKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZm9ybTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBidXR0b24pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1idXR0b247XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcGFyYWdyYXBoKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcGFyYWdyYXBoO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIG1lZGlhKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtbWVkaWE7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZmlndXJlKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZmlndXJlO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXNlbGVjdGVkIChcbiAgJGFjdGl2ZTogZmFsc2Vcbikge1xuXG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXRyaWFuZ2xlIChcbiAgJGRpcmVjdGlvbjogcmlnaHQsXG4gICRzaXplOiAwLjc1ZW0sXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuICAvLyBGb3IgaW1wcm92ZWQgYXBwZWFyYW5jZSBpbiBzb21lIFdlYmtpdCBicm93c2Vyc1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG5cbiAgLy8gU2V0IHVwIHNvbWUgdmFyaWFibGVzXG4gICR3aWR0aDogbnVsbDtcbiAgJGhlaWdodDogbnVsbDtcbiAgJGJvcmRlci13aWR0aHM6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJHNpemUpID09IGxpc3Qge1xuICAgICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgICAkaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkd2lkdGg6ICRzaXplO1xuICAgICRoZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgLy8gRm9yIHVwIGFuZCBkb3duLCB3aWR0aCBnZXRzIHR3byBib3JkZXJzIGJ1dCBoZWlnaHQgb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIHNlY29uZCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAkaGVpZ2h0ICgkd2lkdGggLyAyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIC8vIEZvciByaWdodCBhbmQgbGVmdCwgaGVpZ2h0IGdldHMgdHdvIGJvcmRlcnMgYnV0IHdpZHRoIG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBmaXJzdCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICR3aWR0aDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gRm9yIHJpZ2h0IHRyaWFuZ2xlcyAodGhlIHJlc3QpLCBib3RoIHNpZGVzIGdldCB0d28gYm9yZGVycyxcbiAgICAvLyBzbyBkaXZpZGUgYm90aCBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgKCR3aWR0aCAvIDIpO1xuICB9XG5cbiAgYm9yZGVyLXdpZHRoOiAkYm9yZGVyLXdpZHRocztcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcblxuXG4gIC8vIFNUQU5EQVJEIFRSSUFOR0xFU1xuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gQ09STkVSIFRSSUFOR0xFU1xuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHRvcC1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gdG9wLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHRvcC1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXRyaWFuZ2xlIHtcbiAgQGluY2x1ZGUgc2N1dC10cmlhbmdsZTtcbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1hYnNvbHV0ZWx5IChcbiAgJGRpbWVuc2lvbnNcbikge1xuXG4gICR3aWR0aDogbnRoKCRkaW1lbnNpb25zLCAxKTtcbiAgJGhlaWdodDogbnRoKCRkaW1lbnNpb25zLCAyKTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICR3aWR0aCAhPSBuIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogKC0kd2lkdGggLyAyKTtcbiAgfVxuXG4gIEBpZiAkaGVpZ2h0ICE9IG4ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAoLSRoZWlnaHQgLyAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYmxvY2sgKFxuICAkbWF4LXdpZHRoOiBmYWxzZVxuKSB7XG5cbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgQGlmICRtYXgtd2lkdGgge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNlbnRlci1ibG9jayB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLWJsb2NrO1xufVxuXG5AbWl4aW4gc2N1dC1jZW50ZXItdHJhbnNmb3JtIChcbiAgJGF4aXM6IGZhbHNlIC8vIG9yIHggb3IgeVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkYXhpcyAhPSB4IHtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gIH1cblxuICBAaWYgJGF4aXMgIT0geSB7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxuXG4gICR0cmFuc2xhdGUtdmFsOiBudWxsO1xuXG4gIEBpZiBub3QoJGF4aXMpIHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHgge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHkge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG5cbiAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICAtbXMtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS14IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHgpO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbkBtaXhpbiBzY3V0LWZpbGwgKFxuICAkd2lkdGgtaGVpZ2h0OiBmYWxzZVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIEBpZiAkd2lkdGgtaGVpZ2h0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWZpbGwge1xuICBAaW5jbHVkZSBzY3V0LWZpbGw7XG59XG5AbWl4aW4gc2N1dC1saXN0LWN1c3RvbSAoXG4gICRjb250ZW50OiBcIlxcMjAyMlwiLFxuICAkbWFya2VyLXdpZHRoOiAwLjc1ZW0sXG4gICRwYWQ6IDAsXG4gICRuby1tYXJnaW46IGZhbHNlXG4pIHtcblxuICAkY29udGVudC12YWw6IG51bGw7XG4gICRjb3VudGVyOiBpbmRleCgkY29udGVudCwgY291bnQpO1xuICBAaWYgJGNvdW50ZXIge1xuICAgIEBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDMge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciwgbnRoKCRjb250ZW50LCAzKSludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIGlmIGxlbmd0aCgkY29udGVudCkgPT0gMiB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlcik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkY29udGVudC12YWw6ICRjb250ZW50O1xuICB9XG5cbiAgcGFkZGluZy1sZWZ0OiAkbWFya2VyLXdpZHRoICsgJHBhZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmID4gbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgJGNvdW50ZXIge1xuICAgICAgY291bnRlci1pbmNyZW1lbnQ6IHNjdXRsaXN0Y291bnRlcjtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJGNvbnRlbnQtdmFsO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAtJG1hcmtlci13aWR0aDtcbiAgICAgIHdpZHRoOiAkbWFya2VyLXdpZHRoO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtZmxvYXRlZGAsIHdoaWNoIGRlcGVuZHMgaW4gdHVybiBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZGl2aWRlZCAoXG4gICRkaXZpZGVyOiBcInxcIixcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGRpcjogbGVmdCxcbiAgJGhlaWdodDogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkKCRkaXI6ICRkaXIsICRuby1tYXJnaW46ICRuby1tYXJnaW4pO1xuXG4gICRwc2V1ZG86IGlmKCRkaXIgPT0gbGVmdCwgJ2JlZm9yZScsICdhZnRlcicpO1xuXG4gIC8vIElmIGFuIGV4cGxpY2l0IGhlaWdodCBpcyBwYXNzZWQsXG4gIC8vIHRoaW5ncyBhcmUgZGlmZmVyZW50OiBBbGwgPGxpPnNcbiAgLy8gbmVlZCB0aGUgcHNldWRvLWVsZW1lbnQgKHRvIGZvcmNlIGhlaWdodCksXG4gIC8vIGJ1dCB0aGUgZmlyc3QncyBtdXN0IGJlIGhpZGRlbi5cblxuICBAaWYgJGhlaWdodCB7XG4gICAgJiA+IGxpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gICAgJiA+IGxpOiN7JHBzZXVkb30ge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgICYgPiBsaTpmaXJzdC1jaGlsZDojeyRwc2V1ZG99IHtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAmID4gbGkgKyBsaTojeyRwc2V1ZG99IHtcbiAgICBAaWYgbm90KCRoZWlnaHQpIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2U7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWJhciB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkO1xufVxuXG4lc2N1dC1saXN0LWJyZWFkY3J1bWIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZChcIi9cIik7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1pbmxpbmUgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtaW5saW5lIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWlubGluZTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LXB1bmN0dWF0ZWQgKFxuICAkZGl2aWRlcjogXCIsIFwiLFxuICAkZGlzcGxheTogaW5saW5lLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiAkZGlzcGxheTtcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1jb21tYSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1wdW5jdHVhdGVkO1xufVxuQG1peGluIHNjdXQtbWFyZ2luIChcbiAgJG1hcmdpblxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAxIGFuZCAkbWFyZ2luICE9IG4ge1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW47XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDIge1xuICAgICRtYXJnaW4teTogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgIEBpZiAkbWFyZ2luLXkgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXk7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAzIHtcbiAgICAkbWFyZ2luLXktdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi15LWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgIEBpZiAkbWFyZ2luLXktdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15LXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teS1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gNCB7XG4gICAgJG1hcmdpbi10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXJpZ2h0OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICAkbWFyZ2luLWxlZnQ6IG50aCgkbWFyZ2luLCA0KTtcbiAgICBAaWYgJG1hcmdpbi10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tcmlnaHQgIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4tcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1sZWZ0ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4tbGVmdDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtcGFkZGluZyAoXG4gICRwYWRkaW5nXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAxIGFuZCAkcGFkZGluZyAhPSBuIHtcbiAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAyIHtcbiAgICAkcGFkZGluZy15OiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgQGlmICRwYWRkaW5nLXkgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMyB7XG4gICAgJHBhZGRpbmcteS10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy15LWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICBAaWYgJHBhZGRpbmcteS10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteS10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXktYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDQge1xuICAgICRwYWRkaW5nLXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy1yaWdodDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgJHBhZGRpbmctbGVmdDogbnRoKCRwYWRkaW5nLCA0KTtcbiAgICBAaWYgJHBhZGRpbmctdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXJpZ2h0ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmctcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmctYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctbGVmdCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmctbGVmdDtcbiAgICB9XG4gIH1cbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtYWJzb2x1dGUgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1hYnNvbHV0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtYWJzb2x1dGU7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWZpeGVkIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogZml4ZWQ7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtZml4ZWQge1xuICBAaW5jbHVkZSBzY3V0LWZpeGVkO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1yZWxhdGl2ZSAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5AbWl4aW4gc2N1dC1yYXRpby1ib3ggKFxuICAkcmF0aW86IDEvMVxuKSB7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFRoZSBjb250YWluZXIncyBoZWlnaHQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVcbiAgLy8gY29udGFpbmVyJ3Mgd2lkdGgsIGlzIHNldCBieSBhc3NpZ25pbmdcbiAgLy8gcGFkZGluZy10b3AgdG8gYSBwc2V1ZG8tZWxlbWVudC5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHBhZGRpbmctdG9wOiAoMSAvICRyYXRpbykgKiAxMDAlO1xuICB9XG5cbn1cblxuJXNjdXQtcmF0aW8tYm94IHtcbiAgQGluY2x1ZGUgc2N1dC1yYXRpby1ib3g7XG59XG5AbWl4aW4gc2N1dC1zaXplKFxuICAkc2l6ZVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2l6ZSkgPT0gMSB7XG4gICAgd2lkdGg6ICAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkc2l6ZSkgPT0gMiB7XG4gICAgd2lkdGg6ICBudGgoJHNpemUsIDEpO1xuICAgIGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogLSRoZWlnaHQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgI3skd3JhcHBlcn06YWZ0ZXIsXG4gICN7JGZvb3Rlcn0ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxuXG59XG5cbi8vIGRlcHJlY2F0ZWRcbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXIgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pe1xuICBAaW5jbHVkZSBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQoJGhlaWdodCwgJHdyYXBwZXIsICRmb290ZXIpO1xufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1mbHVpZCAoXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAjeyRmb290ZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgaGVpZ2h0OiAxcHg7XG4gIH1cblxufVxuQG1peGluIHNjdXQtdmNlbnRlci1pYiAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgLy8gVGhlIGlubmVyIGVsZW1lbnQgaXMgdmVydGljYWxseSBjZW50ZXJlZFxuICAvLyBieSBtaWRkbGUtYWxpZ25pbmcgaXQgd2l0aCBhbiBpbmxpbmUgcHNldWRvLWVsZW1lbnRcbiAgLy8gd2hvc2UgaGVpZ2h0IGlzIDEwMCUuXG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIC8vIEEgc21hbGwgbmVnYXRpdmUgcmlnaHQgbWFyZ2luIGlzIHNldFxuICAgIC8vIHRvIGFjY291bnQgZm9yIHRoZSBkZWZhdWx0XG4gICAgLy8gd29yZC1zcGFjaW5nIG9mIGlubGluZS1ibG9jay5cbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1ZW07XG4gIH1cblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdmNlbnRlci1pYiB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci1pYjtcbn1cblxuQG1peGluIHNjdXQtdmNlbnRlci1saCAoXG4gICRoZWlnaHRcbikge1xuXG4gIGhlaWdodDogJGhlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWlnaHQ7XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItdGQgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIGRpc3BsYXk6IHRhYmxlO1xuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuXG4lc2N1dC12Y2VudGVyLXRkIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXRkO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtY2VudGVyLXRyYW5zZm9ybVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLXR0ICgpIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG4lc2N1dC12Y2VudGVyLXR0IHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXR0O1xufVxuLy8gc3BhY2VcbiRzY3V0LXNwYWNlOiBcIlxcMDAyMFwiO1xuLy8gbm9uLWJyZWFraW5nIHNwYWNlXG4kc2N1dC1uYnNwOiBcIlxcMDBhMFwiO1xuXG4vLyBxdW90YXRpb24gbWFya1xuJHNjdXQtcXVvdDogXCJcXDAwMjJcIjtcbi8vIGxlZnQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1sc3F1bzogXCJcXDIwMThcIjtcbi8vIHJpZ2h0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtcnNxdW86IFwiXFwyMDE5XCI7XG4vLyBsZWZ0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtbGRxdW86IFwiXFwyMDFDXCI7XG4vLyByaWdodCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LXJkcXVvOiBcIlxcMjAxRFwiO1xuLy8gbGVmdCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxzYXF1bzogXCJcXDIwMzlcIjtcbi8vIHJpZ2h0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcnNhcXVvOiBcIlxcMjAzQVwiO1xuLy8gbGVmdCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxhcXVvOiBcIlxcMDBhYlwiO1xuLy8gcmlnaHQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yYXF1bzogXCJcXDAwYmJcIjtcblxuLy8gZW0gZGFzaCAobXV0dG9uKVxuJHNjdXQtbWRhc2g6IFwiXFwyMDE0XCI7XG4vLyBlbiBkYXNoIChudXQpXG4kc2N1dC1uZGFzaDogXCJcXDIwMTNcIjtcbi8vIGh5cGhlblxuJHNjdXQtaHlwaGVuOiBcIlxcMjAxMFwiO1xuXG4vLyBhbXBlcnNhbmRcbiRzY3V0LWFtcDogXCJcXDAwMjZcIjtcbi8vIGdyZWF0ZXIgdGhhblxuJHNjdXQtZ3Q6IFwiXFwwMDNlXCI7XG4vLyBsZXNzIHRoYW5cbiRzY3V0LWx0OiBcIlxcMDAzY1wiO1xuLy8gdGltZXNcbiRzY3V0LXRpbWVzOiBcIlxcMDBEN1wiO1xuLy8gYmlnIHRpbWVzXG4kc2N1dC1iaWd0aW1lczogXCJcXDI3MTVcIjtcbi8vIGNoZWNrbWFya1xuJHNjdXQtY2hlY2ttYXJrOiBcIlxcMjcxM1wiO1xuXG4vLyBzZWN0aW9uIHNpZ24gKGRvdWJsZSBTLCBodXJyaWNhbmUsIHNlY3Rpb25hbCBzeW1ib2wsIHRoZSBsZWdhbCBkb3VnaG51dCwgc2lnbnVtIHNlY3Rpb25pcylcbiRzY3V0LXNlY3Q6IFwiXFwwMGE3XCI7XG4vLyBwYXJhZ3JhcGggc3ltYm9sIChwaWxjcm93KVxuJHNjdXQtcGFyYTogXCJcXDAwYjZcIjtcblxuLy8gbWlkZG90IChpbnRlcnB1bmN0LCBpbnRlcnBvaW50KVxuJHNjdXQtbWlkZG90OiBcIlxcMDBiN1wiO1xuLy8gby1zbGFzaCAoc2xhc2hlZCBvKVxuJHNjdXQtb3NsYXNoOiBcIlxcMDBmOFwiO1xuLy8gYnVsbGV0XG4kc2N1dC1idWxsOiBcIlxcMjAyMlwiO1xuLy8gd2hpdGUgYnVsbGV0XG4kc2N1dC13aGlidWxsOiBcIlxcMjVFNlwiO1xuLy8gaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtaGVsbGlwOiBcIlxcMjAyNlwiO1xuLy8gdmVydGljYWwgZWxsaXBzaXNcbiRzY3V0LXZlbGxpcDogXCJcXDIyRUVcIjtcbi8vIG1pZGxpbmUgaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtbWlkaGVsbGlwOiBcIlxcMjJFRlwiO1xuXG4vLyB1cC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtdXRyaTogXCJcXDI1YjJcIjtcbi8vIGRvd24tcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWR0cmk6IFwiXFwyNWJjXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1sdHJpOiBcIlxcMjVjMFwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXJ0cmk6IFwiXFwyNWI2XCI7XG4vLyB1cC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtdXN0cmk6IFwiXFwyNWI0XCI7XG4vLyBkb3duLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1kc3RyaTogXCJcXDI1YmVcIjtcbi8vIGxlZnQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWxzdHJpOiBcIlxcMjVjMlwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXJzdHJpOiBcIlxcMjViOFwiO1xuLy8gZGlhbW9uZFxuJHNjdXQtZGlhbW9uZDogXCJcXDI1YzZcIjtcbi8vIGZpc2hleWVcbiRzY3V0LWZpc2hleWU6IFwiXFwyNWM5XCI7XG4vLyBidWxsc2V5ZVxuJHNjdXQtYnVsbHNleWU6IFwiXFwyNWNlXCI7XG4vLyBjaXJjbGVcbiRzY3V0LWNpcmNsZTogXCJcXDI1Y2ZcIjtcbi8vIHdoaXRlIGNpcmNsZVxuJHNjdXQtd2hpdGVjaXJjbGU6IFwiXFwyNWNiXCI7XG4vLyBzcXVhcmVcbiRzY3V0LXNxdWFyZTogXCJcXDI1YTBcIjtcbi8vIHdoaXRlIHNxdWFyZVxuJHNjdXQtd2hpdGVzcXVhcmU6IFwiXFwyNWExXCI7XG4vLyBzbWFsbCBzcXVhcmVcbiRzY3V0LXNzcXVhcmU6IFwiXFwyNWFhXCI7XG4vLyBzbWFsbCB3aGl0ZSBzcXVhcmVcbiRzY3V0LXN3aGl0ZXNxdWFyZTogXCJcXDI1YWJcIjtcblxuLy8gZ2VuZXJhbCBjdXJyZW5jeVxuJHNjdXQtY3VycmVuY3k6IFwiXFwwMGE0XCI7XG4vLyBjZW50XG4kc2N1dC1jZW50OiBcIlxcMDBhMlwiO1xuLy8gZG9sbGFyXG4kc2N1dC1kb2xsYXI6IFwiXFwwMDI0XCI7XG4vLyBwb3VuZFxuJHNjdXQtcG91bmQ6IFwiXFwwMGEzXCI7XG4vLyBldXJvXG4kc2N1dC1ldXJvOiBcIlxcMjBhY1wiO1xuLy8geWVuXG4kc2N1dC15ZW46IFwiXFwwMGE1XCI7XG4vLyBydXBlZVxuJHNjdXQtcnVwZWU6IFwiXFwyMEI5XCI7XG5AZnVuY3Rpb24gbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSkge1xuICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgYHNyY2AgdmFsdWVzLCBpbiBvcmRlciwgdGhhdFxuICAvLyBhIGdvb2QgYEBmb250LWZhY2VgIHdpbGwgbmVlZCwgaW5jbHVkaW5nIG9ubHlcbiAgLy8gdGhvc2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gdGhlIGxpc3QgYCRmb3JtYXRzYC5cbiAgJHJlc3VsdDogKCk7XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgJGVvdC12YWw6IHVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkZW90LXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZjIpIHtcbiAgICAkd29mZjItdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmMi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYpIHtcbiAgICAkd29mZi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgdHRmKSB7XG4gICAgJHR0Zi12YWw6IHVybCgnI3skZmlsZS1wYXRofS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR0dGYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBzdmcpIHtcbiAgICAkc3ZnLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkc3ZnLXZhbCwgY29tbWEpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQG1peGluIHNjdXQtZm9udC1mYWNlIChcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Z1xuKSB7XG5cbiAgQGlmIGluZGV4KCdpdGFsaWMnICdvYmxpcXVlJywgJHdlaWdodCkge1xuICAgICRzdHlsZTogJHdlaWdodDtcbiAgICAkd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcblxuICAgIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgICBzcmM6IHVybCgnI3skZmlsZS1wYXRofS5lb3QnKTtcbiAgICB9XG4gICAgc3JjOiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KTtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhhbmdpbmctaW5kZW50IChcbiAgJGluZGVudDogMWVtXG4pIHtcblxuICAvLyBwYWRkaW5nLWxlZnQgY3JlYXRlcyB0aGUgaW5kZW50LFxuICAvLyB3aGlsZSB0ZXh0LWluZGVudCBwdWxscyB0aGUgZmlyc3QgbGluZVxuICAvLyBiYWNrIHRvIHRoZSBlZGdlLlxuXG4gIHBhZGRpbmctbGVmdDogJGluZGVudDtcbiAgdGV4dC1pbmRlbnQ6IC0kaW5kZW50O1xuXG59XG5cbiVzY3V0LWhhbmdpbmctaW5kZW50IHtcbiAgQGluY2x1ZGUgc2N1dC1oYW5naW5nLWluZGVudDtcbn1cbkBtaXhpbiBzY3V0LWluZGVudGVkLXBzIChcbiAgJGluZGVudDogMS41ZW0sXG4gICRuby1maXJzdC1pbmRlbnQ6IHRydWVcbikge1xuXG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LWluZGVudDogJGluZGVudDtcbiAgfVxuXG4gIEBpZiAkbm8tZmlyc3QtaW5kZW50IHtcbiAgICBwOmZpcnN0LW9mLXR5cGUge1xuICAgICAgdGV4dC1pbmRlbnQ6IDA7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtaW5kZW50ZWQtcHMge1xuICBAaW5jbHVkZSBzY3V0LWluZGVudGVkLXBzO1xufVxuQG1peGluIHNjdXQta2V5LXZhbCAoXG4gICRkaXZpZGVyOiBcIjpcIixcbiAgJHBhZDogMC4yNWVtLFxuICAkaW5kZW50OiAxZW0sXG4gICRzcGFjaW5nOiAwLFxuICAkcGFkLWxlZnQ6IDBcbikge1xuXG4gICYgPiBkdCB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogJHBhZDtcbiAgICAgIEBpZiAkcGFkLWxlZnQgIT0gMCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkcGFkLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJiA+IGRkIHtcbiAgICBtYXJnaW4tbGVmdDogJGluZGVudDtcbiAgICBAaWYgJHNwYWNpbmcgIT0gMCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1rZXktdmFsIHtcbiAgQGluY2x1ZGUgc2N1dC1rZXktdmFsO1xufVxuQG1peGluIHNjdXQtbGluay1iYiAoXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHdpZHRoOiAxcHhcbikge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBib3JkZXItYm90dG9tLXdpZHRoOiAkd2lkdGg7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gIH1cblxufVxuXG4lc2N1dC1saW5rLWJiIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLWJiO1xufVxuLy8gU0NVVCBMSU5LIFVOU1RZTEVEXG4vLyBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dC8jbGluay11bnN0eWxlZFxuXG5AbWl4aW4gc2N1dC1saW5rLXVuc3R5bGVkKCkge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGluaGVyaXQ7XG5cbn1cblxuJXNjdXQtbGluay11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay11bnN0eWxlZCgpO1xufVxuXG5AbWl4aW4gc2N1dC1yZXZlcnNlLWl0YWxpY3MgKFxuICAkZWxlbWVudHM6IG51bGxcbikge1xuXG4gICRlbGVtZW50LWxpc3Q6IGVtLCBjaXRlLCBpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICN7am9pbigkZWxlbWVudC1saXN0LCAkZWxlbWVudHMpfSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICB9XG5cbn1cblxuJXNjdXQtcmV2ZXJzZS1pdGFsaWNzIHtcbiAgQGluY2x1ZGUgc2N1dC1yZXZlcnNlLWl0YWxpY3M7XG59XG5cbkBtaXhpbiBzY3V0LXNpZGUtbGluZWQgKFxuICAkaGVpZ2h0OiAxcHgsXG4gICRzcGFjZTogMC41ZW0sXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHYtYWRqdXN0OiBmYWxzZSxcbiAgJGRvdWJsZTogZmFsc2Vcbikge1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA1MCU7XG5cbiAgICBib3JkZXItdG9wLXN0eWxlOiAkc3R5bGU7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogJGhlaWdodDtcblxuICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICR2LWFkanVzdCAhPSBmYWxzZSB7XG4gICAgICBib3R0b206ICR2LWFkanVzdDtcbiAgICB9XG5cbiAgICBAaWYgJGRvdWJsZSAhPSBmYWxzZSB7XG4gICAgICBoZWlnaHQ6ICRkb3VibGU7XG4gICAgICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAkaGVpZ2h0O1xuICAgICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICY6YmVmb3JlIHtcbiAgICByaWdodDogJHNwYWNlO1xuICAgIG1hcmdpbi1sZWZ0OiAtNTAlO1xuICB9XG4gICY6YWZ0ZXIge1xuICAgIGxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6IC01MCU7XG4gIH1cblxufVxuXG4lc2N1dC1zaWRlLWxpbmVkIHtcbiAgQGluY2x1ZGUgc2N1dC1zaWRlLWxpbmVkO1xufVxuQG1peGluIHNjdXQtdHJ1bmNhdGUge1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG59XG5cbiVzY3V0LXRydW5jYXRlIHtcbiAgQGluY2x1ZGUgc2N1dC10cnVuY2F0ZTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BsYWNlaG9sZGVyc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NvbG9yc1wiO1xuQGltcG9ydCBcInRvb2xraXQvZm9udHNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ludHJpbnNpYy1yYXRpb1wiO1xuQGltcG9ydCBcInRvb2xraXQvbmVzdGVkLWNvbnRleHRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BhcmFsbGF4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9ydGxcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RhcmdldFwiO1xuQGltcG9ydCBcInRvb2xraXQvdHJpYW5nbGVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NlbnRlclwiO1xuQGltcG9ydCBcInRvb2xraXQvdmlld3BvcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3VuZGVybGluZVwiO1xuQGltcG9ydCBcInRvb2xraXQvYXJ0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9zZXQtbXVsdGlwbGVcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kVG9vbGtpdC1TZXR0aW5nczogKFxuICAnY2xlYXJmaXggZXh0ZW5kJzogZmFsc2UsXG4gICdjb2xvciBzdGFjayBhbW91bnRzJzogMjUlIDUwJSA3NSUgODUlIDkwJSxcbiAgJ3RpbnQgc2hhZGUgYW1vdW50cyc6IDc1JSA1MCUgMjUlLFxuICAndGludCBjb2xvcic6ICNmZmYsXG4gICdzaGFkZSBjb2xvcic6ICMwMDAsXG4gICdjb2xvciBzY2FsZSBzdGVwcyc6IDYsXG4gICdsaWdhdHVyZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2ZvbnQgZmFjZSB3ZWlnaHQnOiBub3JtYWwsXG4gICdmb250IGZhY2Ugc3R5bGUnOiBub3JtYWwsXG4gICdmb250IGZhY2UgaW5saW5lIHdvZmYnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBleHRlbmQnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBzcGVhayc6IGZhbHNlLFxuICAnZmFkZSBpbiBkdXJhdGlvbic6IDFzLFxuICAnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJzogJy53Zi1sb2FkaW5nJyxcbiAgJ2ZhZGUgaW4gZXh0ZW5kJzogZmFsc2UsXG4gICdpbnRyaW5zaWMgcmF0aW8nOiAxNi85LFxuICAnaW50cmluc2ljIHJhdGlvIHdpZHRoJzogMTAwJSxcbiAgJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cyc6ICc+IConLFxuICAnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJzogdG9wLFxuICAnaW50cmluc2ljIHJhdGlvIGV4dGVuZCc6IGZhbHNlLFxuICAnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnOiAxMDAlLFxuICAnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nOiBsZWZ0LFxuICAndHJpYW5nbGUgY29sb3InOiAjMDAwLFxuICAndHJpYW5nbGUgaGVpZ2h0JzogMWVtLFxuICAndHJpYW5nbGUgd2lkdGgnOiAxZW0sXG4gICd0cmlhbmdsZSBhbmdsZSc6IDAsXG4gICdwYXJhbGxheCBwZXJzcGVjdGl2ZSc6IDEsXG4gICdwYXJhbGxheCBlbGVtZW50JzogJ2JvZHknLFxuICAncGFyYWxsYXggaW9zJzogdHJ1ZSxcbiAgJ3BhcmFsbGF4IGRpc3RhbmNlJzogMCxcbiAgJ3ZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAndmVydGljYWwgZXh0ZW5kJzogZmFsc2UsXG4gICdob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JzogNTAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCc6IGZhbHNlLFxuICAndW5kZXJsaW5lIGJhY2tncm91bmQnOiAjZmZmLFxuICAndW5kZXJsaW5lIGNvbG9yJzogIzAwZSxcbiAgJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJzogdHJ1ZSxcbiAgJ3VuZGVybGluZSBkaXN0YW5jZSc6IDEsXG4gICd1bmRlcmxpbmUgd2lkdGgnOiAyLFxuICAndW5kZXJsaW5lIGV4dGVuZCc6IGZhbHNlLFxuICAnYXJ0IHBpeGVsIHNpemUnOiAxcHgsXG4gICdhcnQgY29sb3InOiBibGFjayxcbiAgJ2FydCBib3JkZXIgcmFkaXVzJzogMCVcbik7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTmV3IFNldHRpbmdzIG1vZHVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHbG9iYWxcbiRHbG9iYWxTZXR0aW5nczogJFRvb2xraXQtU2V0dGluZ3MgIWRlZmF1bHQ7XG4vLyBVc2VyXG4kVXNlclNldHRpbmdzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBVc2VyIFNldHRpbmcgRXhpc3RzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkVXNlclNldHRpbmdzLCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cy1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICRSZXR1cm47XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtaGFzKCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBHZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRHbG9iYWxTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWdldC1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHZhbHVlczogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJHZhbHVlczogbWFwLW1lcmdlKCR2YWx1ZXMsICgkc2V0dGluZzogc2V0dGluZy1nZXQoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWdldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctZ2V0KCRzZXR0aW5nKTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmdzIFNldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICRzZXR0aW5ncykgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQHJldHVybiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRSZXR1cm46ICgpO1xuXG4gIEBlYWNoICRLZXksICRWYWx1ZSBpbiAkVXNlclNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBpZigkc2V0dGluZyA9PSAkS2V5LCAkUmV0dXJuLCBtYXAtbWVyZ2UoJFJldHVybiwgKCRLZXk6ICRWYWx1ZSkpKTtcbiAgfVxuXG4gICRVc2VyU2V0dGluZ3M6ICRSZXR1cm4gIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkY2xlYXItdGhlLXNldHRpbmdzOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkVXNlclNldHRpbmdzOiAoKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1yZXNldCgpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1yZXNldCgpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgUGlja1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrKCRzZXR0aW5nLCAkaW5wdXQpIHtcbiAgQHJldHVybiBpZigkaW5wdXQgIT0gbnVsbCwgJGlucHV0LCBzZXR0aW5nLWdldCgkc2V0dGluZykpO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcsICRpbnB1dCBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHNldHRpbmctcGljaygkaW5wdXQsICRzZXR0aW5nKSkpO1xuICB9XG5cbiAgQHJldHVybiAkUmV0dXJuO1xufSIsIiRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQbGFjZWhvbGRlciBHZXQvU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpIHtcbiAgJHVuaXF1ZS1pZDogdW5pcXVlLWlkKCk7XG4gICRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiBtYXAtbWVyZ2UoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICgkaWQ6ICR1bmlxdWUtaWQpKSAhZ2xvYmFsO1xuICBAcmV0dXJuICR1bmlxdWUtaWQ7XG59XG5cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAkaWQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYXRlIFBsYWNlaG9sZGVyIENsYXNzIGFuZCBFeHRlbmRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCk7XG5cbiAgQGlmICRwbGFjZWhvbGRlci1pZCA9PSBudWxsIHtcbiAgICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCk7XG4gICAgQGF0LXJvb3QgJSN7JHBsYWNlaG9sZGVyLWlkfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGV4dGVuZCAlI3skcGxhY2Vob2xkZXItaWR9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFN0YXRpYyBNaXhpbiBIZWxwZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIG1peGluLWRyeWVyKCRpZCwgJGV4dGVuZDogdHJ1ZSkge1xuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTW9kZXJuIENsZWFyZml4IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjbGVhcmZpeCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2NsZWFyZml4IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY2xlYXJmaXgnKSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29tcGFzcyBFeHRlbnNpb24gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVGludCBhbmQgU2hhZGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTHVtYVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gbHVtYSgkY29sb3IpIHtcbiAgQHJldHVybiAocmVkKCRjb2xvcikgKiAuMjk5KSArIChncmVlbigkY29sb3IpICogLjU4NykgKyAoYmx1ZSgkY29sb3IpICogLjExNCk7XG59XG5cbkBmdW5jdGlvbiBsdW1hLWd0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpID49IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1sdGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA8PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtZGlmZigkY29sb3IxLCAkY29sb3IyKSB7XG4gIEByZXR1cm4gbHVtYSgkY29sb3IxKSAtIGx1bWEoJGNvbG9yMik7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU3RhY2tzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zdGFjaygkbWFpbiwgJHNlY29uZGFyeSwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCdjb2xvciBzdGFjayBhbW91bnRzJyk7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAxIHtcbiAgICAkYW1vdW50czogbnRoKCRhbW91bnRzLCAxKTtcbiAgfVxuXG4gICRzdGFjazogJG1haW47XG5cbiAgQGVhY2ggJGFtb3VudCBpbiAkYW1vdW50cyB7XG4gICAgJHN0YWNrOiBqb2luKCRzdGFjaywgbWl4KCRzZWNvbmRhcnksIG50aCgkc3RhY2ssIDEpLCAkYW1vdW50KSk7XG4gIH1cblxuICBAcmV0dXJuICRzdGFjaztcbn1cblxuLy8gVGludCBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBTaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBUaW50L1NoYWRlIFN0YWNrXG5AZnVuY3Rpb24gdGludC1zaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gICRjb2xvcnM6ICgpO1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ3RpbnQgc2hhZGUgYW1vdW50cycpO1xuICB9XG4gICRsZW5ndGg6IGxlbmd0aCgkYW1vdW50cyk7XG5cbiAgLy8gU2hhZGVzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHNoYWRlKCRjb2xvciwgbnRoKCRhbW91bnRzLCAkaSkpKTtcbiAgfVxuXG4gIC8vIEJhc2VcbiAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsICRjb2xvcik7XG5cbiAgLy8gVGludHNcbiAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkbGVuZ3RoIC0gMSB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHRpbnQoJGNvbG9yLCBudGgoJGFtb3VudHMsICRsZW5ndGggLSAkaSkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJGNvbG9ycztcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTY2FsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXNjYWxlKCRtYWluLCAkc2Vjb25kYXJ5LCAkc3RlcHM6IG51bGwpIHtcbiAgJHN0ZXBzOiBpZigkc3RlcHMgIT0gbnVsbCwgJHN0ZXBzLCB0b29sa2l0LWdldCgnY29sb3Igc2NhbGUgc3RlcHMnKSk7XG5cbiAgJGxpc3Q6ICRtYWluO1xuXG4gICRyZWQxOiByZWQoJG1haW4pO1xuICAkcmVkMjogcmVkKCRzZWNvbmRhcnkpO1xuICAkcmVkLWRpZmY6ICgoJHJlZDEgLSAkcmVkMikgLyAoKCRzdGVwcyAtIDEpKSk7XG5cbiAgJGh1ZTE6IGh1ZSgkbWFpbik7XG4gICRodWUyOiBodWUoJHNlY29uZGFyeSk7XG4gIEBpZiAoJGh1ZTIgKyAzNTkgLSAkaHVlMSkgPCBhYnMoJGh1ZTEgLSAkaHVlMikge1xuICAgICRodWUyOiAkaHVlMiArIDM1OTtcbiAgfVxuICAkaHVlLWRpZmY6ICgkaHVlMiAtICRodWUxKSAvICgkc3RlcHMgLSAxKTtcblxuICAkc2F0MTogc2F0dXJhdGlvbigkbWFpbik7XG4gICRzYXQyOiBzYXR1cmF0aW9uKCRzZWNvbmRhcnkpO1xuICAkc2F0LWRpZmY6IDA7XG4gIEBpZiAkc2F0MSA+ICRzYXQyIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MiAtICRzYXQxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDEgLSAkc2F0MikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkbHRlMTogbGlnaHRuZXNzKCRtYWluKTtcbiAgJGx0ZTI6IGxpZ2h0bmVzcygkc2Vjb25kYXJ5KTtcbiAgJGx0ZS1kaWZmOiAwO1xuICBAaWYgJGx0ZTEgPiAkbHRlMiB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTIgLSAkbHRlMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRsdGUtZGlmZjogKCRsdGUxIC0gJGx0ZTIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGFscDE6IGFscGhhKCRtYWluKTtcbiAgJGFscDI6IGFscGhhKCRzZWNvbmRhcnkpO1xuICAkYWxwLWRpZmY6IDA7XG4gIEBpZiAkYWxwMSA+ICRhbHAyIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMiAtICRhbHAxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGFscC1kaWZmOiAoJGFscDEgLSAkYWxwMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkaHVlLWhvbGQ6ICRodWUxO1xuICAkc2F0LWhvbGQ6ICRzYXQxO1xuICAkbHRlLWhvbGQ6ICRsdGUxO1xuICAkYWxwLWhvbGQ6ICRhbHAxO1xuICAkY29sb3ItaG9sZDogMDtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRzdGVwcyB7XG4gICAgJGh1ZS1ob2xkOiAkaHVlLWhvbGQgKyAkaHVlLWRpZmY7XG4gICAgJHNhdC1ob2xkOiAkc2F0LWhvbGQgKyAkc2F0LWRpZmY7XG4gICAgJGx0ZS1ob2xkOiAkbHRlLWhvbGQgKyAkbHRlLWRpZmY7XG4gICAgJGFscC1ob2xkOiAkYWxwLWhvbGQgKyAkYWxwLWRpZmY7XG5cbiAgICAkY29sb3ItaG9sZDogaHNsYSgkaHVlLWhvbGQsICRzYXQtaG9sZCwgJGx0ZS1ob2xkLCAkYWxwLWhvbGQpO1xuICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRjb2xvci1ob2xkKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRW5hYmxlIGxpZ2F0dXJlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2xpZ2F0dXJlIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2VuYWJsZSBsaWdhdHVyZXMnKSB7XG4gICAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhPTEsIGRsaWc9MVwiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tcy1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW8tZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJsaWdhXCIsXCJkbGlnXCI7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhY2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGZvbnQtZmFjZSgkbmFtZSwgJGZpbGVzLCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwsICRpbmxpbmUtd29mZjogbnVsbCkge1xuICAkd2VpZ2h0OiBpZigkd2VpZ2h0ICE9IG51bGwsICR3ZWlnaHQsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugd2VpZ2h0JykpO1xuICAkc3R5bGU6IGlmKCRzdHlsZSAhPSBudWxsLCAkc3R5bGUsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugc3R5bGUnKSk7XG4gICRpbmxpbmUtd29mZjogaWYoJGlubGluZS13b2ZmICE9IG51bGwsICRpbmxpbmUtd29mZiwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZicpKTtcblxuICAkZm9udC1zdGFjazogKCk7XG4gICRmb250LXNyYzogJyc7XG4gICRlb3Q6IGZhbHNlO1xuICAkZm9udC1leHRlbnNpb25zOiAoJ2VvdCc6ICdlbWJlZGRlZC1vcGVudHlwZScsICd3b2ZmMic6ICd3b2ZmMicsICd3b2ZmJzogJ3dvZmYnLCAndHRmJzogJ3RydWV0eXBlJywgJ3N2Zyc6ICdzdmcnKTtcblxuICBAZWFjaCAkZXh0LCAkZm9ybWF0IGluICRmb250LWV4dGVuc2lvbnMge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkZmlsZXMsICRleHQpIHtcbiAgICAgIEBpZiBmdW5jdGlvbi1leGlzdHMoaW5saW5lLWZvbnQtZmlsZXMpIGFuZCAkaW5saW5lLXdvZmYgPT0gdHJ1ZSBhbmQgKCRleHQgPT0gJ3dvZmYnIG9yICRleHQgPT0gJ3dvZmYyJykge1xuICAgICAgICAkZm9udC1zcmM6IGlubGluZS1mb250LWZpbGVzKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSk7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiBmdW5jdGlvbi1leGlzdHMoZm9udC11cmwpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGZvbnQtc3RhY2s6IGFwcGVuZCgkZm9udC1zdGFjaywgJGZvbnQtc3JjLCAnY29tbWEnKTtcbiAgICB9XG5cbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkbmFtZTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgQGlmICRlb3Qge1xuICAgICAgc3JjOiAkZW90O1xuICAgIH1cbiAgICBAaWYgbGVuZ3RoKCRmb250LXN0YWNrKSA+IDAge1xuICAgICAgc3JjOiAkZm9udC1zdGFjaztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJY29uIEZvbnRcbi8vIEZyb20gaHR0cDovL2ljb21vb24uaW9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGljb24tZm9udCgkZm9udC1zdGFjaywgJHNwZWFrOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRzcGVhazogaWYoJHNwZWFrICE9IG51bGwsICRzcGVhaywgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBzcGVhaycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBmb250LWZhbWlseTogJGZvbnQtc3RhY2s7XG4gIEBpZiAkc3BlYWsgPT0gZmFsc2Uge1xuICAgIHNwZWFrOiBub25lO1xuICB9XG4gIEBpbmNsdWRlIGljb24tZm9udC0tY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIGljb24tZm9udC0tY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaWNvbiBmb250IGNvcmUnKSB7XG4gICAgICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQpO1xuXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFkZSBJblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY29udGVudC1mYWRlLWluKCRkdXJhdGlvbjogbnVsbCwgJGxvYWRpbmc6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGR1cmF0aW9uOiBpZigkZHVyYXRpb24gIT0gbnVsbCwgJGR1cmF0aW9uLCB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpKTtcbiAgJGxvYWRpbmc6IGlmKCRsb2FkaW5nICE9IG51bGwsICRsb2FkaW5nLCB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIGFuZCAkZHVyYXRpb24gPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSBhbmQgJGxvYWRpbmcgPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY29udGVudCBmYWRlIGluJykge1xuICAgICAgQGluY2x1ZGUgY29udGVudC1mYWRlLWluKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGlmIG5vdCBtaXhpbi1leGlzdHMoJ3NpbmdsZS10cmFuc2l0aW9uJykge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBzaW5nbGUtdHJhbnNpdGlvbihvcGFjaXR5ICRkdXJhdGlvbik7XG4gICAgfVxuXG4gICAgI3skbG9hZGluZ30gJiB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGbHVpZCBFbWJlZHMgYW5kIHdoYXRldmVyIFdJVEggTk8gSkFWQVNDSVBUIVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gcGFyZW50Jykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIGNoaWxkJykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgdG9wOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuXG4gIHBhZGRpbmctI3skcG9zaXRpb259OiAoMSAvICRyYXRpbykgKiAkd2lkdGg7XG4gIHdpZHRoOiAkd2lkdGg7XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkZWxlbWVudHM6IGlmKCRlbGVtZW50cyAhPSBudWxsLCAkZWxlbWVudHMsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcblxuICBAZWFjaCAkZWxlbWVudCBpbiAkZWxlbWVudHMge1xuICAgICN7JGVsZW1lbnR9IHtcbiAgICBcdEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGlyKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRlbGVtZW50cywgJGV4dGVuZCwgJHBvc2l0aW9uKTtcbn1cblxuQG1peGluIGlyLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xufSIsIi8vIHNpbXBsZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb250ZXh0IG9mIGEgbmVzdGVkIHBlcmNlbnRhZ2UuXG5AZnVuY3Rpb24gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuXG4gIC8vIEZpcnN0IGxldmVsIGRlZXAgaXMgYWx3YXlzIDEwMCVcbiAgJHBlcmNlbnRhZ2U6IDEwMCU7XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggbGV2ZWxcbiAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAvLyBJbnZlcnQgdGhlIHBlcmNlbnRhZ2UgdG8gZmluZCBjb250ZXh0XG4gICAgJHBlcmNlbnRhZ2U6IHBlcmNlbnRhZ2UoJHBlcmNlbnRhZ2UgLyAkY29udGV4dCk7XG4gIH1cbiAgLy8gUmV0dXJuIGZpbmFsIHBlcmNlbnRhZ2VcbiAgQHJldHVybiAkcGVyY2VudGFnZTtcbn1cblxuLy8gbWl4aW4gdG8gbWFrZSB0aGluZ3MgZWFzaWVyXG5AbWl4aW4gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJykpO1xuXG4gIHdpZHRoOiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpO1xuICBAaWYgJHBvc2l0aW9uID09IFwiY2VudGVyXCIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtLjU7XG4gIH1cbiAgQGlmICRwb3NpdGlvbiA9PSBcInJpZ2h0XCIge1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLTEgKyAxMDAlO1xuICB9XG59IiwiLy8gTWFnaWMgcGFyYWxsYXggbWl4aW5zXG5AbWl4aW4gcGFyYWxsYXgtaW5pdCgkcGVyc3BlY3RpdmU6IG51bGwsICRlbGVtZW50OiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG5cbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRlbGVtZW50OiBpZigkZWxlbWVudCAhPSBudWxsLCAkZWxlbWVudCwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGVsZW1lbnQnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBAaWYgJGVsZW1lbnQgPT0gJ2JvZHknIHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBodG1sLCBib2R5IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuICAgICAgYm9keSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRlbGVtZW50ID09IHRoaXMge1xuICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBhdC1yb290ICN7JGVsZW1lbnR9IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlOiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgb3ZlcmZsb3c6IGF1dG87XG4gIEBpZiBtaXhpbi1leGlzdHMocGVyc3BlY3RpdmUpIHtcbiAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUgKiAxcHgpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gICAgcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgfVxuICAvLyBBbGxvd3MgZm9yIHNtb290aCBzY3JvbGxpbmcgYnV0IGRpc2FibGVzIHBhcmFsbGF4IGVmZmVjdHMuXG4gIEBpZiAkcGFyYWxsYXgtaW9zID09IGZhbHNlIHtcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cbiAgLy8gTWFrZSBzdXJlIDNEIHBlcnNwZWN0aXZlIGlzIHByZXNlcnZlZFxuICAmLCAmICoge1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtLXN0eWxlKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUocHJlc2VydmUtM2QpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgoJGRpc3RhbmNlOiBudWxsLCAkcGVyc3BlY3RpdmU6IG51bGwpIHtcblxuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBkaXN0YW5jZScpKTtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG5cbiAgJHRyYW5zZm9ybTogdHJhbnNsYXRlWigkZGlzdGFuY2UgKiAkcGVyc3BlY3RpdmUgKiAxcHgpIHNjYWxlKGFicygkZGlzdGFuY2UgLSAxKSk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zZm9ybSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICAgIHRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgfVxuXG4gIHotaW5kZXg6ICRkaXN0YW5jZSAqIDEwMDtcbn1cbiIsIkBtaXhpbiBydGwoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgJF9wcm9wZXJ0eTogJHByb3BlcnR5O1xuICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcblxuICBAaWYgbGVuZ3RoKCR2YWx1ZSkgPT0gNCB7XG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICN7JHByb3BlcnR5fTogbnRoKCR2YWx1ZSwgMSkgbnRoKCR2YWx1ZSwgNCkgbnRoKCR2YWx1ZSwgMykgbnRoKCR2YWx1ZSwgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSAtIDEpICsgJ3JpZ2h0JztcbiAgICB9XG4gICAgQGVsc2UgaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpIC0gMSkgKyAnbGVmdCc7XG4gICAgfVxuXG4gICAgQGlmICRwcm9wZXJ0eSAhPSAkX3Byb3BlcnR5IHtcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIkBtaXhpbiB0YXJnZXQoJHRhcmdldCkge1xuICBAYXQtcm9vdCB7XG4gICAgLyohIEB7dGFyZ2V0OiAjeyR0YXJnZXR9fSAqL1xuICAgICYge1xuICAgICAgQGNvbnRlbnQ7ICBcbiAgICB9XG4gICAgLyohIHt0YXJnZXQ6ICN7JHRhcmdldH19QCAqLyAgXG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERyYXcgdHJpYW5nbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIHRyaWFuZ2xlKCRjb2xvcjogbnVsbCwgJGhlaWdodDogbnVsbCwgJHdpZHRoOiBudWxsLCAkYW5nbGU6IG51bGwpIHtcblxuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBjb2xvcicpKTtcbiAgJGhlaWdodDogaWYoJGhlaWdodCAhPSBudWxsLCAkaGVpZ2h0LCB0b29sa2l0LWdldCgndHJpYW5nbGUgaGVpZ2h0JykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSB3aWR0aCcpKTtcbiAgJGFuZ2xlOiBpZigkYW5nbGUgIT0gbnVsbCwgJGFuZ2xlLCB0b29sa2l0LWdldCgndHJpYW5nbGUgYW5nbGUnKSk7XG5cbiAgQGlmIG50aCgkYW5nbGUsIDEpID09IFwidG9wXCIgb3IgbnRoKCRhbmdsZSwgMSkgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiBcIiN7JGFuZ2xlfVwiO1xuICB9XG5cbiAgQGlmICRhbmdsZSA9PSBcInRvcFwiIHtcbiAgICAkYW5nbGU6IDA7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwicmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDI7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMTtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogNDUgKiA0O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwibGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDU7XG4gIH1cblxuICBAaWYgdW5pdCgkaGVpZ2h0KSA9PSBcIlwiIG9yIHVuaXQoJGhlaWdodCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JGhlaWdodH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciBoZWlnaHQuXCJcbiAgfVxuXG4gIEBpZiB1bml0KCR3aWR0aCkgPT0gXCJcIiBvciB1bml0KCR3aWR0aCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JHdpZHRofSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIHdpZHRoLlwiXG4gIH1cblxuICAvLyBvZmZzZXQgNDVkZWcgdG8gbWFrZSBlYWNoIHNpZGUgc3RhcnQgYXQgMFxuICAkZGVnOiAkYW5nbGUgKyA0NTtcbiAgLy8gaWYgdW5pdHMsIHJlbW92ZSB1bml0c1xuICBAaWYgdW5pdCgkZGVnKSA9PSBkZWcge1xuICAgICRkZWc6ICRkZWcgLyAxZGVnO1xuICB9XG4gIC8vIHNoaWZ0IHRvIGJlIG9uIGEgc2NhbGUgZnJvbSAwIHRvIDkwLlxuICBAd2hpbGUgJGRlZyA+IDkwIHtcbiAgICAkZGVnOiAkZGVnIC0gOTA7XG4gIH1cbiAgQHdoaWxlICRkZWcgPCAwIHtcbiAgICAkZGVnOiAkZGVnICsgOTA7XG4gIH1cbiAgLy8gR2V0IGEgcmF0aW8gb2YgOTAgdG8gbXVsdGlwbHkgYnkuXG4gICRkZWc6ICRkZWcgLyA5MDtcblxuICAvLyBtYWtlIHN1cmUgbWV0cmljcyBhcmUgcmVzZXRcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAvLyBydW4gdGhyb3VnaCBzaWRlc1xuICBAaWYgJGFuZ2xlIDw9IDQ1IG9yICRhbmdsZSA+IDMxNSB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSkgJGhlaWdodCAoJHdpZHRoICogJGRlZyk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDQ1IGFuZCAkYW5nbGUgPD0gMTM1IHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiAkZGVnKSAwICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAxMzUgYW5kICRhbmdsZSA8PSAyMjUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpIDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAyMjUgYW5kICRhbmdsZSA8PSAzMTUge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGggKCRoZWlnaHQgKiAkZGVnKSAwO1xuICB9XG59IiwiLy8gVmVydGljYWxseSBjZW50ZXIgYW55dGhpbmcsIGxpdGVyYWxseSBhbnl0aGluZy5cbi8vIGh0dHA6Ly96ZXJvc2l4dGhyZWUuc2UvdmVydGljYWwtYWxpZ24tYW55dGhpbmctd2l0aC1qdXN0LTMtbGluZXMtb2YtY3NzL1xuQG1peGluIHZlcnRpY2FsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgndmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcblxuICB0b3A6ICRtaWRwb2ludDtcbiAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd2ZXJ0aWNhbCBjZW50ZXInKSB7XG4gICAgICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIb3Jpem9udGFsIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIEBpZiAkbWlkcG9pbnQgIT0gMCUge1xuICAgIGxlZnQ6ICRtaWRwb2ludDtcbiAgfVxuXG4gIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWJzb2x1dGUgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIoJHZlcnRpY2FsOiBudWxsLCAkaG9yaXpvbnRhbDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICR2ZXJ0aWNhbDogaWYoJHZlcnRpY2FsICE9IG51bGwsICR2ZXJ0aWNhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIHRvcDogJHZlcnRpY2FsO1xuICBAaWYgJGhvcml6b250YWwgIT0gMCUge1xuICAgIGxlZnQ6ICRob3Jpem9udGFsO1xuICB9XG5cbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIH1cbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxuXG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDU1MgbGV2ZWwgNCBWaWV3cG9ydFxuLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLWRldmljZS1hZGFwdC8jdGhlLWF0dmlld3BvcnQtcnVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gdmlld3BvcnQge1xuICBALXdlYmtpdC12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tb3otdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbXMtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEB2aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuIiwiQG1peGluIHVuZGVybGluZSgkYmFja2dyb3VuZDogbnVsbCwgJGNvbG9yOiBudWxsLCAkY2xlYXItZGVzY2VuZGVyczogbnVsbCwgJGRpc3RhbmNlOiBudWxsLCAkd2lkdGg6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGJhY2tncm91bmQ6IGlmKCRiYWNrZ3JvdW5kICE9IG51bGwsICRiYWNrZ3JvdW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGJhY2tncm91bmQnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjb2xvcicpKTtcbiAgJGNsZWFyLWRlc2NlbmRlcnM6IGlmKCRjbGVhci1kZXNjZW5kZXJzICE9IG51bGwsICRjbGVhci1kZXNjZW5kZXJzLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnKSk7XG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBkaXN0YW5jZScpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIHdpZHRoJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gICRQWDogLjA2MjVlbTtcblxuICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKGJhY2tncm91bmQtaW1hZ2UpIGFuZCBmdW5jdGlvbi1leGlzdHMobGluZWFyLWdyYWRpZW50KSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgIGxpbmVhci1ncmFkaWVudChib3R0b20sICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSlcbiAgICApO1xuICB9XG4gIEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpO1xuICB9XG4gIGJhY2tncm91bmQtc2l6ZTogKDIgKiAkUFgpICgoMSArICR3aWR0aCkgKiAkUFgpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwICgoJHdpZHRoKSAqICRQWCkgKyAkZGlzdGFuY2U7XG5cbiAgQGlmICRjbGVhci1kZXNjZW5kZXJzIHtcbiAgICB0ZXh0LXNoYWRvdzogKDEgKiAkUFgpICgxICogJFBYKSAwICRiYWNrZ3JvdW5kLCAoLTEgKiAkUFgpIDAgMCAkYmFja2dyb3VuZDtcbiAgfVxufVxuXG5AbWl4aW4gdW5kZXJsaW5lLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndW5kZXJsaW5lJykge1xuICAgICAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQVJUIVxuLy8gSW5zcGlyZWQgYnkgaHR0cDovL2VscnVtb3JkZWxhbHV6LmdpdGh1Yi5pby9QaXhlbGF0b3IvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhcnQoJGFydCwgJHB4LXNpemU6IG51bGwsICRjb2xvcjogbnVsbCwgJHJhZGl1czogbnVsbCkge1xuICAkcHgtc2l6ZTogaWYoJHB4LXNpemUgIT0gbnVsbCwgJHB4LXNpemUsIHRvb2xraXQtZ2V0KCdhcnQgcGl4ZWwgc2l6ZScpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgnYXJ0IGNvbG9yJykpO1xuICAkcmFkaXVzOiBpZigkcmFkaXVzICE9IG51bGwsICRyYWRpdXMsIHRvb2xraXQtZ2V0KCdhcnQgYm9yZGVyIHJhZGl1cycpKTtcblxuICAkYnVpbGQ6ICgpO1xuICAkeTogJHB4LXNpemU7XG4gICR4OiAwO1xuXG4gIGhlaWdodDogJHB4LXNpemU7XG4gIHdpZHRoOiAkcHgtc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0cl9sZW5ndGgoJGFydCkge1xuICAgICRjaGFyOiBzdHJfc2xpY2UoJGFydCwgJGksICRpKTtcbiAgICAkeDogJHggKyAkcHgtc2l6ZTtcblxuICAgIEBpZiAkY2hhciA9PSAnbicge1xuICAgICAgJHk6ICR5ICsgJHB4LXNpemU7XG4gICAgICAkeDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGNoYXIgIT0gJyAnIHtcbiAgICAgICRib3JkZXI6ICR4ICR5IDAgJGNvbG9yO1xuICAgICAgJGJ1aWxkOiBhcHBlbmQoJGJ1aWxkLCAkYm9yZGVyLCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgYm94LXNoYWRvdzogJGJ1aWxkO1xufSIsIkBtaXhpbiBzZXQtbXVsdGlwbGUoJHZhbHVlLCAkcHJvcGVydGllcy4uLikge1xuICAkcHJvcGVydHktbGVuZ3RoOiBsZW5ndGgoJHByb3BlcnRpZXMpO1xuICAkZXJyb3ItbXNnOiBcIlRoZSBgc2V0LW11bHRpcGxlYCBtaXhpbiByZXF1aXJlcyB5b3UgdG8gcGFzcyBpbiBhIGxpc3Qgb2YgcHJvcGVydGllcyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50XCI7XG5cbiAgQGlmICRwcm9wZXJ0eS1sZW5ndGggPCAxIHtcbiAgICBAaWYgZmVhdHVyZS1leGlzdHMoYXQtZXJyb3IpIHtcbiAgICAgIEBlcnJvciAkZXJyb3ItbXNnO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAkZXJyb3ItbXNnO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgaW4gaXMgYSB3aGl0ZS1zcGFjZWQgc2VwYXJhdGVkIGxpc3QuXG4gICRwcm9wZXJ0aWVzOiBpZigkcHJvcGVydHktbGVuZ3RoID09IDEsIG50aCgkcHJvcGVydGllcywgMSksICRwcm9wZXJ0aWVzKTtcblxuICBAZWFjaCAkcHJvcGVydHkgaW4gJHByb3BlcnRpZXMge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlXG4gIH1cbn1cbiIsIi8vICBNb2R1bGUgU2NhbGUgYW5kIGJhc2UgZm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiRiYXNlLWZvbnQtc2l6ZTogICAxNHB4O1xuJGlkZWFsLWZvbnQtc2l6ZTogIDIycHg7XG4vLyAkYmFzZS1saW5lLWhlaWdodDogbXMoMSwgJGJhc2UtZm9udC1zaXplKTtcblxuJHJoeXRobS11bml0OiBcInJlbVwiO1xuJHJoeXRobS1nYXA6IDhweDtcbiRyZW0td2l0aC1weC1mYWxsYmFjazogZmFsc2U7XG5cbiRzY3V0LXJlbS1iYXNlOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UtZm9udC1zaXplKTtcblxuXG4vLyB7eyBDb21wb25lbnQgc2l6ZSB9fVxuJGdsb2JhbC1yYWRpdXM6IDNweDtcbiIsIi8vICBHcmlkIHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuXG4kbGF5b3V0LWJhc2U6IChcbiAgZ3V0dGVyczogMS81LFxuICBjb2x1bW4td2lkdGg6IDgwcHgsXG4gIC8vIGd1dHRlci1wb3NpdGlvbjogaW5zaWRlLXN0YXRpYyxcbiAgZGVidWc6IChcbiAgICAvLyBpbWFnZTogc2hvdyxcbiAgKSxcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiB0cnVlLFxuICAgIHJlbTogZmFsc2UsXG4gICksXG4pO1xuJHN1c3k6IGxheW91dCg1ICRsYXlvdXQtYmFzZSk7XG5cbi8vIHt7IEVsZW1lbnQgdHdpY2sgcG9pbnRzIH19XG5cbi8vIHt7IERldmljZSBsYXlvdXRzIH19XG4kc3VzeS1tZWRpYTogKFxuICAnbW9iaWxlJzogJyhtYXgtd2lkdGg6IDQxNHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiAnKG1heC13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogJyhtYXgtd2lkdGg6IDEwMjRweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICd0YWJsZXQnOiAnKG1pbi13aWR0aDogNzY4cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdC1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlLW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdkZXNrdG9wJzogJyhtaW4td2lkdGg6IDEyMDBweCknLFxuICAnY2F0ZWdvcnktbWVudSc6ICcobWluLXdpZHRoOiAxMDI0cHgpJ1xuKTtcbiR0YWJsZXQ6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIHRhYmxldCksXG4gIGxheW91dDogOSAuNVxuKTtcbiR0YWJsZXQtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkdGFibGV0LCBsYXlvdXQpKTtcbiRkZXNrdG9wOiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCBkZXNrdG9wKSxcbiAgbGF5b3V0OiAxMiAxLjUgc3BsaXRcbik7XG4kZGVza3RvcC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCRkZXNrdG9wLCBsYXlvdXQpKTtcbiRkZXNrdG9wLWdyaWQtcGFkZGluZzogc2N1dC1yZW0oMTUpO1xuXG4vLyAge3sgTGF5ZXJzIC0tLS0tLSB9fVxuJGxheWVyczogKFxuICBiYXNlLFxuICBoZWFkZXItbWVudSxcbiAgZHJhd2VyLFxuICBkcmF3ZXItc2hhZG93LFxuICBkcmF3ZXItbmF2LFxuKTsiLCIvLyAgU2V0dGluZ3Ncbi8vICA9PT09PT09PVxuXG4kY29sb3ItbGlnaHQtc2F0dXJhdGlvbjogOTMlO1xuXG4vLyAgQ29sb3JzXG4vLyAgPT09PT09XG5cbiRncmF5LWJhc2U6ICAgICAjMDAwICFkZWZhdWx0O1xuJGdyYXktZGFya2VyOiAgIHRpbnQoJGdyYXktYmFzZSwgMTMuNSUpICFkZWZhdWx0O1xuJGdyYXktZGFyazogICAgIHRpbnQoJGdyYXktYmFzZSwgMjAlKSAgICFkZWZhdWx0O1xuJGdyYXk6ICAgICAgICAgIHRpbnQoJGdyYXktYmFzZSwgMzMuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHQ6ICAgIHRpbnQoJGdyYXktYmFzZSwgNDYuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHRlcjogIHRpbnQoJGdyYXktYmFzZSwgOTMuNSUpICFkZWZhdWx0O1xuXG4vLyAgVGV4dHNcbi8vICAtLS0tLVxuXG4kdGV4dC1jb2xvcjogJGdyYXktZGFyaztcblxuLy8gIFBhbGxldGVcbi8vICAtLS0tLS0tLS0tLVxuXG4kYmx1ZTogIzJkNmVjNjtcbiRibHVlLWRhcms6IHJnYigwLCA2OSwgMTY0KTtcbiRibHVlLWxpZ2h0OiAjZDhlOWZmO1xuJHllbGxvdzogI2ZjOTYwMDtcbiR5ZWxsb3ctZGFyazogI2I4NmUwMDtcbiR5ZWxsb3ctbGluazogI2ZmZDgwMDtcbiRvcmFuZ2U6ICNmYzQ3MDA7XG4kb3JhbmdlLWRhcms6ICNiODZlMDA7XG4kcmVkOiByZ2IoMjA2LCA2OCwgNjIpO1xuJGdyZWVuOiByZ2IoMjgsIDE0OSwgMjIpO1xuJHBpbms6IHJnYigxOTcsIDMxLCAxMjQpO1xuXG4kcHJpbWFyeTogc2hhZGUoIzQyOGJjYSwgNi41JSk7XG4kc3VjY2VzczogIzVjYjg1YztcbiRpbmZvOiAgICAjNWJjMGRjO1xuJHdhcm5pbmc6ICNmMGFkNGU7XG4kZGFuZ2VyOiAgI2Q5NTM0ZjtcblxuJGlucHV0LWJvcmRlcjogI2U0ZTRlNDtcbiRib3JkZXItZ3JheTogIzkxOTE5MTtcbiRiYWNrZ3JvdW5kLWdyYXk6ICNlOWU5ZTk7XG5cbi8vICBMaW5rc1xuLy8gIC0tLS0tXG5cbiRsaW5rLWNvbG9yOiAgICAgICAgICAgIzAwMCAhZGVmYXVsdDtcbiRsaW5rLWhvdmVyLWNvbG9yOiAgICAgc2hhZGUoJGxpbmstY29sb3IsIDE1JSkgIWRlZmF1bHQ7XG4kbGluay1mb2N1cy1jb2xvcjogICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay1hY3RpdmUtY29sb3I6ICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay12aXNpdGVkLWNvbG9yOiAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG5cbi8vICBOUHJvZ3Jlc3Ncbi8vICAtLS0tLS0tLS1cbiRucHJvZ3Jlc3MtY29sb3I6ICAgICRwcmltYXJ5O1xuIiwiLy8gIEZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogICByaWdodDtcblxuLy8g5YOF6Yed5bCN6Iux5paHXG4vLyBAZm9udC1mYWNlIHtcbi8vICAgZm9udC1mYW1pbHk6IEVuZ2xpc2g7XG4vLyAgIHVuaWNvZGUtcmFuZ2U6IFUrMDAtMDI0Rjtcbi8vICAgc3JjOiBsb2NhbChIZWx2ZXRpY2EpO1xuLy8gfVxuXG4kc2FuczogICAgSGVsdmV0aWNhTmV1ZS1MaWdodFxuICAgICAgICwgJ0hlbHZldGljYSBOZXVlIExpZ2h0J1xuICAgICAgICwgJ0hlbHZldGljYSBOZXVlJ1xuICAgICAgICwgIEhlbHZldGljYVxuICAgICAgICwgJ0hlaXRpIFRDJ1xuICAgICAgICwgJ0xpSGVpIFBybydcbiAgICAgICAsICdNaWNyb3NvZnQgSmhlbmdIZWknXG4gICAgICAgLCAn5b6u6Luf5q2j6buR6auUJ1xuICAgICAgICwgIEFyaWFsXG4gICAgICAgLCAgc2Fucy1zZXJpZjtcblxuJHNlcmlmOiAgJ1BUIFNlcmlmJ1xuICAgICAgICwgR2VvcmdpYVxuICAgICAgICwgVGltZXNcbiAgICAgICAsICdUaW1lcyBOZXcgUm9tYW4nXG4gICAgICAgLCAnU29uZ3RpIFRDJ1xuICAgICAgICwgJ0hpcmFnaW5vIE1pbmNobyBQcm9OJ1xuICAgICAgICwgc2VyaWY7XG5cbiRiYXNlLWZvbnQtZmFtaWx5OiAkc2FuczsiXSwibWFwcGluZ3MiOiJBOENBQTs7Ozs7RUFLRTtBOUNNc0IsQUFBQSxpQkFBaUIsQ0FBQztFQUN4QyxPQUFPLEVBQUUsSUFBSyxHQUVmO0U2Q29DRyxNQUFNLEVBQUwsU0FBUyxFQUFFLEtBQUs7STdDdkNHLEFBQUEsaUJBQWlCLENBQUM7TUFFZixPQUFPLEVBQUUsS0FBTSxHQUN6Qzs7QUFDRCxBQUFBLHVCQUF1QixDQUFDO0VBQ3RCLE9BQU8sRUFBRSxZQUFhO0VBQ3RCLE9BQU8sRUNkd0IsR0FBVztFRGUxQyxhQUFhLEVDZmtCLEdBQVc7RURnQjFDLGdCQUFnQixFa0V3QkEsT0FBTztFbEV2QnZCLEtBQUssRUFBRSxrQkFBSSxHQUVaO0U2QzRCRyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07STdDbkN0QixBQUFBLHVCQUF1QixDQUFDO01BTUksS0FBSyxFQUFFLGVBQUksR0FDdEM7O0FBQ0QsQUFBQSwwQkFBMEIsQ0FBQztFQUN6QixNQUFNLEVDckJ5QixHQUFXLENEcUI3QixJQUFJLENBQUMsQ0FBQztFQUNuQixJQUFJLEVBQUUsb0JBQXFCLEdBQzVCOztBQUNELEFBQUEsd0JBQXdCLENBQUM7RUFBRSxLQUFLLEVBQUUsSUFBSyxHQUFJIiwibmFtZXMiOltdfQ== */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.gallery-carousel-wrapper {
  margin-bottom: 8px;
  position: relative; }

.gallery-carousel {
  display: none; }

.gallery-carousel.slick-initialized {
  display: block; }

.gallery-carousel__cell {
  margin: 0;
  position: relative; }

.gallery-carousel__caption {
  display: none;
  padding: 8px;
  right: 0;
  bottom: 0;
  left: 0;
  position: absolute;
  font-size: 16px;
  color: #fff;
  background-color: rgba(0, 0, 0, 0.5); }

@media (min-width: 768px) {
  .gallery-carousel__caption {
    display: block; } }
.gallery-carousel__prev,
.gallery-carousel-thumbnails__prev,
.gallery-carousel__next,
.gallery-carousel-thumbnails__next {
  top: 50%;
  position: absolute;
  stroke: #fff; }

.gallery-carousel__prev .icon,
.gallery-carousel-thumbnails__prev .icon,
.gallery-carousel__next .icon,
.gallery-carousel-thumbnails__next .icon {
  width: 48px;
  height: 48px; }

@media (min-width: 768px) {
  .gallery-carousel__arrows {
    display: none; } }
.gallery-carousel__prev,
.gallery-carousel-thumbnails__prev {
  left: 0;
  -webkit-transform: rotate(180deg) translateY(50%);
  transform: rotate(180deg) translateY(50%); }

.gallery-carousel__next,
.gallery-carousel-thumbnails__next {
  right: 0;
  -webkit-transform: translateY(-50%);
  transform: translateY(-50%); }

.gallery-carousel-thumbnails-wrapper {
  margin-bottom: 8px;
  padding: 0 48px;
  position: relative; }

.gallery-carousel-thumbnail.slick-slide {
  margin-right: 4px;
  margin-left: 4px; }

.gallery-carousel-thumbnails__prev {
  stroke: #1c1c1b; }

.gallery-carousel-thumbnails__next {
  stroke: #1c1c1b; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2dhbGxlcnktY2Fyb3VzZWwuc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2dhbGxlcnktY2Fyb3VzZWwuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy5nYWxsZXJ5LWNhcm91c2VsLXdyYXBwZXIge1xuICBtYXJnaW4tYm90dG9tOiByKDEpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZ2FsbGVyeS1jYXJvdXNlbCB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gICYuc2xpY2staW5pdGlhbGl6ZWQgeyBkaXNwbGF5OiBibG9jazsgfVxufVxuLmdhbGxlcnktY2Fyb3VzZWxfX2NlbGwge1xuICBtYXJnaW46IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5nYWxsZXJ5LWNhcm91c2VsX19jYXB0aW9uIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgcGFkZGluZzogcigxKTtcbiAgcG9zaXRpb246IGFic29sdXRlIG4oKSAwIDAgMDtcbiAgdGV4dDogMTZweCAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLC41KTtcbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7IGRpc3BsYXk6IGJsb2NrOyB9XG59XG5cbiVhcnJvdyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZSA1MCUgbigpIG4oKSBuKCk7XG4gIHN0cm9rZTogI2ZmZjtcbiAgXG4gIC5pY29uIHsgc2l6ZTogcig2KTsgfVxufVxuLmdhbGxlcnktY2Fyb3VzZWxfX2Fycm93cyB7XG4gIEBpbmNsdWRlIHN1c3koJHRhYmxldCkgeyBkaXNwbGF5OiBub25lOyB9XG59XG4uZ2FsbGVyeS1jYXJvdXNlbF9fcHJldiB7XG4gIEBleHRlbmQgJWFycm93O1xuICBsZWZ0OiAwO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpIHRyYW5zbGF0ZVkoNTAlKTtcbn1cbi5nYWxsZXJ5LWNhcm91c2VsX19uZXh0IHtcbiAgQGV4dGVuZCAlYXJyb3c7XG4gIHJpZ2h0OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbi5nYWxsZXJ5LWNhcm91c2VsLXRodW1ibmFpbHMtd3JhcHBlciB7XG4gIG1hcmdpbi1ib3R0b206IHIoMSk7XG4gIHBhZGRpbmc6IDAgcig2KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmdhbGxlcnktY2Fyb3VzZWwtdGh1bWJuYWlsLnNsaWNrLXNsaWRlIHsgbWFyZ2luOiBuKCkgciguNSk7IH1cbi5nYWxsZXJ5LWNhcm91c2VsLXRodW1ibmFpbHNfX3ByZXYge1xuICBAZXh0ZW5kIC5nYWxsZXJ5LWNhcm91c2VsX19wcmV2O1xuICBzdHJva2U6ICMxYzFjMWI7XG59XG4uZ2FsbGVyeS1jYXJvdXNlbC10aHVtYm5haWxzX19uZXh0IHtcbiAgQGV4dGVuZCAuZ2FsbGVyeS1jYXJvdXNlbF9fbmV4dDtcbiAgc3Ryb2tlOiAjMWMxYzFiO1xufSIsIi8vIHt7U2FzcyBtaXhpbnMgLS0tLS0tLS19fVxuQGZ1bmN0aW9uIG4oKSB7IEByZXR1cm4gdW5xdW90ZShcIipcIik7IH1cblxuQGZ1bmN0aW9uIHIoJHRpbWVzOiAxKSB7IEByZXR1cm4gJHJoeXRobS1nYXAgKiAkdGltZXM7IH1cblxuQG1peGluIHN1c3koJG1hcCkge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkbWFwLCBxdWVyeSksIG1hcC1nZXQoJG1hcCwgbGF5b3V0KSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiByZXZlcnNlLWhpZGUtdmlzdWFsbHkoKSB7XG4gIGJvcmRlcjogMDtcbiAgY2xpcDogYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogYXV0bztcbn1cblxuQG1peGluIHNoYXJlLWJyZWFrcG9pbnRzKCRtYXAsICRjc3Nwcm9wOiBjb250ZW50KSB7XG4gICRkZXNjcmlwdGlvbjogJyc7XG5cbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgQGlmICRkZXNjcmlwdGlvbiAhPSAgJycge1xuICAgICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAnIHwgJztcbiAgICB9XG4gICAgXG4gICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAkcHJvcGVydHkgKyc6ICcrIGluc3BlY3QoJHZhbHVlKTtcbiAgfVxuXG4gIGRpc3BsYXk6IG5vbmU7XG4gICN7JGNzc3Byb3B9OiAgJGRlc2NyaXB0aW9uO1xufVxuXG5AbWl4aW4gdG9nZ2xlLWZhZGUoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIH1cbn1cblxuQG1peGluIHRvZ2dsZS1zaG93KCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IDA7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9ICBcbn1cblxuQG1peGluIHNob3coKSB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICBoZWlnaHQ6IGF1dG87ICBcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyKCkge1xuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCBcbiAgJjo6LW1vei1wbGFjZWhvbGRlcixcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxufVxuXG5AbWl4aW4gZGVidWcoJGNvbG9yOiAjZmZmIHJnYmEodG9tYXRvLCAuMykpIHtcbiAgY29sb3I6ICRjb2xvclxufVxuXG5AbWl4aW4gbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSk7XG4gID4gbGkgKyBsaTpiZWZvcmUgeyBtYXJnaW4tbGVmdDogJHNwYWNlICsgNHB4OyB9XG59XG4iLCJAbWl4aW4gSGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBTZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBwYWRkaW5nOiAwIHIoMikgMCByKDEpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAvLyBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIC8vIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gIC8vIGJhY2tncm91bmQ6IHVybChcImltYWdlcy9hcnJvdy1kb3duLnN2Z1wiKVxuICAvLyAgICAgICAgICAgOTIlIDUwJSAvIDhweCAxMHB4XG4gIC8vICAgICAgICAgICBuby1yZXBlYXRcbiAgLy8gICAgICAgICAgIHRyYW5zcGFyZW50O1xuICAubm8tY3NzLWFwcGVhcmFuY2UgJiB7XG4gICAgQGluY2x1ZGUgc2N1dC1wYWRkaW5nKG4gMCk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gTm9ybWFsaXplKCkge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmUgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDA7XG59IiwiLy8gU3VzeVxuLy8gPT09PVxuXG5AaW1wb3J0ICdzdXN5L2xhbmd1YWdlL3N1c3knO1xuIiwiLy8gU3VzeSBOZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4kc3VzeS12ZXJzaW9uOiAyLjE7XG5cbkBpbXBvcnQgXCIuLi9zdVwiO1xuQGltcG9ydCBcIi4uL291dHB1dC9mbG9hdFwiO1xuXG5AaW1wb3J0IFwic3VzeS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1c3kvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1c3kvZ3JpZHNcIjtcbkBpbXBvcnQgXCJzdXN5L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRleHRcIjtcbkBpbXBvcnQgXCJzdXN5L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInN1c3kvc3BhblwiO1xuQGltcG9ydCBcInN1c3kvZ3V0dGVyc1wiO1xuQGltcG9ydCBcInN1c3kvaXNvbGF0ZVwiO1xuQGltcG9ydCBcInN1c3kvZ2FsbGVyeVwiO1xuQGltcG9ydCBcInN1c3kvcm93c1wiO1xuQGltcG9ydCBcInN1c3kvbWFyZ2luc1wiO1xuQGltcG9ydCBcInN1c3kvcGFkZGluZ1wiO1xuQGltcG9ydCBcInN1c3kvYmxlZWRcIjtcbkBpbXBvcnQgXCJzdXN5L2JyZWFrcG9pbnQtcGx1Z2luXCI7XG4iLCIvLyBTdVxuLy8gPT1cblxuQGltcG9ydCBcInN1L3V0aWxpdGllc1wiO1xuQGltcG9ydCBcInN1L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3UvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1L2dyaWRcIjtcbiIsIi8vIE1hcCBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBUcnVuY2F0ZSBMaXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiBhIGxpc3QsIHRydW5jYXRlZCB0byBhIGdpdmVuIGxlbmd0aFxuQGZ1bmN0aW9uIF9zdXN5LXRydW5jYXRlLWxpc3QoXG4gICRsaXN0LFxuICAkbGVuZ3RoXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgJF9yZXR1cm46IGlmKCRpIDw9ICRsZW5ndGgsIGFwcGVuZCgkX3JldHVybiwgbnRoKCRsaXN0LCAkaSkpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgR2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1nZXQoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46ICRtYXA7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIHR5cGUtb2YoJF9yZXR1cm4pID09IG1hcCB7XG4gICAgICAkX3JldHVybjogbWFwLWdldCgkX3JldHVybiwgJGtleSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIFNldFxuLy8gLS0tLS0tLS1cbi8vIC0gU2V0IGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtc2V0KFxuICAkbWFwLFxuICAka2V5cy12YWx1ZS4uLlxuKSB7XG4gICRfdmFsdWU6IG50aCgka2V5cy12YWx1ZSwgLTEpO1xuICAkX2tleXM6IF9zdXN5LXRydW5jYXRlLWxpc3QoJGtleXMtdmFsdWUsIGxlbmd0aCgka2V5cy12YWx1ZSkgLSAxKTtcbiAgJF9sZW5ndGg6IGxlbmd0aCgkX2tleXMpO1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkX2xlbmd0aCB7XG4gICAgJF9uOiAwIC0gJGk7XG4gICAgJF9sZXZlbDogX3N1c3ktdHJ1bmNhdGUtbGlzdCgkX2tleXMsICRfbGVuZ3RoICsgJF9uKTtcbiAgICAkX2xldmVsOiBfc3VzeS1kZWVwLWdldCgkbWFwLCAkX2xldmVsLi4uKTtcbiAgICAkX21lcmdlOiBudGgoJF9rZXlzLCAkX24pO1xuICAgICRfbWVyZ2U6ICgkX21lcmdlOiAkX3ZhbHVlKTtcbiAgICAkX3JldHVybjogaWYoJF9sZXZlbCwgbWFwLW1lcmdlKCRfbGV2ZWwsICRfbWVyZ2UpLCAkX21lcmdlKTtcbiAgICAkX3ZhbHVlOiAkX3JldHVybjtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBNZXJnZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIDIgb2JqZWN0cyBvZiBhbnkgZGVwdGgsIG1lcmdlZFxuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtbWVyZ2UoXG4gICRtYXAxLFxuICAkbWFwMlxuKSB7XG5cbiAgQGlmIHR5cGUtb2YoJG1hcDEpICE9IG1hcCBvciB0eXBlLW9mKCRtYXAyKSAhPSBtYXAge1xuICAgICRtYXAxOiAkbWFwMjtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAyIHtcbiAgICAgICRfbmV3OiAoJGtleTogX3N1c3lfZGVlcC1tZXJnZShtYXAtZ2V0KCRtYXAxLCAka2V5KSwgJHZhbHVlKSk7XG4gICAgICAkbWFwMTogbWFwLW1lcmdlKCRtYXAxLCAkX25ldyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbWFwMTtcbn1cblxuXG4vLyBEZWVwIEhhcy1LZXlcbi8vIC0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gdHJ1ZSBpZiBhIGRlZXAga2V5IGV4aXN0c1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtaGFzLWtleShcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogbnVsbDtcbiAgJF9zdG9wOiBmYWxzZTtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgbm90KCRfc3RvcCkge1xuICAgICAgJF9yZXR1cm46IG1hcC1oYXMta2V5KCRtYXAsICRrZXkpO1xuICAgIH1cblxuICAgIEBpZiAkX3JldHVybiB7XG4gICAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9zdG9wOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTZXR0aW5nc1xuLy8gPT09PT09PT1cblxuLy8gVmVyc2lvblxuLy8gLS0tLS0tLVxuJHN1LXZlcnNpb246IDEuMTtcblxuXG4vLyBEZWZhdWx0IFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBUaGUgYmFzaWMgc2V0dGluZ3NcbiRzdXN5LWRlZmF1bHRzOiAoXG4gIGNvbHVtbnM6IDQsXG4gIGd1dHRlcnM6IC4yNSxcbik7XG5cblxuLy8gVXNlciBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBEZWZpbmUgdGhlICRzdXN5IHZhcmlhYmxlIHdpdGggYSBtYXAgb2YgeW91ciBvd24gc2V0dGluZ3MuXG4vLyAtIFNldCBFSVRIRVIgJGNvbHVtbi13aWR0aCBPUiAkY29udGFpbmVyXG4vLyAtIFVzZSAkY29sdW1uLXdpZHRoIGZvciBzdGF0aWMgbGF5b3V0c1xuJHN1c3k6ICgpICFkZWZhdWx0O1xuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IEFkZCBkZWZhdWx0cyB0byBTdXN5XG5AbWl4aW4gc3VzeS1kZWZhdWx0cyhcbiAgJGRlZmF1bHRzXG4pIHtcbiAgJHN1c3ktZGVmYXVsdHM6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJGRlZmF1bHRzKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgU2V0XG4vLyAtLS0tLS0tLVxuLy8gQ2hhbmdlIG9uZSBzZXR0aW5nXG4vLyAtICRrZXkgICA6IHNldHRpbmcgbmFtZVxuLy8gLSAkdmFsdWUgOiBzZXR0aW5nIHZhbHVlXG5AbWl4aW4gc3VzeS1zZXQoXG4gICRrZXktdmFsdWUuLi5cbikge1xuICAkc3VzeTogX3N1c3ktZGVlcC1zZXQoJHN1c3ksICRrZXktdmFsdWUuLi4pICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm4gb25lIHNldHRpbmcgZnJvbSBhIGdyaWRcbi8vIC0gJGtleSAgICAgOiA8a2V5d29yZD5cbi8vIC0gJGxheW91dCAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gc3VzeS1nZXQoXG4gICRrZXksXG4gICRsYXlvdXQ6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJHN1c3kpXG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF9vcHRpb25zOiAkbGF5b3V0ICRzdXN5ICRzdXN5LWRlZmF1bHRzO1xuICAkX2JyZWFrOiBmYWxzZTtcbiAgJF9yZXR1cm46IG51bGw7XG5cbiAgQGVhY2ggJG9wdCBpbiAkX29wdGlvbnMge1xuICAgIEBpZiB0eXBlLW9mKCRvcHQpID09IG1hcCBhbmQgbm90KCRfYnJlYWspIHtcbiAgICAgICRfa2V5c2V0OiBfc3VzeS1kZWVwLWhhcy1rZXkoJG9wdCwgJGtleS4uLik7XG4gICAgICBAaWYgJF9rZXlzZXQge1xuICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1nZXQoJG9wdCwgJGtleS4uLik7XG4gICAgICAgICRfYnJlYWs6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIE1hdGggVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09XG5cblxuLy8gVmFsaWQgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGNvbHVtbiBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRjb2x1bW5zKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkY29sdW1ucykge1xuICAgICRyZXR1cm46ICRjb2x1bW5zO1xuICB9IEBlbHNlIGlmICR0eXBlID09IGxpc3Qge1xuICAgICRmYWlsOiBudWxsO1xuICAgIEBlYWNoICRjb2wgaW4gJGNvbHVtbnMge1xuICAgICAgQGlmIHR5cGUtb2YoJGNvbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgJGZhaWw6ICRmYWlsIG9yIGlmKHVuaXRsZXNzKCRjb2wpLCBudWxsLCB0cnVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHJldHVybjogaWYoJGZhaWwsICRyZXR1cm4sICRjb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiAkcmV0dXJuICE9ICRjb2x1bW5zIGFuZCBub3QoJHNpbGVudCkge1xuICAgICRyZXR1cm46IG51bGw7XG4gICAgJHdhcm46ICckY29sdW1ucyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyIG9yIGxpc3Qgb2YgdW5pdGxlc3MgbnVtYmVycy4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGNvbHVtbnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG4vLyBWYWxpZCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgZ3V0dGVyIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtZ3V0dGVycyhcbiAgJGd1dHRlcnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXJzKSB7XG4gICAgJHJldHVybjogJGd1dHRlcnM7XG4gIH0gQGVsc2UgaWYgbm90KCRzaWxlbnQpIHtcbiAgICAkd2FybjogJyRndXR0ZXJzIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRndXR0ZXJzfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBDb2x1bW4gbWF0aFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBJcyBTeW1tZXRyaWNhbFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIGdyaWQgaXMgc3ltbWV0cmljYWwuXG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gaXMtc3ltbWV0cmljYWwoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpZih0eXBlLW9mKCRjb2x1bW5zKSA9PSBudW1iZXIsICRjb2x1bW5zLCBudWxsKTtcbn1cblxuXG4vLyBTdXN5IENvdW50XG4vLyAtLS0tLS0tLS0tXG4vLyBGaW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiBhIGdpdmVuIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktY291bnQoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykgb3IgbGVuZ3RoKCRjb2x1bW5zKTtcbn1cblxuXG4vLyBTdXN5IFN1bVxuLy8gLS0tLS0tLS1cbi8vIEZpbmQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5LXN1bShcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuXG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQgPT0gd2lkZSwgMCwgaWYoJHNwcmVhZCA9PSB3aWRlciwgMSwgLTEpKTtcbiAgJGd1dHRlci1zdW06IChzdXN5LWNvdW50KCRjb2x1bW5zKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICRjb2x1bW4tc3VtOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgQGlmIG5vdCgkY29sdW1uLXN1bSkge1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGNvbHVtbnMge1xuICAgICAgJGNvbHVtbi1zdW06ICgkY29sdW1uLXN1bSBvciAwKSArICRjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtO1xufVxuXG5cbi8vIFN1c3kgU2xpY2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBvZiBjb2x1bW5zIGF0IGEgZ2l2ZW4gbG9jYXRpb24uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkc3ViLWNvbHVtbnM6ICRzcGFuO1xuXG4gIEBpZiBub3QoaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpKSB7XG4gICAgJGxvY2F0aW9uOiAkbG9jYXRpb24gb3IgMTtcbiAgICAkc3ViLWNvbHVtbnM6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRzcGFuKSB7XG4gICAgICAkc3ViLWNvbHVtbnM6IGFwcGVuZCgkc3ViLWNvbHVtbnMsIG50aCgkY29sdW1ucywgJGkpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG4vLyBTdXN5XG4vLyAtLS0tXG4vLyBGaW5kIHRoZSBzdW0gb2YgYSBjb2x1bW4tc3Bhbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5KFxuICAkc3BhbixcbiAgJGxvY2F0aW9uICAgICA6IGZhbHNlLFxuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICAgICAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgICAgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG4gICRzcGFuOiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcblxuICBAcmV0dXJuIHN1c3ktc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCk7XG59XG4iLCIvLyBGbG9hdCBBUElcbi8vID09PT09PT09PVxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbkBpbXBvcnQgXCJmbG9hdC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJmbG9hdC9zcGFuXCI7XG5AaW1wb3J0IFwiZmxvYXQvZW5kXCI7XG5AaW1wb3J0IFwiZmxvYXQvaXNvbGF0ZVwiO1xuIiwiLy8gU2hhcmVkIEFQSVxuLy8gPT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydFwiO1xuXG5AaW1wb3J0IFwic2hhcmVkL2luc3BlY3RcIjtcbkBpbXBvcnQgXCJzaGFyZWQvb3V0cHV0XCI7XG5AaW1wb3J0IFwic2hhcmVkL2RpcmVjdGlvblwiO1xuQGltcG9ydCBcInNoYXJlZC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic2hhcmVkL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNoYXJlZC9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic2hhcmVkL3BhZGRpbmdcIjtcblxuXG5cbiIsIi8vIFN1c3kgQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydC9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9wcmVmaXhcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3JlbVwiO1xuQGltcG9ydCBcInN1cHBvcnQvY2xlYXJmaXhcIjtcbiIsIi8vIEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgU3VwcG9ydCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgYnJlYWtwb2ludDogdHJ1ZSxcbiAgICBib3gtc2l6aW5nOiB0cnVlLFxuICAgIHJlbTogdHJ1ZSxcbiAgKSxcbikpO1xuXG5cbi8vIFN1c3kgU3VwcG9ydCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VuZCBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0byB0aGUgcHJvcGVyIHN1cHBvcnQgbW9kdWxlcy5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXN1cHBvcnQoXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgLy8gQmFja2dyb3VuZCBTdXBwb3J0XG4gIEBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtaW1hZ2UoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1zaXplIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtc2l6ZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLW9yaWdpbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbigkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWNsaXAge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1jbGlwKCR2YWwpO1xuICB9XG5cbiAgLy8gQm94LVNpemluZyBTdXBwb3J0XG4gIEBlbHNlIGlmICRwcm9wID09IGJveC1zaXppbmcge1xuICAgIEBpbmNsdWRlIHN1c3ktYm94LXNpemluZygkdmFsKTtcbiAgfVxuXG4gIC8vIFJlbSBTdXBwb3J0XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cblxuXG4vLyBTdXN5IFN1cHBvcnQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBzdXBwb3J0IG9mIGEgZmVhdHVyZS5cbi8vIC0gJGZlYXR1cmUgICAgICAgOiA8c3RyaW5nPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nIFwicmVtXCIgb3IgXCJib3gtc2l6aW5nXCJcbi8vIC0gJHJlcXVpcmVtZW50cyAgOiA8bWFwPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nICh2YXJpYWJsZTogcmVtLXdpdGgtcHgtZmFsbGJhY2ssIG1peGluOiByZW0pXG4vLyAtICR3YXJuICAgICAgICAgIDogPGJvb2w+XG5AZnVuY3Rpb24gc3VzeS1zdXBwb3J0KFxuICAkZmVhdHVyZSxcbiAgJHJlcXVpcmVtZW50czogKCksXG4gICR3YXJuOiB0cnVlXG4pIHtcbiAgJF9zdXBwb3J0OiBzdXN5LWdldCh1c2UtY3VzdG9tICRmZWF0dXJlKTtcblxuICBAaWYgJF9zdXBwb3J0IHtcbiAgICAkX2ZhaWw6IGZhbHNlO1xuXG4gICAgQGVhY2ggJF90eXBlLCAkX3JlcSBpbiAkcmVxdWlyZW1lbnRzIHtcbiAgICAgIEBlYWNoICRfaSBpbiAkX3JlcSB7XG4gICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcblxuICAgICAgICBAaWYgbm90KCRfcGFzcykge1xuICAgICAgICAgICRfZmFpbDogdHJ1ZTtcbiAgICAgICAgICBAaWYgJHdhcm4ge1xuICAgICAgICAgICAgQHdhcm4gXCJZb3UgcmVxdWVzdGVkIGN1c3RvbSBzdXBwb3J0IG9mICN7JGZlYXR1cmV9LCBidXQgdGhlICN7JF9pfSAjeyRfdHlwZX0gaXMgbm90IGF2YWlsYWJsZS5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3N1cHBvcnQ6IGlmKCRfZmFpbCwgZmFsc2UsICRfc3VwcG9ydCk7XG4gIH1cblxuICBAcmV0dXJuICRfc3VwcG9ydDtcbn1cbiIsIi8vIFN1c3kgUHJlZml4XG4vLyA9PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IHNpbXBsZSBwcmVmaXhlZCBwcm9wZXJ0aWVzLlxuLy8gLSAkcHJvcCAgICAgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgICAgICA6IDxjc3MgdmFsdWU+XG4vLyAtIFskcHJlZml4XSAgOiA8YnJvd3NlciBwcmVmaXggbGlzdD5cbkBtaXhpbiBzdXN5LXByZWZpeChcbiAgJHByb3AsXG4gICR2YWwsXG4gICRwcmVmaXg6IG9mZmljaWFsXG4pIHtcbiAgQGVhY2ggJGZpeCBpbiAkcHJlZml4IHtcbiAgICAkZml4OiBpZigkZml4ID09IG9mZmljaWFsIG9yIG5vdCgkZml4KSwgJHByb3AsICctI3skZml4fS0jeyRwcm9wfScpO1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRmaXgsICR2YWwpO1xuICB9XG59XG4iLCIvLyBCYWNrZ3JvdW5kIFByb3BlcnRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEJhY2tncm91bmQgSW1hZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtaW1hZ2U+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2Vcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtaW1hZ2UsIChtaXhpbjogYmFja2dyb3VuZC1pbWFnZSksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLi4uKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBTaXplXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLXNpemU+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1zaXplKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgkc2l6ZSk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemU7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIE9yaWdpblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtb3JpZ2luPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oXG4gICRvcmlnaW5cbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLW9yaWdpbikpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRvcmlnaW47XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIENsaXBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1jbGlwPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1jbGlwKFxuICAkY2xpcFxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtY2xpcCkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNsaXAoJGNsaXApO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwO1xuICB9XG59XG4iLCIvLyBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09XG5cbi8vIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkbW9kZWw6IDxib3gtc2l6aW5nPlxuQG1peGluIHN1c3ktYm94LXNpemluZyhcbiAgJG1vZGVsOiBjb250ZW50LWJveFxuKSB7XG4gIEBpZiAkbW9kZWwge1xuICAgIEBpZiBzdXN5LXN1cHBvcnQoYm94LXNpemluZywgKG1peGluOiBib3gtc2l6aW5nKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKCRtb2RlbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJlZml4OiAobW96LCB3ZWJraXQsIG9mZmljaWFsKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktcHJlZml4KGJveC1zaXppbmcsICRtb2RlbCwgJHByZWZpeCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBEZWJ1Z2dpbmdcbi8vID09PT09PT09PVxuXG4vLyBTdXN5IEluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8gT3V0cHV0IGFyZ3VtZW50cyBwYXNzZWQgdG8gYSBpbnNwZWN0LlxuLy8gLSAkbWl4aW4gIDogPHN1c3kgbWl4aW4+XG4vLyAtICRpbnNwZWMgICA6IDxtaXhpbiBhcmd1bWVudHM+XG5cbkBtaXhpbiBzdXN5LWluc3BlY3QoXG4gICRtaXhpbixcbiAgJGluc3BlY3Rcbikge1xuICAkc2hvdzogZmFsc2U7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGluc3BlY3Qge1xuICAgIEBpZiBpbmRleCgkaXRlbSwgaW5zcGVjdCkge1xuICAgICAgJHNob3c6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzaG93IG9yIHN1c3ktZ2V0KGRlYnVnIGluc3BlY3QpIHtcbiAgICAtc3VzeS0jeyRtaXhpbn06IGluc3BlY3QoJGluc3BlY3QpO1xuICB9XG59XG4iLCIvLyBPdXRwdXRcbi8vID09PT09PVxuXG4vLyBPdXRwdXRcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IENTUyB3aXRoIHByb3BlciBicm93c2VyIHN1cHBvcnQuXG4vLyAtICRzdHlsZXMgIDogPG1hcCBvZiBjc3MgcHJvcGVydHktdmFsdWUgcGFpcnM+XG5AbWl4aW4gb3V0cHV0KFxuICAkc3R5bGVzXG4pIHtcbiAgQGVhY2ggJHByb3AsICR2YWwgaW4gJHN0eWxlcyB7XG4gICAgQGluY2x1ZGUgc3VzeS1zdXBwb3J0KCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gR3JpZCBCYWNrZ3JvdW5kIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuLy8gLSBTdWItcGl4ZWwgcm91bmRpbmcgY2FuIGxlYWQgdG8gc2V2ZXJhbCBwaXhlbHMgdmFyaWF0aW9uIGJldHdlZW4gYnJvd3NlcnMuXG5cbi8vIEdyaWQgQmFja2dyb3VuZCBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGltYWdlOiBiYWNrZ3JvdW5kLWltYWdlXG4vLyAtICRzaXplOiBiYWNrZ3JvdW5kLXNpemVcbi8vIC0gJGNsaXA6IGJhY2tncm91bmQtY2xpcFxuLy8gLSBbJGZsb3ddOiBsdHIgfCBydGxcbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0IChcbiAgJGltYWdlLFxuICAkc2l6ZTogbnVsbCxcbiAgJGNsaXA6IG51bGwsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2UsXG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZSxcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBmcm9tKCRmbG93KSB0b3AsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBNYXJnaW5zIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gTWFyZ2luIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBtYXJnaW4tb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUGFkZGluZyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIFBhZGRpbmcgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBwYWRkaW5nLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBDb250YWluZXJcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGZsb2F0LWNvbnRhaW5lcihcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gIEBpbmNsdWRlIHN1c3ktY2xlYXJmaXg7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1vdXRwdXQoJHdpZHRoLCAkanVzdGlmeSwgJHByb3BlcnR5KTtcbn1cbiIsIi8vIEZsb2F0IFNwYW4gQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBTcGFuIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHdpZHRoICAgICAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG9hdF0gICAgICAgICAgIDogZnJvbSB8IHRvXG4vLyAtIFskbWFyZ2luLWJlZm9yZV0gICA6IDxsZW5ndGg+XG4vLyAtIFskbWFyZ2luLWFmdGVyXSAgICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1iZWZvcmVdICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1hZnRlcl0gICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gICAgICAgICAgICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LXNwYW4tb3V0cHV0KFxuICAkd2lkdGgsXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbSxcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsLFxuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGwsXG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbCxcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsLFxuICAkZmxvdyAgICAgICAgICAgICA6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvICAgICA6IHRvKCRmbG93KTtcbiAgJGZyb20gICA6IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aDogJHdpZHRoLFxuICAgIGZsb2F0OiBpZigkZmxvYXQgPT0gdG8sICR0bywgbnVsbCkgb3IgaWYoJGZsb2F0ID09IGZyb20sICRmcm9tLCBudWxsKSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkcGFkZGluZy1hZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IElzb2xhdGlvbiBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gSXNvbGF0ZSBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRwdXNoICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBpc29sYXRlLW91dHB1dChcbiAgJHB1c2gsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiAkZnJvbSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRwdXNoLFxuICAgIG1hcmdpbi0jeyR0b306IC0xMDAlLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFN1c3kgU2V0dGluZ3Ncbi8vID09PT09PT09PT09PT1cblxuLy8gU3VzeSBMYW5ndWFnZSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBjZW50ZXIsXG4gIGd1dHRlci1wb3NpdGlvbjogYWZ0ZXIsXG4gIGdsb2JhbC1ib3gtc2l6aW5nOiBjb250ZW50LWJveCxcbiAgZGVidWc6IChcbiAgICBpbWFnZTogaGlkZSxcbiAgICBjb2xvcjogcmdiYSgjNjZmLCAuMjUpLFxuICAgIG91dHB1dDogYmFja2dyb3VuZCxcbiAgICB0b2dnbGU6IHRvcCByaWdodCxcbiAgKSxcbikpO1xuXG5cbi8vIFZhbGlkIEtleXdvcmQgVmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFOiBET05UJ1QgVE9VQ0hcbiRzdXN5LWtleXdvcmRzOiAoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogc3RhdGljIGZsdWlkLFxuICBvdXRwdXQ6IGlzb2xhdGUgZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogbGVmdCBjZW50ZXIgcmlnaHQsXG4gIGZsb3c6IGx0ciBydGwsXG4gIGd1dHRlci1wb3NpdGlvbjogYmVmb3JlIGFmdGVyIHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljLFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94IGNvbnRlbnQtYm94LFxuICBzcGFuOiBmdWxsLFxuICBlZGdlOiBmaXJzdCBhbHBoYSBsYXN0IG9tZWdhIGZ1bGwsXG4gIHNwcmVhZDogbmFycm93IHdpZGUgd2lkZXIsXG4gIGd1dHRlci1vdmVycmlkZTogbm8tZ3V0dGVycyBuby1ndXR0ZXIsXG4gIHJvbGU6IG5lc3QsXG4gIGNsZWFyOiBicmVhayBub2JyZWFrLFxuICBkZWJ1ZyBpbWFnZTogc2hvdyBoaWRlIHNob3ctY29sdW1ucyBzaG93LWJhc2VsaW5lLFxuICBkZWJ1ZyBvdXRwdXQ6IGJhY2tncm91bmQgb3ZlcmxheSxcbik7XG5cblxuLy8gUGFyc2UgU3VzeSBLZXl3b3JkcyBhbmQgTWFwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNldHRpbmdzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gc3RyaW5nc1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IHN0cmluZyB7XG4gICAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkc3VzeS1rZXl3b3JkcyB7XG4gICAgICAgICAgQGlmIGluZGV4KCR2YWx1ZSwgJGl0ZW0pIHtcbiAgICAgICAgICAgICRfa2V5LXZhbHVlOiBhcHBlbmQoJGtleSwgJGl0ZW0pO1xuICAgICAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtc2V0KCRfcmV0dXJuLCAkX2tleS12YWx1ZS4uLik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAvLyBtYXBzXG4gICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IG1hcCB7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIENvbHVtbnMgJiBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWxheW91dChcbiAgJHNob3J0XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuICAkX2NvbHVtbnM6ICgpO1xuICAkX2d1dHRlcnM6IG51bGw7XG5cbiAgQGlmIG5vdCh1bml0bGVzcyhudGgobnRoKCRzaG9ydCwgMSksIDEpKSkge1xuICAgICRfZ3V0dGVyczogbnRoKCRzaG9ydCwgMSk7XG4gIH0gQGVsc2Uge1xuICAgICRfY29sdW1uczogKGNvbHVtbnM6IG50aCgkc2hvcnQsIDEpKTtcbiAgICAkX2d1dHRlcnM6IGlmKGxlbmd0aCgkc2hvcnQpID4gMSwgbnRoKCRzaG9ydCwgMiksICRfZ3V0dGVycyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkX2d1dHRlcnMpID09IGxpc3QgYW5kIGxlbmd0aCgkX2d1dHRlcnMpID4gMCB7XG4gICAgJF9ndXR0ZXJzOiAoXG4gICAgICBndXR0ZXJzOiBudGgoJF9ndXR0ZXJzLCAyKSAvIG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICAgY29sdW1uLXdpZHRoOiBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlcnM6IGlmKCRfZ3V0dGVycywgKGd1dHRlcnM6ICRfZ3V0dGVycyksICgpKTtcbiAgfVxuXG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfY29sdW1ucyk7XG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfZ3V0dGVycyk7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHcmlkL0NvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWdyaWQoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogcGFyc2Utc2V0dGluZ3MoJHNob3J0KTtcbiAgJF9sYXlvdXQ6ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gbnVtYmVyIG9yIGxpc3RcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IG9yIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICAgJF9sYXlvdXQ6IGFwcGVuZCgkX2xheW91dCwgJGl0ZW0pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY29udGFpbmVyOiAkaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9sYXlvdXQ6IGlmKGxlbmd0aCgkX2xheW91dCkgPiAwLCBwYXJzZS1sYXlvdXQoJF9sYXlvdXQpLCAkX2xheW91dCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkX3JldHVybiwgJF9sYXlvdXQpO1xufVxuXG5cbi8vIFBhcnNlIFNwYW5cbi8vIC0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zcGFuKFxuICAkc2hvcnQsXG4gICRrZXk6IHNwYW5cbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgICRfYXQ6IGluZGV4KCRzaG9ydCwgYXQpO1xuXG4gICAgQGlmICRfYXQge1xuICAgICAgJF9sb2NpOiAkX2F0ICsgMTtcbiAgICAgICRfbG9jYXRpb246IG50aCgkc2hvcnQsICRfbG9jaSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAobG9jYXRpb246ICRfbG9jYXRpb24pKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfYXQsIG51bGwpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9sb2NpLCBudWxsKTtcbiAgICB9XG5cbiAgICAkX2k6IDE7XG4gICAgJF9zcGFuOiAoKTtcblxuICAgIEB3aGlsZSAkX2kgPD0gbGVuZ3RoKCRzaG9ydCkge1xuICAgICAgJF90aGlzOiBudGgoJHNob3J0LCAkX2kpO1xuXG4gICAgICBAaWYgdHlwZS1vZigkX3RoaXMpID09IG51bWJlciB7XG4gICAgICAgICRfc3BhbjogYXBwZW5kKCRfc3BhbiwgJF90aGlzKTtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgIH0gQGVsc2UgaWYgJF90aGlzID09IG9mIHtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgICAgJF9pOiBsZW5ndGgoJHNob3J0KSArIDE7XG4gICAgICB9XG5cbiAgICAgICRfaTogJF9pICsgMTtcbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCRfc3BhbikgPiAwIHtcbiAgICAgICRfc3BhbjogaWYobGVuZ3RoKCRfc3BhbikgPT0gMSwgbnRoKCRfc3BhbiwgMSksICRfc3Bhbik7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJGtleTogJF9zcGFuKSk7XG4gICAgfVxuXG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgcGFyc2UtZ3JpZCgkc2hvcnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWd1dHRlcnMoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX2d1dHRlcnM6IHBhcnNlLXNwYW4oJHNob3J0LCBndXR0ZXItb3ZlcnJpZGUpO1xuICAkX3NwYW46IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJF9ndXR0ZXJzKTtcblxuICBAaWYgJF9zcGFuIGFuZCBub3QobWFwLWdldCgkX2d1dHRlcnMsIGNvbHVtbnMpKSB7XG4gICAgJF9jb250ZXh0OiAoKTtcbiAgICAkX25ldzogKCk7XG5cbiAgICBAZWFjaCAkaXRlbSBpbiAkX3NwYW4ge1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgJF9jb250ZXh0OiBhcHBlbmQoJF9jb250ZXh0LCAkaXRlbSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJF9uZXc6IGFwcGVuZCgkX25ldywgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICRfY29udGV4dDogcGFyc2UtZ3JpZCgkX2NvbnRleHQpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDAsIG51bGwsICRfbmV3KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAxLCBudGgoJF9uZXcsIDEpLCAkX25ldyk7XG4gICAgJF9uZXc6IChndXR0ZXItb3ZlcnJpZGU6IGlmKCRfbmV3ICE9ICRfc3BhbiwgJF9uZXcsICRfc3BhbikpO1xuXG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX25ldyk7XG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX2NvbnRleHQpO1xuICB9XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG4iLCIvLyBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09XG5cblxuLy8gVmFsaWRhdGUgQ29sdW1uIE1hdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1uLW1hdGgoXG4gICRtYXRoLFxuICAkY29sdW1uLXdpZHRoXG4pIHtcbiAgQGlmICRtYXRoID09IHN0YXRpYyBhbmQgbm90KCRjb2x1bW4td2lkdGgpIHtcbiAgICBAZXJyb3IgJ1N0YXRpYyBtYXRoIHJlcXVpcmVzIGEgdmFsaWQgY29sdW1uLXdpZHRoIHNldHRpbmcuJztcbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi13aWR0aDtcbn1cbiIsIi8vIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBTZXQgYSBuZXcgbGF5b3V0IHVzaW5nIGEgc2hvcnRoYW5kXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXlvdXQsICRpbnNwZWN0KTtcbn1cblxuXG4vLyBVc2UgR3JpZFxuLy8gLS0tLS0tLS1cbi8vIFVzZSBhbiBhcmJpdHJhcnkgbGF5b3V0IGZvciBhIHNlY3Rpb24gb2YgY29kZVxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIHdpdGgtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJG9sZCAgICAgIDogJHN1c3k7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qod2l0aC1sYXlvdXQsICRpbnNwZWN0KTtcblxuICBAY29udGVudDtcblxuICAkc3VzeTogJG9sZCAhZ2xvYmFsO1xufVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gYSBwYXJzZWQgbGF5b3V0IG1hcCBiYXNlZCBvbiBzaG9ydGhhbmQgc3ludGF4XG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBsYXlvdXQoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgQHJldHVybiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xufVxuXG5cbi8vIEdldCBMYXlvdXRcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIG5ldyBsYXlvdXQgYmFzZWQgb24gY3VycmVudCBhbmQgZ2l2ZW4gc2V0dGluZ3Ncbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBmdW5jdGlvbiBfZ2V0LWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRsYXlvdXQ6IGxheW91dCgkbGF5b3V0KTtcbiAgQHJldHVybiBpZigkY2xlYW4sICRsYXlvdXQsIF9zdXN5LWRlZXAtbWVyZ2UoJHN1c3ksICRsYXlvdXQpKTtcbn1cbiIsIi8vIFN1c3kgQm94IFNpemluZ1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBib3ggbW9kZWwgZ2xvYmFsbHkgb24gYWxsIGVsZW1lbnRzLlxuLy8gLSBbJGJveF06IGJvcmRlci1ib3ggfCBjb250ZW50LWJveFxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBnbG9iYWwtYm94LXNpemluZyhcbiAgJGJveDogc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpLFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdDogJGJveDtcblxuICBAaWYgJGluaGVyaXQge1xuICAgIEBhdC1yb290IHtcbiAgICAgICBodG1sIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgICAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cbiAgICAgfVxuICB9IEBlbHNlIHtcbiAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2xvYmFsLWJveC1zaXppbmcsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgdXBkYXRlLWJveC1tb2RlbCgkYm94KTtcbn1cblxuLy8gQm9yZGVyIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBIGxlZ2FjeSBzaG9ydGN1dC4uLlxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBib3JkZXItYm94LXNpemluZyhcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCwgJGluaGVyaXQpO1xufVxuXG4vLyBVcGRhdGUgQm94IE1vZGVsXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBVcGRhdGVzIGdsb2JhbCBib3ggbW9kZWwgc2V0dGluZ1xuQG1peGluIHVwZGF0ZS1ib3gtbW9kZWwoXG4gICRib3hcbikge1xuICBAaWYgJGJveCAhPSBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykge1xuICBAaW5jbHVkZSBzdXN5LXNldChnbG9iYWwtYm94LXNpemluZywgJGJveCk7XG4gIH1cbn1cbiIsIi8vIENvbnRleHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBOZXN0ZWQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBncmlkIGZvciBuZXN0ZWQgY29udGV4dC5cbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuQGZ1bmN0aW9uIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkY29udGV4dCAgICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkc3BhbiAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRjb250ZXh0KTtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGNvbnRleHQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcblxuICBAcmV0dXJuIHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xufVxuXG4vLyBOZXN0ZWQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFVzZSBhIHN1YnNldCBncmlkIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbi8vIC0gQGNvbnRlbnQgICA6IDxjb250ZW50PlxuQG1peGluIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRvbGQgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpO1xuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiBuZXN0ZWQoJGNvbnRleHQpKSkgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobmVzdGVkLCAkaW5zcGVjdCk7XG4gIEBjb250ZW50O1xuXG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6ICRvbGQpKSAhZ2xvYmFsO1xufVxuIiwiLy8gQmFja2dyb3VuZCBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IGZhbHNlO1xuXG5cbi8vIFNob3cgR3JpZC9zXG4vLyAtLS0tLS0tLS0tLVxuLy8gU2hvdyBncmlkIG9uIGFueSBlbGVtZW50IHVzaW5nIGVpdGhlciBiYWNrZ3JvdW5kIG9yIG92ZXJsYXkuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIHNob3ctZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3Q6ICRncmlkO1xuICAkX291dHB1dDogZGVidWctZ2V0KG91dHB1dCwgJGdyaWQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzaG93LWdyaWQsICRpbnNwZWN0KTtcbiAgQGlmICRfb3V0cHV0ID09IG92ZXJsYXkgYW5kIHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCkgIT0gaGlkZSB7XG4gICAgQGluY2x1ZGUgb3ZlcmxheS1ncmlkKCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvdy1ncmlkcyhcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRncmlkKTtcbn1cblxuLy8gQmFja2dyb3VuZCBHcmlkXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNob3cgYSBncmlkIGJhY2tncm91bmQgb24gYW55IGVsZW1lbnQuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIGJhY2tncm91bmQtZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGdyaWQ7XG4gICRfb3V0cHV0ICA6IGdldC1iYWNrZ3JvdW5kKCRncmlkKTtcblxuICBAaWYgbGVuZ3RoKCRfb3V0cHV0KSA+IDAge1xuICAgICRfZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpO1xuXG4gICAgJF9pbWFnZTogKCk7XG4gICAgQGVhY2ggJG5hbWUsICRsYXllciBpbiBtYXAtZ2V0KCRfb3V0cHV0LCBpbWFnZSkge1xuICAgICAgJF9kaXJlY3Rpb246IGlmKCRuYW1lID09IGJhc2VsaW5lLCB0byBib3R0b20sIHRvIHRvKCRfZmxvdykpO1xuICAgICAgJF9pbWFnZTogYXBwZW5kKCRfaW1hZ2UsIGxpbmVhci1ncmFkaWVudCgkX2RpcmVjdGlvbiwgJGxheWVyKSwgY29tbWEpO1xuICAgIH1cbiAgICAkX291dHB1dDogbWFwLW1lcmdlKCRfb3V0cHV0LCAoaW1hZ2U6ICRfaW1hZ2UpKTtcblxuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICAgIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChiYWNrZ3JvdW5kLWdyaWQsICRpbnNwZWN0KTtcbiAgfVxufVxuXG5cbi8vIE92ZXJsYXkgR3JpZFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBHZW5lcmF0ZSBhbiBpY29uIHRvIHRyaWdnZXIgZ3JpZC1vdmVybGF5cyBvbiBhbnkgZ2l2ZW4gZWxlbWVudHMuXG4vLyAkZ3JpZHMuLi4gIDogPHNlbGVjdG9yPiBbPHNldHRpbmdzPl0gWywgPHNlbGVjdG9yPl0qXG5AbWl4aW4gb3ZlcmxheS1ncmlkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGlmIG5vdCgkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHMpIHtcbiAgICBAYXQtcm9vdCBoZWFkIHsgQGluY2x1ZGUgb3ZlcmxheS1oZWFkKCRncmlkKTsgfVxuICAgIEBhdC1yb290IGhlYWQ6YmVmb3JlIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpob3ZlciB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlci1ob3ZlcjsgfVxuICAgICRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgaGVhZDpob3ZlciB+ICYsXG4gIGhlYWQ6aG92ZXIgfiBib2R5ICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLW92ZXJsYXktYmFzZTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlciB7XG4gIGNvbnRlbnQ6IFwifHx8XCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udDoge1xuICAgIGZhbWlseTogc2Fucy1zZXJpZjtcbiAgICBzaXplOiAxNnB4O1xuICAgIHdlaWdodDogYm9sZDtcbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXIgSG92ZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXItaG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuNSk7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgSGVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGhlYWQ+IHN0eWxlcyB0byBjcmVhdGUgZ3JpZCBvdmVybGF5IHRvZ2dsZVxuQG1peGluIG92ZXJsYXktaGVhZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRfdG9nZ2xlOiBkZWJ1Zy1nZXQodG9nZ2xlLCAkZ3JpZCk7XG4gICRfaG9yejogbnVsbDtcbiAgJF92ZXJ0OiBudWxsO1xuXG4gIEBlYWNoICRzaWRlIGluICRfdG9nZ2xlIHtcbiAgICAkX2hvcno6IGlmKCRzaWRlID09IGxlZnQgb3IgJHNpZGUgPT0gcmlnaHQsICRzaWRlLCAkX2hvcnopO1xuICAgICRfdmVydDogaWYoJHNpZGUgPT0gdG9wIG9yICRzaWRlID09IGJvdHRvbSwgJHNpZGUsICRfdmVydCk7XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICAjeyRfaG9yen06IDEwcHg7XG4gICN7JF92ZXJ0fTogMTBweDtcbiAgei1pbmRleDogOTk5O1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjI1KTtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gR3JpZCBPdmVybGF5IEJhc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmFzZSBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIG92ZXJsYXlcbkBtaXhpbiBncmlkLW92ZXJsYXktYmFzZSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICB6LWluZGV4OiA5OTg7XG59XG5cblxuLy8gR2V0IFN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLXN5bShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgICAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9ndXR0ZXJzICAgICAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGdyaWQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRncmlkKTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGdyaWQpO1xuXG4gICRfY29sb3IgICAgICAgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfdHJhbnMgICAgICAgICA6IHRyYW5zcGFyZW50O1xuICAkX2xpZ2h0ICAgICAgICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG5cbiAgJF9lbmQgICAgICAgICAgIDogMSArICRfZ3V0dGVycztcbiAgJF9hZnRlciAgICAgICAgIDogcGVyY2VudGFnZSgxLyRfZW5kKTtcbiAgJF9zdG9wcyAgICAgICAgIDogKCk7XG4gICRfc2l6ZSAgICAgICAgICA6IHNwYW4oMSAkZ3JpZCB3aWRlKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodDtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3BsaXQ6ICRfZ3V0dGVycy8yO1xuICAgICRfYmVmb3JlOiBwZXJjZW50YWdlKCRfc3BsaXQvJF9lbmQpO1xuICAgICRfYWZ0ZXI6IHBlcmNlbnRhZ2UoKDEgKyAkX3NwbGl0KS8kX2VuZCk7XG4gICAgJF9zdG9wczogJF90cmFucyAkX2JlZm9yZSwgJF9jb2xvciAkX2JlZm9yZSwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9XG5cbiAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICRfc2l6ZTogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkgKiAkX2VuZDtcbiAgfVxuXG4gICRfb3V0cHV0OiAoXG4gICAgaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSxcbiAgICBzaXplOiAkX3NpemUsXG4gICk7XG5cbiAgQHJldHVybiAkX291dHB1dDtcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEluc2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1pbnNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgU3BsaXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1zcGxpdChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRzdGFydCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuXG4gICAgJF9lbmQ6ICRzdGFydCArIHNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRfZW5kLCBjb21tYSk7XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIE91dHNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLW91dHNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfdHJhbnMgICA6IHRyYW5zcGFyZW50O1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGd1dHRlcjogZ2V0LXNwYW4td2lkdGgoZmlyc3QgJGxvY2F0aW9uICRncmlkKTtcblxuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuXG4gICAgICAkZ3V0dGVyOiAkX2xpZ2h0ICRndXR0ZXIsICRfdHJhbnMgJGd1dHRlciwgJF90cmFucyAkX2VuZDtcbiAgICAgICR0aGlzLXN0b3A6IGpvaW4oJHRoaXMtc3RvcCwgJGd1dHRlciwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtYXN5bShcbiAgJGdyaWRcbikge1xuICAkX3N0b3BzOiAoKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0taW5zaWRlKCRncmlkKTtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLXNwbGl0KCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tb3V0c2lkZSgkZ3JpZCk7XG4gIH1cblxuICBAcmV0dXJuIChpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpKTtcbn1cblxuXG4vLyBHZXQgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9zaG93ICAgIDogc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKTtcbiAgJF9yZXR1cm4gIDogKCk7XG5cbiAgQGlmICRfc2hvdyBhbmQgJF9zaG93ICE9ICdoaWRlJyB7XG4gICAgJF9jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICAkX3N5bTogaXMtc3ltbWV0cmljYWwoJF9jb2x1bW5zKTtcbiAgICAgICRfcmV0dXJuOiBpZigkX3N5bSwgZ2V0LWJhY2tncm91bmQtc3ltKCRncmlkKSwgZ2V0LWJhY2tncm91bmQtYXN5bSgkZ3JpZCkpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGNvbnRlbnQtYm94KSk7XG4gICAgfVxuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1jb2x1bW5zJ1xuICAgICAgYW5kIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoYmFzZS1saW5lLWhlaWdodClcbiAgICAgIGFuZCB0eXBlLW9mKCRiYXNlLWxpbmUtaGVpZ2h0KSA9PSAnbnVtYmVyJ1xuICAgICAgYW5kIG5vdCB1bml0bGVzcygkYmFzZS1saW5lLWhlaWdodCkge1xuICAgICAgJF9jb2xvcjogdmFyaWFibGUtZXhpc3RzKCdncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3InKTtcbiAgICAgICRfY29sb3I6IGlmKCRfY29sb3IsICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICMwMDApO1xuXG4gICAgICAkX2ltYWdlOiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSk7XG4gICAgICAkX3NpemU6IG1hcC1nZXQoJF9yZXR1cm4sIHNpemUpO1xuICAgICAgJF9iYXNlbGluZTogKGJhc2VsaW5lOiAoJF9jb2xvciAxcHgsIHRyYW5zcGFyZW50IDFweCkpO1xuICAgICAgJF9iYXNlbGluZS1zaXplOiAxMDAlICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoXG4gICAgICAgIGltYWdlOiBpZigkX2ltYWdlLCBtYXAtbWVyZ2UoJF9pbWFnZSwgJF9iYXNlbGluZSksICRfYmFzZWxpbmUpLFxuICAgICAgICBzaXplOiBpZigkX3NpemUsICgkX3NpemUsICRfYmFzZWxpbmUtc2l6ZSksICRfYmFzZWxpbmUtc2l6ZSksXG4gICAgICApKTtcblxuICAgICAgQGlmICRfc2hvdyA9PSAnc2hvdycge1xuICAgICAgICAkX2NsaXA6IG1hcC1nZXQoJF9yZXR1cm4sIGNsaXApO1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogam9pbigkX2NsaXAsIGJvcmRlci1ib3gsIGNvbW1hKSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJF9zaG93ID09ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICBAd2FybiAnUGxlYXNlIHByb3ZpZGUgYSAkYmFzZS1saW5lLWhlaWdodCB3aXRoIHRoZSBkZXNpcmVkIGhlaWdodCBhbmQgdW5pdHMnO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSkge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChmbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gR2V0IERlYnVnXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgdmFsdWUgb2YgYSBkZWJ1ZyBzZXR0aW5nXG4vLyAtICRrZXk6IDxzZXR0aW5nPlxuQGZ1bmN0aW9uIGRlYnVnLWdldChcbiAgJGtleSxcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGtleTogam9pbihkZWJ1ZywgJGtleSwgc3BhY2UpO1xuICBAcmV0dXJuIHN1c3ktZ2V0KCRrZXksICRncmlkKTtcbn1cbiIsIi8vIENvbnRhaW5lciBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBjb250YWluZXIgZWxlbWVudFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQG1peGluIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgICA6ICRsYXlvdXQ7XG4gICRsYXlvdXQgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcblxuICAkX3dpZHRoICAgICA6IGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG4gICRfanVzdGlmeSAgIDogcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKHN1c3ktZ2V0KGNvbnRhaW5lci1wb3NpdGlvbiwgJGxheW91dCkpO1xuICAkX3Byb3BlcnR5ICA6IGlmKHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpID09IHN0YXRpYywgd2lkdGgsIG1heC13aWR0aCk7XG5cbiAgJF9ib3ggICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkbGF5b3V0KTtcblxuICBAaWYgJF9ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJF9ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChjb250YWluZXIsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgZmxvYXQtY29udGFpbmVyKCRfd2lkdGgsICRfanVzdGlmeSwgJF9wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0KTtcbn1cblxuLy8gQ29udGFpbmVyIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gIEByZXR1cm4gZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbn1cblxuLy8gR2V0IENvbnRhaW5lciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIHRoZSBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWNvbnRhaW5lci13aWR0aChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0ICAgICAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX3dpZHRoICAgICAgICAgOiBzdXN5LWdldChjb250YWluZXIsICRsYXlvdXQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRsYXlvdXQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkbGF5b3V0KTtcblxuICBAaWYgbm90KCRfd2lkdGgpIG9yICRfd2lkdGggPT0gYXV0byB7XG4gICAgQGlmIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpIHtcbiAgICAgICRfY29sdW1ucyAgIDogc3VzeS1nZXQoY29sdW1ucywgJGxheW91dCk7XG4gICAgICAkX2d1dHRlcnMgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRsYXlvdXQpO1xuICAgICAgJF9zcHJlYWQgICAgOiBpZihpcy1zcGxpdCgkbGF5b3V0KSwgd2lkZSwgbmFycm93KTtcbiAgICAgICRfd2lkdGggICAgIDogc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSAqICRfY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF93aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfd2lkdGg7XG59XG5cbi8vIFBhcnNlIENvbnRhaW5lciBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZSB0aGUgJGNvbnRhaW5lci1wb3NpdGlvbiBpbnRvIG1hcmdpbiB2YWx1ZXMuXG4vLyAtIFskanVzdGlmeV0gICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IDxsZW5ndGg+IFs8bGVuZ3RoPl1cbkBmdW5jdGlvbiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oXG4gICRqdXN0aWZ5OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBjb250YWluZXItcG9zaXRpb24pXG4pIHtcbiAgJF9yZXR1cm46IGlmKCRqdXN0aWZ5ID09IGxlZnQsIDAsIGF1dG8pIGlmKCRqdXN0aWZ5ID09IHJpZ2h0LCAwLCBhdXRvKTtcblxuICBAaWYgbm90KGluZGV4KGxlZnQgcmlnaHQgY2VudGVyLCAkanVzdGlmeSkpIHtcbiAgICAkX3JldHVybjogbnRoKCRqdXN0aWZ5LCAxKTtcbiAgICAkX3JldHVybjogJF9yZXR1cm4gaWYobGVuZ3RoKCRqdXN0aWZ5KSA+IDEsIG50aCgkanVzdGlmeSwgMiksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIElzb2xhdGlvbiBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuXG4vLyBJc29sYXRlIFtNaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGlzb2xhdGlvbiBhcyBhbiBvdmVycmlkZS5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBtaXhpbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpbnNwZWN0OiAkaXNvbGF0ZTtcblxuICAkb3V0cHV0OiAoXG4gICAgcHVzaDogaXNvbGF0ZSgkaXNvbGF0ZSksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGlzb2xhdGUpLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChpc29sYXRlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGlzb2xhdGUtb3V0cHV0KCRvdXRwdXQuLi4pO1xufVxuXG5cbi8vIElzb2xhdGUgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYW4gaXNvbGF0aW9uIG9mZnNldCB3aWR0aC5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBmdW5jdGlvbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpc29sYXRlOiBwYXJzZS1zcGFuKCRpc29sYXRlKTtcbiAgJGlzb2xhdGlvbjogc3VzeS1nZXQoc3BhbiwgJGlzb2xhdGUpO1xuXG4gIEBpZiAkaXNvbGF0aW9uIGFuZCBub3QoZ2V0LWxvY2F0aW9uKCRpc29sYXRlKSkge1xuICAgICRuZXc6IChcbiAgICAgIHNwYW46IG51bGwsXG4gICAgICBsb2NhdGlvbjogJGlzb2xhdGlvbixcbiAgICApO1xuICAgICRpc29sYXRlOiBtYXAtbWVyZ2UoJGlzb2xhdGUsICRuZXcpO1xuICB9XG5cbiAgQHJldHVybiBnZXQtaXNvbGF0aW9uKCRpc29sYXRlKTtcbn1cblxuXG4vLyBHZXQgSXNvbGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGhcbi8vIC0gJGlucHV0OiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1pc29sYXRpb24oXG4gICRpbnB1dFxuKSB7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRpbnB1dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGlucHV0KTtcbiAgJHdpZHRoICAgICAgOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyIGFuZCBub3QodW5pdGxlc3MoJGxvY2F0aW9uKSkge1xuICAgICR3aWR0aDogJGxvY2F0aW9uO1xuICB9IEBlbHNlIGlmICRsb2NhdGlvbiB7XG4gICAgJHB1c2g6ICRsb2NhdGlvbiAtIDE7XG4gICAgQGlmICRwdXNoID4gMCB7XG4gICAgICAkcHVzaDogbWFwLW1lcmdlKCRpbnB1dCwgKFxuICAgICAgICBzcGFuOiAkcHVzaCxcbiAgICAgICAgbG9jYXRpb246IDEsXG4gICAgICAgIHNwcmVhZDogd2lkZSxcbiAgICAgICkpO1xuICAgICAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkcHVzaCk7XG4gICAgfVxuICB9XG5cbiAgQGlmIHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGlucHV0KSA9PSBzcGxpdFxuICAgICAgYW5kIHN1c3ktZ2V0KGd1dHRlcnMsICRpbnB1dCkgPiAwIHtcbiAgICAkd2lkdGg6IGlmKCR3aWR0aCA9PSBudWxsLCBndXR0ZXJzKCRpbnB1dCksICR3aWR0aCArIGd1dHRlcnMoJGlucHV0KSk7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aCBvciAwO1xufVxuIiwiLy8gR2FsbGVyeSBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIEdhbGxlcnlcbi8vIC0tLS0tLS1cbi8vIENyZWF0ZSBhbiBpc29sYXRlZCBnYWxsZXJ5XG4vLyAtICRzcGFuICAgICAgICA6IDxzcGFuPlxuLy8gLSBbJHNlbGVjdG9yXSAgOiBjaGlsZCB8IG9mLXR5cGVcbkBtaXhpbiBnYWxsZXJ5KFxuICAkc3BhbixcbiAgJHNlbGVjdG9yOiBjaGlsZFxuKSB7XG4gICRpbnNwZWN0ICAgIDogJHNwYW47XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRzcGFuICAgICAgIDogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246IDEpKTtcblxuICAkbiAgICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkY29udGV4dCAgICAgIDogc3VzeS1jb3VudCgkY29sdW1ucyk7XG4gICRmbG93ICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG5cbiAgJGluc2lkZSAgICAgICA6IGlzLWluc2lkZSgkc3Bhbik7XG4gICRmcm9tICAgICAgICAgOiBmcm9tKCRmbG93KTtcbiAgJGxpbmUgICAgICAgICA6IGZsb29yKCRjb250ZXh0IC8gJG4pO1xuICAkc3ltbWV0cmljYWwgIDogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aCAgICAgICAgICAgICA6IG51bGwsXG4gICAgZmxvYXQgICAgICAgICAgICAgOiBmcm9tLFxuICAgIG1hcmdpbi1iZWZvcmUgICAgIDogbnVsbCxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IG51bGwsXG4gICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICApO1xuXG4gIEBpZiAkaW5zaWRlIHtcbiAgICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAoXG4gICAgICBwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKSxcbiAgICAgIHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKSxcbiAgICApKTtcbiAgfVxuXG4gIEBpZiAkc3ltbWV0cmljYWwge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAod2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKSkpO1xuICB9XG5cbiAgJGJveCAgICAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGdsb2JhbC1ib3ggICA6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSA9PSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2FsbGVyeSwgJGluc3BlY3QpO1xuXG4gIC8vIENvbGxlY3RpdmUgT3V0cHV0XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggb3IgKCRpbnNpZGUgYW5kIG5vdCgkYm94KSBhbmQgbm90KCRnbG9iYWwtYm94KSkge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogYm9yZGVyLWJveCkpO1xuICB9IEBlbHNlIGlmICRib3ggPT0gY29udGVudC1ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogY29udGVudC1ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIC8vIEluZGl2aWR1YWwgTG9vcFxuICBAZm9yICRpdGVtIGZyb20gMSB0aHJvdWdoICRsaW5lIHtcbiAgICAkbnRoOiAnI3skbGluZX1uICsgI3skaXRlbX0nO1xuICAgICY6bnRoLSN7JHNlbGVjdG9yfSgjeyRudGh9KSB7XG4gICAgICAvLyBJbmRpdmlkdWFsIFByZXBcbiAgICAgICRvdXRwdXQ6IChcbiAgICAgICAgd2lkdGggICAgICAgICAgICAgOiBpZigkc3ltbWV0cmljYWwsIG51bGwsIGdldC1zcGFuLXdpZHRoKCRzcGFuKSksXG4gICAgICAgIGZsb2F0ICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgbWFyZ2luLWJlZm9yZSAgICAgOiBnZXQtaXNvbGF0aW9uKCRzcGFuKSxcbiAgICAgICAgbWFyZ2luLWFmdGVyICAgICAgOiAtMTAwJSxcbiAgICAgICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgICAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICAgICApO1xuXG4gICAgICAvLyBJbmRpdmlkdWFsIE91dHB1dFxuICAgICAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgICAgIEBpZiBnZXQtZWRnZSgkc3BhbikgPT0gZmlyc3Qge1xuICAgICAgICBAaW5jbHVkZSBicmVhaztcbiAgICAgICAgQGluY2x1ZGUgZmlyc3QoJHNwYW4pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgTG9jYXRpb24gSW5jcmVtZW50XG4gICAgICAkbG9jYXRpb246IGdldC1sb2NhdGlvbigkc3BhbikgKyAkbjtcbiAgICAgICRsb2NhdGlvbjogaWYoJGxvY2F0aW9uID4gJGNvbnRleHQsIDEsICRsb2NhdGlvbik7XG4gICAgICAkc3BhbjogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246ICRsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZ3V0dGVyIDogZ3V0dGVyKCRzcGFuKTtcbiAgJHNwYW4gICA6IHNwYW4oJHNwYW4pO1xuICAkd2lkdGggIDogaWYoJHNwbGl0IGFuZCAkZ3V0dGVyLCAkc3BhbiArICRndXR0ZXIsICRzcGFuKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNxdWlzaCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmUoJHByZSk7XG4gIEBpbmNsdWRlIHBvc3QoJHBvc3QpO1xufVxuIiwiLy8gUGFkZGluZyBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmVmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFN1ZmZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzdWZmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHN1ZmZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUGFkXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBwYWQoXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocGFkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZWZpeCgkcHJlKTtcbiAgQGluY2x1ZGUgc3VmZml4KCRwb3N0KTtcblxufVxuIiwiLy8gQmxlZWQgU3ludGF4XG4vLyA9PT09PT09PT09PT1cblxuLy8gQmxlZWRcbi8vIC0tLS0tXG4vLyBBZGQgbmVnYXRpdmUgbWFyZ2lucywgYW5kIGVxdWFsIHBvc2l0aXZlIHBhZGRpbmcgdG8gY3JlYXRlIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQoXG4gICRibGVlZDogMCBndXR0ZXIoKVxuKSB7XG4gICRpbnNwZWN0ICA6ICRibGVlZDtcbiAgJG91dHB1dCAgIDogZ2V0LWJsZWVkKCRibGVlZCk7XG5cbiAgQGlmIHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSBjb250ZW50LWJveCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKChib3gtc2l6aW5nOiBjb250ZW50LWJveCksICRvdXRwdXQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJsZWVkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuXG4vLyBCbGVlZC14XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgaG9yaXpvbnRhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXgoXG4gICRibGVlZDogZ3V0dGVyKClcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAyKSAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXggb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEJsZWVkLXlcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciB2ZXJ0aWNhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXkoXG4gICRibGVlZDogaWYoZnVuY3Rpb24tZXhpc3RzKHJoeXRobSksIHJoeXRobSgxKSwgMWVtKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwIG50aCgkdHJibCwgMikgMCkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteSBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gR2V0IEJsZWVkXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBibGVlZCBvdXRwdXQgdmFsdWVzXG4vLyAtICRibGVlZDogPHNwYW4+XG5AZnVuY3Rpb24gZ2V0LWJsZWVkKFxuICAkYmxlZWRcbikge1xuICAkYmxlZWQgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJGJsZWVkKSk7XG4gICR0cmJsICAgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG4gICRzaG9ydCAgICA6IG51bGw7XG4gICRvdXRwdXQgICA6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR0cmJsKSB7XG4gICAgJHRoaXM6IG50aCgkdHJibCwgJGkpO1xuICAgICRuZXc6ICgpO1xuICAgICRtYXJnaW46IG51bGw7XG4gICAgJHBhZGRpbmc6IG51bGw7XG4gICAgJHBhZGRpbmcteDogbnVsbDtcblxuICAgIEBpZiAkdGhpcyA+IDAge1xuICAgICAgJHRoaXM6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAkdGhpcykpO1xuICAgICAgJG1hcmdpbjogc3BhbigkdGhpcyk7XG4gICAgICAkcGFkZGluZzogJG1hcmdpbjtcbiAgICAgICRwYWRkaW5nLXg6ICRwYWRkaW5nO1xuICAgIH1cblxuICAgIEBpZiAkbWFyZ2luIGFuZCAkbWFyZ2luID4gMCB7XG4gICAgICAkbWFyZ2luOiAtICRtYXJnaW47XG5cbiAgICAgIEBpZiBpcy1pbnNpZGUoJHRoaXMpIHtcbiAgICAgICAgJGd1dHRlcjogZ3V0dGVyKCR0aGlzKTtcbiAgICAgICAgJGpvaW46IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHBhZGRpbmcsICRndXR0ZXIpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICRwYWRkaW5nLXg6IGlmKCRqb2luIGFuZCAkcGFkZGluZyA+IDAsICRwYWRkaW5nICsgJGd1dHRlciwgJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAyIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDMge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gNCB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAkbmV3KTtcbiAgfVxuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG91dHB1dCB7XG4gICAgJG91dHB1dDogaWYoJHZhbHVlID09IDAsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJHByb3A6IG51bGwpKSwgJG91dHB1dCk7XG4gIH1cblxuICBAcmV0dXJuIGJsZWVkLXNob3J0aGFuZCgkb3V0cHV0KTtcbn1cblxuLy8gQmxlZWQgU2hvcnRoYW5kXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENvbnZlcnQgYmxlZWQgb3V0cHV0IGludG8gc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuXG4vLyAtICRibGVlZDogPG91dHB1dCBtYXA+XG5AZnVuY3Rpb24gYmxlZWQtc2hvcnRoYW5kKFxuICAkYmxlZWRcbikge1xuICAkbWFyZ2luOiAoKTtcbiAgJHBhZGRpbmc6ICgpO1xuICAkcmV0dXJuOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJsZWVkIHtcbiAgICBAaWYgc3RyLWluZGV4KCRrZXksIG1hcmdpbikge1xuICAgICAgJG1hcmdpbjogbWFwLW1lcmdlKCRtYXJnaW4sICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIGlmIHN0ci1pbmRleCgka2V5LCBwYWRkaW5nKSA+IDAge1xuICAgICAgJHBhZGRpbmc6IG1hcC1tZXJnZSgkcGFkZGluZywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICRwcm9wczogKFxuICAgIG1hcmdpbjogJG1hcmdpbixcbiAgICBwYWRkaW5nOiAkcGFkZGluZyxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJG1hcCBpbiAkcHJvcHMge1xuICAgICRmb3VyOiBpZihsZW5ndGgobWFwLWtleXMoJG1hcCkpID09IDQsIHRydWUsIGZhbHNlKTtcbiAgICAkbnVsbDogaWYoaW5kZXgobWFwLXZhbHVlcygkbWFwKSwgbnVsbCksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkZm91ciBhbmQgbm90KCRudWxsKSB7XG4gICAgICAkdG9wOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS10b3AnKTtcbiAgICAgICRyaWdodDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tcmlnaHQnKTtcbiAgICAgICRib3R0b206IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWJvdHRvbScpO1xuICAgICAgJGxlZnQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWxlZnQnKTtcblxuICAgICAgJHRiOiBpZigkdG9wID09ICRib3R0b20sICR0b3AsIG51bGwpO1xuICAgICAgJHJsOiBpZigkcmlnaHQgPT0gJGxlZnQsICRyaWdodCwgbnVsbCk7XG4gICAgICAkYWxsOiBpZigkdGIgPT0gJHJsLCAkdGIsIG51bGwpO1xuXG4gICAgICAkbmV3OiBpZigkYWxsLCAkYWxsLCBudWxsKTtcblxuICAgICAgQGlmIG5vdCgkbmV3KSB7XG4gICAgICAgIEBpZiAkdGIgYW5kICRybCB7XG4gICAgICAgICAgJG5ldzogJHRiICRybDtcbiAgICAgICAgfSBAZWxzZSBpZiAkcmwge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJsICRib3R0b207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJpZ2h0ICRib3R0b20gJGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmFtZTogJG5ldykpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICRtYXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cbiIsIi8qXG4qIFNjdXQsIGEgY29sbGVjdGlvbiBvZiBTYXNzIHV0aWxpdGllc1xuKiB0byBlYXNlIGFuZCBpbXByb3ZlIG91ciBpbXBsZW1lbnRhdGlvbnMgb2YgY29tbW9uIHN0eWxlLWNvZGUgcGF0dGVybnMuXG4qIHYxLjQuMFxuKiBEb2NzIGF0IGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0XG4qL1xuXG5AbWl4aW4gc2N1dC1jbGVhcmZpeCB7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNsZWFyZml4IHtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtdW5zdHlsZWQoXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCk7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1mbG9hdGVkIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJGRpcjogbGVmdCxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xuXG4gICYgPiBsaSB7XG4gICAgZmxvYXQ6ICRkaXI7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tI3skZGlyfTogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtZmxvYXRlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkO1xufVxuXG5AZnVuY3Rpb24gc2N1dC1hdXRvT3JWYWx1ZSAoJHZhbCkge1xuICBAaWYgJHZhbCA9PSBhIG9yICR2YWwgPT0gYXV0byB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtY29vcmRzIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICAkdG9wOiBudGgoJGNvb3JkaW5hdGVzLCAxKTtcbiAgJHJpZ2h0OiBudGgoJGNvb3JkaW5hdGVzLCAyKTtcbiAgJGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyk7XG4gICRsZWZ0OiBudGgoJGNvb3JkaW5hdGVzLCA0KTtcblxuICBAaWYgJHRvcCAhPSBuIHtcbiAgICB0b3A6IHNjdXQtYXV0b09yVmFsdWUoJHRvcCk7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBuIHtcbiAgICByaWdodDogc2N1dC1hdXRvT3JWYWx1ZSgkcmlnaHQpO1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG4ge1xuICAgIGJvdHRvbTogc2N1dC1hdXRvT3JWYWx1ZSgkYm90dG9tKTtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbiB7XG4gICAgbGVmdDogc2N1dC1hdXRvT3JWYWx1ZSgkbGVmdCk7XG4gIH1cblxufVxuQGZ1bmN0aW9uIHNjdXQtc3RyaXAtdW5pdCAoXG4gICRudW1cbikge1xuXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1lbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtZW0gKFxuICAkcGl4ZWxzLFxuICAkYmFzZTogJHNjdXQtZW0tYmFzZVxuKSB7XG5cbiAgLy8gJGJhc2UgY291bGQgYmUgaW4gZW0gb3IgcHggKG5vIHVuaXQgPSBweCkuXG4gIC8vIEFkanVzdCBhY2NvcmRpbmdseSB0byBjcmVhdGUgYSAkZGl2aXNvciB0aGF0XG4gIC8vIHNlcnZlcyBhcyBjb250ZXh0IGZvciAkcGl4ZWxzLlxuICAkbXVsdGlwbGllcjogaWYodW5pdCgkYmFzZSkgPT0gZW0sIDE2LCAxKTtcbiAgJGRpdmlzb3I6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZSkgKiAkbXVsdGlwbGllcjtcblxuICAkZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1lbXM6IChzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkZGl2aXNvcikgKiAxZW07XG4gICAgJGVtLXZhbHM6IGFwcGVuZCgkZW0tdmFscywgJHZhbC1pbi1lbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZW0tdmFscztcbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1yZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LXJlbSAoXG4gICRwaXhlbHNcbikge1xuXG4gICRyZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1yZW1zOiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkc2N1dC1yZW0tYmFzZSAqIDFyZW07XG4gICAgJHJlbS12YWxzOiBhcHBlbmQoJHJlbS12YWxzLCAkdmFsLWluLXJlbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcmVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkcmVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRyZW0tdmFscztcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1ib3JkZXIgKFxuICAkc3R5bGUsXG4gICRzaWRlczogbiB5XG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaWRlcykgPT0gMiB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaWRlcykgPT0gNCB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDMpICE9IG4ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgNCkgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlNjdXQtYm9yZGVyIHJlcXVpcmVzIGEgJHNpZGVzIGFyZ3VtZW50IG9mIDIgb3IgNCB2YWx1ZXMuXCJcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jaXJjbGUgKFxuICAkc2l6ZSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBAaWYgJGNvbG9yID09IGluaGVyaXQge1xuICAgIC8vIElmIHVzZXIgd2FudHMgdG8gaW5oZXJpdCB0aGUgY29sb3IsXG4gICAgLy8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBib3JkZXJcbiAgICAvLyBjb2xvciBkZWZhdWx0cyB0byB0aGUgdGV4dCBjb2xvciBvZiB0aGUgZWxlbWVudC5cbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGhlaWdodDogMDtcbiAgICB3aWR0aDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHVzZSBiYWNrZ3JvdW5kLWNvbG9yLlxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jb2xvci1zd2FwIChcbiAgJG9mZixcbiAgJG9uLFxuICAkZHVyYXRpb246IDAsXG4gICRiZzogZmFsc2Vcbikge1xuXG4gICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IG51bGw7XG4gICRvZmYtaXMtbGlzdDogdHlwZS1vZigkb2ZmKSA9PSBsaXN0O1xuICAkb24taXMtbGlzdDogdHlwZS1vZigkb24pID09IGxpc3Q7XG5cbiAgLy8gSWYgJG9mZiBJUyBhIGxpc3QsXG4gIC8vIGFzc2lnbiBjb2xvciBhbmQgYmFja2dyb3VuZC1jb2xvci5cbiAgQGlmICRvZmYtaXMtbGlzdCB7XG4gICAgY29sb3I6IG50aCgkb2ZmLCAxKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9mZiwgMik7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvciwgY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBUUlVFLFxuICAvLyBhc3NpZ24gYmFja2dyb3VuZC1jb2xvci5cbiAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9mZi1pcy1saXN0KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgRkFMU0UsXG4gIC8vIGFzc2lnbiBjb2xvci5cbiAgQGVsc2Uge1xuICAgIGNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGNvbG9yO1xuICB9XG5cbiAgLy8gT25seSBzZXQtdXAgdHJhbnNpdGlvbiBpZiAkZHVyYXRpb24gIT0gMC5cbiAgQGlmICRkdXJhdGlvbiAhPSAwIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzO1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuXG4gICAgLy8gJG9uIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgJG9mZiwgYWJvdmUuXG4gICAgQGlmICRvbi1pcy1saXN0IHtcbiAgICAgIGNvbG9yOiBudGgoJG9uLCAxKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb24sIDIpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvbi1pcy1saXN0KSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb247XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgY29sb3I6ICRvbjtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtaGQtYnAgKFxuICAkcmF0aW86IDEuM1xuKSB7XG5cbiAgQG1lZGlhICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAoJHJhdGlvIC8gMSkpLFxuICAgICAgICAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgICAgICAgIChtaW4tcmVzb2x1dGlvbjogKHJvdW5kKDk2ICogJHJhdGlvKSAqIDFkcGkpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oaWRlLXZpc3VhbGx5IHtcblxuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcblxufVxuXG4lc2N1dC1oaWRlLXZpc3VhbGx5IHtcbiAgQGluY2x1ZGUgc2N1dC1oaWRlLXZpc3VhbGx5O1xufVxuQG1peGluIHNjdXQtaW1hZ2UtcmVwbGFjZSB7XG5cbiAgdGV4dC1pbmRlbnQ6IDEwMiU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG5cbn1cblxuJXNjdXQtaW1hZ2UtcmVwbGFjZSB7XG4gIEBpbmNsdWRlIHNjdXQtaW1hZ2UtcmVwbGFjZTtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LXJlbSBhbmQgc2N1dC1zdHJpcC11bml0XG5cbkBtaXhpbiBzY3V0LXJlbS1mYWxsYmFjayAoXG4gICRwaXhlbHMsXG4gICRwcm9wZXJ0eTogZm9udC1zaXplXG4pIHtcblxuICAkcHgtdmFsczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXB4OiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgKiAxcHg7XG4gICAgJHB4LXZhbHM6IGFwcGVuZCgkcHgtdmFscywgJHZhbC1pbi1weCk7XG4gIH1cbiAgJHJlbS12YWxzOiBzY3V0LXJlbSgkcGl4ZWxzKTtcblxuICAjeyRwcm9wZXJ0eX06ICRweC12YWxzO1xuICAjeyRwcm9wZXJ0eX06ICRyZW0tdmFscztcblxufVxuQG1peGluIHNjdXQtcmVzZXQtYm9yZGVyLWJveCB7XG4gIC8vIE1ha2UgZXZlcnl0aGluZyBhIGJvcmRlci1ib3gsIGJlY2F1c2Ugd2h5IG5vdD9cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1hbnRpYWxpYXMge1xuICAvLyBBbnRpYWxpYXMhXG4gIGJvZHkge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXNlbWFudGljaXplIHtcbiAgLy8gTWFrZSBoZWFkZXJzIGFuZCA8Yj4gc2VtYW50aWMsIG5vdCBwcmVzZW50YXRpb25hbC5cbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wb2ludGVyIHtcbiAgLy8gQ2xpY2thYmxlIGZvcm0gZWxlbWVudHMgc2hvdWxkIGhhdmUgYSBwb2ludGVyLlxuICBsYWJlbCxcbiAgc2VsZWN0LFxuICBvcHRpb24sXG4gIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZvcm0ge1xuICBmaWVsZHNldCB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWJ1dHRvbiB7XG4gIC8vIFJlc2V0IGRlZmF1bHQgYnV0dG9uIHN0eWxlcywgd2hpY2ggYXJlIG5ldmVyIHVzZWQuXG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdLFxuICBbdHlwZT1cInJlc2V0XCJdIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogYXV0bztcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBhcmFncmFwaCB7XG4gIC8vIFNvbWUgcGFyYWdyYXBoIG1hcmdpbnMganVzdCBnZXQgaW4gdGhlIHdheS5cbiAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LW1lZGlhIHtcbiAgLy8gWW91IHdhbnQgdGhlc2UgZWxlbWVudHMgZmx1aWQsIHByb2JhYmx5LlxuICBpbWcsXG4gIHZpZGVvIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZpZ3VyZSB7XG4gIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbnMuXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8vIENhbGwgdGhlbSBhbGwsIG1pbnVzIGV4Y2x1c2lvbnMhXG5AbWl4aW4gc2N1dC1yZXNldCAoJGV4Y2x1ZGU6IGZhbHNlKSB7XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJvcmRlci1ib3gpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1ib3JkZXItYm94O1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGFudGlhbGlhcykpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWFudGlhbGlhcztcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBzZW1hbnRpY2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXNlbWFudGljaXplO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBvaW50ZXIpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wb2ludGVyO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZvcm0pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1mb3JtO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJ1dHRvbikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJ1dHRvbjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwYXJhZ3JhcGgpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wYXJhZ3JhcGg7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgbWVkaWEpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1tZWRpYTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmaWd1cmUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1maWd1cmU7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtc2VsZWN0ZWQgKFxuICAkYWN0aXZlOiBmYWxzZVxuKSB7XG5cbiAgQGlmICRhY3RpdmUge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtdHJpYW5nbGUgKFxuICAkZGlyZWN0aW9uOiByaWdodCxcbiAgJHNpemU6IDAuNzVlbSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIC8vIEZvciBpbXByb3ZlZCBhcHBlYXJhbmNlIGluIHNvbWUgV2Via2l0IGJyb3dzZXJzXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcblxuICAvLyBTZXQgdXAgc29tZSB2YXJpYWJsZXNcbiAgJHdpZHRoOiBudWxsO1xuICAkaGVpZ2h0OiBudWxsO1xuICAkYm9yZGVyLXdpZHRoczogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gbGlzdCB7XG4gICAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR3aWR0aDogJHNpemU7XG4gICAgJGhlaWdodDogJHNpemU7XG4gIH1cblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICAvLyBGb3IgdXAgYW5kIGRvd24sIHdpZHRoIGdldHMgdHdvIGJvcmRlcnMgYnV0IGhlaWdodCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgc2Vjb25kIGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICRoZWlnaHQgKCR3aWR0aCAvIDIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgLy8gRm9yIHJpZ2h0IGFuZCBsZWZ0LCBoZWlnaHQgZ2V0cyB0d28gYm9yZGVycyBidXQgd2lkdGggb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIGZpcnN0IGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgJHdpZHRoO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBGb3IgcmlnaHQgdHJpYW5nbGVzICh0aGUgcmVzdCksIGJvdGggc2lkZXMgZ2V0IHR3byBib3JkZXJzLFxuICAgIC8vIHNvIGRpdmlkZSBib3RoIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAoJHdpZHRoIC8gMik7XG4gIH1cblxuICBib3JkZXItd2lkdGg6ICRib3JkZXItd2lkdGhzO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG5cbiAgLy8gU1RBTkRBUkQgVFJJQU5HTEVTXG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cblxuICAvLyBDT1JORVIgVFJJQU5HTEVTXG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdG9wLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdHJpYW5nbGUge1xuICBAaW5jbHVkZSBzY3V0LXRyaWFuZ2xlO1xufVxuQG1peGluIHNjdXQtY2VudGVyLWFic29sdXRlbHkgKFxuICAkZGltZW5zaW9uc1xuKSB7XG5cbiAgJHdpZHRoOiBudGgoJGRpbWVuc2lvbnMsIDEpO1xuICAkaGVpZ2h0OiBudGgoJGRpbWVuc2lvbnMsIDIpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJHdpZHRoICE9IG4ge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAoLSR3aWR0aCAvIDIpO1xuICB9XG5cbiAgQGlmICRoZWlnaHQgIT0gbiB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6ICgtJGhlaWdodCAvIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1ibG9jayAoXG4gICRtYXgtd2lkdGg6IGZhbHNlXG4pIHtcblxuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBAaWYgJG1heC13aWR0aCB7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICB9XG5cbn1cblxuJXNjdXQtY2VudGVyLWJsb2NrIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItYmxvY2s7XG59XG5cbkBtaXhpbiBzY3V0LWNlbnRlci10cmFuc2Zvcm0gKFxuICAkYXhpczogZmFsc2UgLy8gb3IgeCBvciB5XG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICRheGlzICE9IHgge1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgfVxuXG4gIEBpZiAkYXhpcyAhPSB5IHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgJHRyYW5zbGF0ZS12YWw6IG51bGw7XG5cbiAgQGlmIG5vdCgkYXhpcykge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geCB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIC1tcy10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICB0cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXgge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeCk7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuQG1peGluIHNjdXQtZmlsbCAoXG4gICR3aWR0aC1oZWlnaHQ6IGZhbHNlXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgQGlmICR3aWR0aC1oZWlnaHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtZmlsbCB7XG4gIEBpbmNsdWRlIHNjdXQtZmlsbDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtY3VzdG9tIChcbiAgJGNvbnRlbnQ6IFwiXFwyMDIyXCIsXG4gICRtYXJrZXItd2lkdGg6IDAuNzVlbSxcbiAgJHBhZDogMCxcbiAgJG5vLW1hcmdpbjogZmFsc2Vcbikge1xuXG4gICRjb250ZW50LXZhbDogbnVsbDtcbiAgJGNvdW50ZXI6IGluZGV4KCRjb250ZW50LCBjb3VudCk7XG4gIEBpZiAkY291bnRlciB7XG4gICAgQGlmIGxlbmd0aCgkY29udGVudCkgPT0gMyB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyLCBudGgoJGNvbnRlbnQsIDMpKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAyIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICRjb250ZW50LXZhbDogJGNvbnRlbnQ7XG4gIH1cblxuICBwYWRkaW5nLWxlZnQ6ICRtYXJrZXItd2lkdGggKyAkcGFkO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gICYgPiBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiAkY291bnRlciB7XG4gICAgICBjb3VudGVyLWluY3JlbWVudDogc2N1dGxpc3Rjb3VudGVyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkY29udGVudC12YWw7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IC0kbWFya2VyLXdpZHRoO1xuICAgICAgd2lkdGg6ICRtYXJrZXItd2lkdGg7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC1mbG9hdGVkYCwgd2hpY2ggZGVwZW5kcyBpbiB0dXJuIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1kaXZpZGVkIChcbiAgJGRpdmlkZXI6IFwifFwiLFxuICAkc3BhY2U6IDAuNWVtLFxuICAkZGlyOiBsZWZ0LFxuICAkaGVpZ2h0OiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQoJGRpcjogJGRpciwgJG5vLW1hcmdpbjogJG5vLW1hcmdpbik7XG5cbiAgJHBzZXVkbzogaWYoJGRpciA9PSBsZWZ0LCAnYmVmb3JlJywgJ2FmdGVyJyk7XG5cbiAgLy8gSWYgYW4gZXhwbGljaXQgaGVpZ2h0IGlzIHBhc3NlZCxcbiAgLy8gdGhpbmdzIGFyZSBkaWZmZXJlbnQ6IEFsbCA8bGk+c1xuICAvLyBuZWVkIHRoZSBwc2V1ZG8tZWxlbWVudCAodG8gZm9yY2UgaGVpZ2h0KSxcbiAgLy8gYnV0IHRoZSBmaXJzdCdzIG11c3QgYmUgaGlkZGVuLlxuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICAmID4gbGkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICAmID4gbGk6I3skcHNldWRvfSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgJiA+IGxpOmZpcnN0LWNoaWxkOiN7JHBzZXVkb30ge1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gICYgPiBsaSArIGxpOiN7JHBzZXVkb30ge1xuICAgIEBpZiBub3QoJGhlaWdodCkge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjZTtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtYmFyIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQ7XG59XG5cbiVzY3V0LWxpc3QtYnJlYWRjcnVtYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKFwiL1wiKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWlubGluZSAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtaW5saW5lO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtcHVuY3R1YXRlZCAoXG4gICRkaXZpZGVyOiBcIiwgXCIsXG4gICRkaXNwbGF5OiBpbmxpbmUsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6ICRkaXNwbGF5O1xuICAgICY6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWNvbW1hIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXB1bmN0dWF0ZWQ7XG59XG5AbWl4aW4gc2N1dC1tYXJnaW4gKFxuICAkbWFyZ2luXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDEgYW5kICRtYXJnaW4gIT0gbiB7XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMiB7XG4gICAgJG1hcmdpbi15OiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgQGlmICRtYXJnaW4teSAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDMge1xuICAgICRtYXJnaW4teS10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLXktYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgQGlmICRtYXJnaW4teS10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi15LWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSA0IHtcbiAgICAkbWFyZ2luLXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4tcmlnaHQ6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgICRtYXJnaW4tbGVmdDogbnRoKCRtYXJnaW4sIDQpO1xuICAgIEBpZiAkbWFyZ2luLXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1yaWdodCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi1yaWdodDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWxlZnQgIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi1sZWZ0O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1wYWRkaW5nIChcbiAgJHBhZGRpbmdcbikge1xuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDEgYW5kICRwYWRkaW5nICE9IG4ge1xuICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDIge1xuICAgICRwYWRkaW5nLXk6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICBAaWYgJHBhZGRpbmcteSAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15O1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXk7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAzIHtcbiAgICAkcGFkZGluZy15LXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLXktYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgIEBpZiAkcGFkZGluZy15LXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15LXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteS1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gNCB7XG4gICAgJHBhZGRpbmctdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXJpZ2h0OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICAkcGFkZGluZy1sZWZ0OiBudGgoJHBhZGRpbmcsIDQpO1xuICAgIEBpZiAkcGFkZGluZy10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmctdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctcmlnaHQgIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy1yaWdodDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1sZWZ0ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy1sZWZ0O1xuICAgIH1cbiAgfVxufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1hYnNvbHV0ZSAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWFic29sdXRlIHtcbiAgQGluY2x1ZGUgc2N1dC1hYnNvbHV0ZTtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtZml4ZWQgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1maXhlZCB7XG4gIEBpbmNsdWRlIHNjdXQtZml4ZWQ7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LXJlbGF0aXZlIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cbkBtaXhpbiBzY3V0LXJhdGlvLWJveCAoXG4gICRyYXRpbzogMS8xXG4pIHtcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVGhlIGNvbnRhaW5lcidzIGhlaWdodCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZVxuICAvLyBjb250YWluZXIncyB3aWR0aCwgaXMgc2V0IGJ5IGFzc2lnbmluZ1xuICAvLyBwYWRkaW5nLXRvcCB0byBhIHBzZXVkby1lbGVtZW50LlxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgcGFkZGluZy10b3A6ICgxIC8gJHJhdGlvKSAqIDEwMCU7XG4gIH1cblxufVxuXG4lc2N1dC1yYXRpby1ib3gge1xuICBAaW5jbHVkZSBzY3V0LXJhdGlvLWJveDtcbn1cbkBtaXhpbiBzY3V0LXNpemUoXG4gICRzaXplXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAxIHtcbiAgICB3aWR0aDogICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICB3aWR0aDogIG50aCgkc2l6ZSwgMSk7XG4gICAgaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAtJGhlaWdodDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAjeyR3cmFwcGVyfTphZnRlcixcbiAgI3skZm9vdGVyfSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG5cbn1cblxuLy8gZGVwcmVjYXRlZFxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3RlciAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbil7XG4gIEBpbmNsdWRlIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCgkaGVpZ2h0LCAkd3JhcHBlciwgJGZvb3Rlcik7XG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZsdWlkIChcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICN7JGZvb3Rlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcbiAgICBoZWlnaHQ6IDFweDtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLWliIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICAvLyBUaGUgaW5uZXIgZWxlbWVudCBpcyB2ZXJ0aWNhbGx5IGNlbnRlcmVkXG4gIC8vIGJ5IG1pZGRsZS1hbGlnbmluZyBpdCB3aXRoIGFuIGlubGluZSBwc2V1ZG8tZWxlbWVudFxuICAvLyB3aG9zZSBoZWlnaHQgaXMgMTAwJS5cblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgLy8gQSBzbWFsbCBuZWdhdGl2ZSByaWdodCBtYXJnaW4gaXMgc2V0XG4gICAgLy8gdG8gYWNjb3VudCBmb3IgdGhlIGRlZmF1bHRcbiAgICAvLyB3b3JkLXNwYWNpbmcgb2YgaW5saW5lLWJsb2NrLlxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVlbTtcbiAgfVxuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC12Y2VudGVyLWliIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLWliO1xufVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLWxoIChcbiAgJGhlaWdodFxuKSB7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJGhlaWdodDtcblxufVxuQG1peGluIHNjdXQtdmNlbnRlci10ZCAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgZGlzcGxheTogdGFibGU7XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG5cbiVzY3V0LXZjZW50ZXItdGQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdGQ7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1jZW50ZXItdHJhbnNmb3JtXG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItdHQgKCkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbiVzY3V0LXZjZW50ZXItdHQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdHQ7XG59XG4vLyBzcGFjZVxuJHNjdXQtc3BhY2U6IFwiXFwwMDIwXCI7XG4vLyBub24tYnJlYWtpbmcgc3BhY2VcbiRzY3V0LW5ic3A6IFwiXFwwMGEwXCI7XG5cbi8vIHF1b3RhdGlvbiBtYXJrXG4kc2N1dC1xdW90OiBcIlxcMDAyMlwiO1xuLy8gbGVmdCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LWxzcXVvOiBcIlxcMjAxOFwiO1xuLy8gcmlnaHQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1yc3F1bzogXCJcXDIwMTlcIjtcbi8vIGxlZnQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1sZHF1bzogXCJcXDIwMUNcIjtcbi8vIHJpZ2h0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtcmRxdW86IFwiXFwyMDFEXCI7XG4vLyBsZWZ0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbHNhcXVvOiBcIlxcMjAzOVwiO1xuLy8gcmlnaHQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yc2FxdW86IFwiXFwyMDNBXCI7XG4vLyBsZWZ0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbGFxdW86IFwiXFwwMGFiXCI7XG4vLyByaWdodCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJhcXVvOiBcIlxcMDBiYlwiO1xuXG4vLyBlbSBkYXNoIChtdXR0b24pXG4kc2N1dC1tZGFzaDogXCJcXDIwMTRcIjtcbi8vIGVuIGRhc2ggKG51dClcbiRzY3V0LW5kYXNoOiBcIlxcMjAxM1wiO1xuLy8gaHlwaGVuXG4kc2N1dC1oeXBoZW46IFwiXFwyMDEwXCI7XG5cbi8vIGFtcGVyc2FuZFxuJHNjdXQtYW1wOiBcIlxcMDAyNlwiO1xuLy8gZ3JlYXRlciB0aGFuXG4kc2N1dC1ndDogXCJcXDAwM2VcIjtcbi8vIGxlc3MgdGhhblxuJHNjdXQtbHQ6IFwiXFwwMDNjXCI7XG4vLyB0aW1lc1xuJHNjdXQtdGltZXM6IFwiXFwwMEQ3XCI7XG4vLyBiaWcgdGltZXNcbiRzY3V0LWJpZ3RpbWVzOiBcIlxcMjcxNVwiO1xuLy8gY2hlY2ttYXJrXG4kc2N1dC1jaGVja21hcms6IFwiXFwyNzEzXCI7XG5cbi8vIHNlY3Rpb24gc2lnbiAoZG91YmxlIFMsIGh1cnJpY2FuZSwgc2VjdGlvbmFsIHN5bWJvbCwgdGhlIGxlZ2FsIGRvdWdobnV0LCBzaWdudW0gc2VjdGlvbmlzKVxuJHNjdXQtc2VjdDogXCJcXDAwYTdcIjtcbi8vIHBhcmFncmFwaCBzeW1ib2wgKHBpbGNyb3cpXG4kc2N1dC1wYXJhOiBcIlxcMDBiNlwiO1xuXG4vLyBtaWRkb3QgKGludGVycHVuY3QsIGludGVycG9pbnQpXG4kc2N1dC1taWRkb3Q6IFwiXFwwMGI3XCI7XG4vLyBvLXNsYXNoIChzbGFzaGVkIG8pXG4kc2N1dC1vc2xhc2g6IFwiXFwwMGY4XCI7XG4vLyBidWxsZXRcbiRzY3V0LWJ1bGw6IFwiXFwyMDIyXCI7XG4vLyB3aGl0ZSBidWxsZXRcbiRzY3V0LXdoaWJ1bGw6IFwiXFwyNUU2XCI7XG4vLyBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1oZWxsaXA6IFwiXFwyMDI2XCI7XG4vLyB2ZXJ0aWNhbCBlbGxpcHNpc1xuJHNjdXQtdmVsbGlwOiBcIlxcMjJFRVwiO1xuLy8gbWlkbGluZSBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1taWRoZWxsaXA6IFwiXFwyMkVGXCI7XG5cbi8vIHVwLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC11dHJpOiBcIlxcMjViMlwiO1xuLy8gZG93bi1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtZHRyaTogXCJcXDI1YmNcIjtcbi8vIGxlZnQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWx0cmk6IFwiXFwyNWMwXCI7XG4vLyByaWdodC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtcnRyaTogXCJcXDI1YjZcIjtcbi8vIHVwLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC11c3RyaTogXCJcXDI1YjRcIjtcbi8vIGRvd24tcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWRzdHJpOiBcIlxcMjViZVwiO1xuLy8gbGVmdC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtbHN0cmk6IFwiXFwyNWMyXCI7XG4vLyByaWdodC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtcnN0cmk6IFwiXFwyNWI4XCI7XG4vLyBkaWFtb25kXG4kc2N1dC1kaWFtb25kOiBcIlxcMjVjNlwiO1xuLy8gZmlzaGV5ZVxuJHNjdXQtZmlzaGV5ZTogXCJcXDI1YzlcIjtcbi8vIGJ1bGxzZXllXG4kc2N1dC1idWxsc2V5ZTogXCJcXDI1Y2VcIjtcbi8vIGNpcmNsZVxuJHNjdXQtY2lyY2xlOiBcIlxcMjVjZlwiO1xuLy8gd2hpdGUgY2lyY2xlXG4kc2N1dC13aGl0ZWNpcmNsZTogXCJcXDI1Y2JcIjtcbi8vIHNxdWFyZVxuJHNjdXQtc3F1YXJlOiBcIlxcMjVhMFwiO1xuLy8gd2hpdGUgc3F1YXJlXG4kc2N1dC13aGl0ZXNxdWFyZTogXCJcXDI1YTFcIjtcbi8vIHNtYWxsIHNxdWFyZVxuJHNjdXQtc3NxdWFyZTogXCJcXDI1YWFcIjtcbi8vIHNtYWxsIHdoaXRlIHNxdWFyZVxuJHNjdXQtc3doaXRlc3F1YXJlOiBcIlxcMjVhYlwiO1xuXG4vLyBnZW5lcmFsIGN1cnJlbmN5XG4kc2N1dC1jdXJyZW5jeTogXCJcXDAwYTRcIjtcbi8vIGNlbnRcbiRzY3V0LWNlbnQ6IFwiXFwwMGEyXCI7XG4vLyBkb2xsYXJcbiRzY3V0LWRvbGxhcjogXCJcXDAwMjRcIjtcbi8vIHBvdW5kXG4kc2N1dC1wb3VuZDogXCJcXDAwYTNcIjtcbi8vIGV1cm9cbiRzY3V0LWV1cm86IFwiXFwyMGFjXCI7XG4vLyB5ZW5cbiRzY3V0LXllbjogXCJcXDAwYTVcIjtcbi8vIHJ1cGVlXG4kc2N1dC1ydXBlZTogXCJcXDIwQjlcIjtcbkBmdW5jdGlvbiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KSB7XG4gIC8vIFJldHVybiB0aGUgbGlzdCBvZiBgc3JjYCB2YWx1ZXMsIGluIG9yZGVyLCB0aGF0XG4gIC8vIGEgZ29vZCBgQGZvbnQtZmFjZWAgd2lsbCBuZWVkLCBpbmNsdWRpbmcgb25seVxuICAvLyB0aG9zZSBmb3JtYXRzIHNwZWNpZmllZCBpbiB0aGUgbGlzdCBgJGZvcm1hdHNgLlxuICAkcmVzdWx0OiAoKTtcbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAkZW90LXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRlb3QtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmMikge1xuICAgICR3b2ZmMi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYyLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZikge1xuICAgICR3b2ZmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB0dGYpIHtcbiAgICAkdHRmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHR0Zi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHN2Zykge1xuICAgICRzdmctdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fScpIGZvcm1hdCgnc3ZnJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRzdmctdmFsLCBjb21tYSk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AbWl4aW4gc2N1dC1mb250LWZhY2UgKFxuICAkZm9udC1mYW1pbHksXG4gICRmaWxlLXBhdGgsXG4gICR3ZWlnaHQ6IG5vcm1hbCxcbiAgJHN0eWxlOiBub3JtYWwsXG4gICRmb3JtYXRzOiBlb3Qgd29mZjIgd29mZiB0dGYgc3ZnXG4pIHtcblxuICBAaWYgaW5kZXgoJ2l0YWxpYycgJ29ibGlxdWUnLCAkd2VpZ2h0KSB7XG4gICAgJHN0eWxlOiAkd2VpZ2h0O1xuICAgICR3ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuXG4gICAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAgIHNyYzogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgIH1cbiAgICBzcmM6IG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpO1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGFuZ2luZy1pbmRlbnQgKFxuICAkaW5kZW50OiAxZW1cbikge1xuXG4gIC8vIHBhZGRpbmctbGVmdCBjcmVhdGVzIHRoZSBpbmRlbnQsXG4gIC8vIHdoaWxlIHRleHQtaW5kZW50IHB1bGxzIHRoZSBmaXJzdCBsaW5lXG4gIC8vIGJhY2sgdG8gdGhlIGVkZ2UuXG5cbiAgcGFkZGluZy1sZWZ0OiAkaW5kZW50O1xuICB0ZXh0LWluZGVudDogLSRpbmRlbnQ7XG5cbn1cblxuJXNjdXQtaGFuZ2luZy1pbmRlbnQge1xuICBAaW5jbHVkZSBzY3V0LWhhbmdpbmctaW5kZW50O1xufVxuQG1peGluIHNjdXQtaW5kZW50ZWQtcHMgKFxuICAkaW5kZW50OiAxLjVlbSxcbiAgJG5vLWZpcnN0LWluZGVudDogdHJ1ZVxuKSB7XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtaW5kZW50OiAkaW5kZW50O1xuICB9XG5cbiAgQGlmICRuby1maXJzdC1pbmRlbnQge1xuICAgIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB0ZXh0LWluZGVudDogMDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1pbmRlbnRlZC1wcyB7XG4gIEBpbmNsdWRlIHNjdXQtaW5kZW50ZWQtcHM7XG59XG5AbWl4aW4gc2N1dC1rZXktdmFsIChcbiAgJGRpdmlkZXI6IFwiOlwiLFxuICAkcGFkOiAwLjI1ZW0sXG4gICRpbmRlbnQ6IDFlbSxcbiAgJHNwYWNpbmc6IDAsXG4gICRwYWQtbGVmdDogMFxuKSB7XG5cbiAgJiA+IGR0IHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkcGFkO1xuICAgICAgQGlmICRwYWQtbGVmdCAhPSAwIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRwYWQtbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmID4gZGQge1xuICAgIG1hcmdpbi1sZWZ0OiAkaW5kZW50O1xuICAgIEBpZiAkc3BhY2luZyAhPSAwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWtleS12YWwge1xuICBAaW5jbHVkZSBzY3V0LWtleS12YWw7XG59XG5AbWl4aW4gc2N1dC1saW5rLWJiIChcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkd2lkdGg6IDFweFxuKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gIGJvcmRlci1ib3R0b20td2lkdGg6ICR3aWR0aDtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgfVxuXG59XG5cbiVzY3V0LWxpbmstYmIge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstYmI7XG59XG4vLyBTQ1VUIExJTksgVU5TVFlMRURcbi8vIGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0LyNsaW5rLXVuc3R5bGVkXG5cbkBtaXhpbiBzY3V0LWxpbmstdW5zdHlsZWQoKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcblxufVxuXG4lc2N1dC1saW5rLXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLXVuc3R5bGVkKCk7XG59XG5cbkBtaXhpbiBzY3V0LXJldmVyc2UtaXRhbGljcyAoXG4gICRlbGVtZW50czogbnVsbFxuKSB7XG5cbiAgJGVsZW1lbnQtbGlzdDogZW0sIGNpdGUsIGk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgI3tqb2luKCRlbGVtZW50LWxpc3QsICRlbGVtZW50cyl9IHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cblxufVxuXG4lc2N1dC1yZXZlcnNlLWl0YWxpY3Mge1xuICBAaW5jbHVkZSBzY3V0LXJldmVyc2UtaXRhbGljcztcbn1cblxuQG1peGluIHNjdXQtc2lkZS1saW5lZCAoXG4gICRoZWlnaHQ6IDFweCxcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkdi1hZGp1c3Q6IGZhbHNlLFxuICAkZG91YmxlOiBmYWxzZVxuKSB7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDUwJTtcblxuICAgIGJvcmRlci10b3Atc3R5bGU6ICRzdHlsZTtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAkaGVpZ2h0O1xuXG4gICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgJHYtYWRqdXN0ICE9IGZhbHNlIHtcbiAgICAgIGJvdHRvbTogJHYtYWRqdXN0O1xuICAgIH1cblxuICAgIEBpZiAkZG91YmxlICE9IGZhbHNlIHtcbiAgICAgIGhlaWdodDogJGRvdWJsZTtcbiAgICAgIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6ICRoZWlnaHQ7XG4gICAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0OiAkc3BhY2U7XG4gICAgbWFyZ2luLWxlZnQ6IC01MCU7XG4gIH1cbiAgJjphZnRlciB7XG4gICAgbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXNpZGUtbGluZWQge1xuICBAaW5jbHVkZSBzY3V0LXNpZGUtbGluZWQ7XG59XG5AbWl4aW4gc2N1dC10cnVuY2F0ZSB7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbn1cblxuJXNjdXQtdHJ1bmNhdGUge1xuICBAaW5jbHVkZSBzY3V0LXRydW5jYXRlO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInRvb2xraXQvcGxhY2Vob2xkZXJzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcInRvb2xraXQvY29sb3JzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9mb250c1wiO1xuQGltcG9ydCBcInRvb2xraXQvaW50cmluc2ljLXJhdGlvXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9uZXN0ZWQtY29udGV4dFwiO1xuQGltcG9ydCBcInRvb2xraXQvcGFyYWxsYXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3J0bFwiO1xuQGltcG9ydCBcInRvb2xraXQvdGFyZ2V0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC90cmlhbmdsZVwiO1xuQGltcG9ydCBcInRvb2xraXQvY2VudGVyXCI7XG5AaW1wb3J0IFwidG9vbGtpdC92aWV3cG9ydFwiO1xuQGltcG9ydCBcInRvb2xraXQvdW5kZXJsaW5lXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9hcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3NldC1tdWx0aXBsZVwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRUb29sa2l0LVNldHRpbmdzOiAoXG4gICdjbGVhcmZpeCBleHRlbmQnOiBmYWxzZSxcbiAgJ2NvbG9yIHN0YWNrIGFtb3VudHMnOiAyNSUgNTAlIDc1JSA4NSUgOTAlLFxuICAndGludCBzaGFkZSBhbW91bnRzJzogNzUlIDUwJSAyNSUsXG4gICd0aW50IGNvbG9yJzogI2ZmZixcbiAgJ3NoYWRlIGNvbG9yJzogIzAwMCxcbiAgJ2NvbG9yIHNjYWxlIHN0ZXBzJzogNixcbiAgJ2xpZ2F0dXJlIGV4dGVuZCc6IGZhbHNlLFxuICAnZm9udCBmYWNlIHdlaWdodCc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBzdHlsZSc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZic6IGZhbHNlLFxuICAnaWNvbiBmb250IGV4dGVuZCc6IGZhbHNlLFxuICAnaWNvbiBmb250IHNwZWFrJzogZmFsc2UsXG4gICdmYWRlIGluIGR1cmF0aW9uJzogMXMsXG4gICdmYWRlIGluIGxvYWRpbmcgY2xhc3MnOiAnLndmLWxvYWRpbmcnLFxuICAnZmFkZSBpbiBleHRlbmQnOiBmYWxzZSxcbiAgJ2ludHJpbnNpYyByYXRpbyc6IDE2LzksXG4gICdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnOiAxMDAlLFxuICAnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJzogJz4gKicsXG4gICdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nOiB0b3AsXG4gICdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJzogZmFsc2UsXG4gICduZXN0ZWQgY29udGV4dCBjb250ZXh0cyc6IDEwMCUsXG4gICduZXN0ZWQgY29udGV4dCBwb3NpdGlvbic6IGxlZnQsXG4gICd0cmlhbmdsZSBjb2xvcic6ICMwMDAsXG4gICd0cmlhbmdsZSBoZWlnaHQnOiAxZW0sXG4gICd0cmlhbmdsZSB3aWR0aCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIGFuZ2xlJzogMCxcbiAgJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJzogMSxcbiAgJ3BhcmFsbGF4IGVsZW1lbnQnOiAnYm9keScsXG4gICdwYXJhbGxheCBpb3MnOiB0cnVlLFxuICAncGFyYWxsYXggZGlzdGFuY2UnOiAwLFxuICAndmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICd2ZXJ0aWNhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnOiA1MCUsXG4gICdob3Jpem9udGFsIGZpeGVkJzogZmFsc2UsXG4gICdob3Jpem9udGFsIGV4dGVuZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJzogZmFsc2UsXG4gICd1bmRlcmxpbmUgYmFja2dyb3VuZCc6ICNmZmYsXG4gICd1bmRlcmxpbmUgY29sb3InOiAjMDBlLFxuICAndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnOiB0cnVlLFxuICAndW5kZXJsaW5lIGRpc3RhbmNlJzogMSxcbiAgJ3VuZGVybGluZSB3aWR0aCc6IDIsXG4gICd1bmRlcmxpbmUgZXh0ZW5kJzogZmFsc2UsXG4gICdhcnQgcGl4ZWwgc2l6ZSc6IDFweCxcbiAgJ2FydCBjb2xvcic6IGJsYWNrLFxuICAnYXJ0IGJvcmRlciByYWRpdXMnOiAwJVxuKTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBOZXcgU2V0dGluZ3MgbW9kdWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdsb2JhbFxuJEdsb2JhbFNldHRpbmdzOiAkVG9vbGtpdC1TZXR0aW5ncyAhZGVmYXVsdDtcbi8vIFVzZXJcbiRVc2VyU2V0dGluZ3M6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVzZXIgU2V0dGluZyBFeGlzdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJFJldHVybjtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1oYXMoJHNldHRpbmcpIHtcbiAgQHJldHVybiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIEdldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEdsb2JhbFNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctZ2V0LW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkdmFsdWVzOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkdmFsdWVzOiBtYXAtbWVyZ2UoJHZhbHVlcywgKCRzZXR0aW5nOiBzZXR0aW5nLWdldCgkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICR2YWx1ZXM7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtZ2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1nZXQoJHNldHRpbmcpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZ3MgU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgJHNldHRpbmdzKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZS1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJFJldHVybjogKCk7XG5cbiAgQGVhY2ggJEtleSwgJFZhbHVlIGluICRVc2VyU2V0dGluZ3Mge1xuICAgICRSZXR1cm46IGlmKCRzZXR0aW5nID09ICRLZXksICRSZXR1cm4sIG1hcC1tZXJnZSgkUmV0dXJuLCAoJEtleTogJFZhbHVlKSkpO1xuICB9XG5cbiAgJFVzZXJTZXR0aW5nczogJFJldHVybiAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRjbGVhci10aGUtc2V0dGluZ3M6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcmVzZXQoKSB7XG4gICRVc2VyU2V0dGluZ3M6ICgpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLXJlc2V0KCk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBQaWNrXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2soJHNldHRpbmcsICRpbnB1dCkge1xuICBAcmV0dXJuIGlmKCRpbnB1dCAhPSBudWxsLCAkaW5wdXQsIHNldHRpbmctZ2V0KCRzZXR0aW5nKSk7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2stbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZywgJGlucHV0IGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogc2V0dGluZy1waWNrKCRpbnB1dCwgJHNldHRpbmcpKSk7XG4gIH1cblxuICBAcmV0dXJuICRSZXR1cm47XG59IiwiJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFBsYWNlaG9sZGVyIEdldC9TZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCkge1xuICAkdW5pcXVlLWlkOiB1bmlxdWUtaWQoKTtcbiAgJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6IG1hcC1tZXJnZSgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgKCRpZDogJHVuaXF1ZS1pZCkpICFnbG9iYWw7XG4gIEByZXR1cm4gJHVuaXF1ZS1pZDtcbn1cblxuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCkge1xuICBAcmV0dXJuIG1hcC1nZXQoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICRpZCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhdGUgUGxhY2Vob2xkZXIgQ2xhc3MgYW5kIEV4dGVuZFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKTtcblxuICBAaWYgJHBsYWNlaG9sZGVyLWlkID09IG51bGwge1xuICAgICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKTtcbiAgICBAYXQtcm9vdCAlI3skcGxhY2Vob2xkZXItaWR9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZXh0ZW5kICUjeyRwbGFjZWhvbGRlci1pZH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU3RhdGljIE1peGluIEhlbHBlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gbWl4aW4tZHJ5ZXIoJGlkLCAkZXh0ZW5kOiB0cnVlKSB7XG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNb2Rlcm4gQ2xlYXJmaXggTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNsZWFyZml4KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnY2xlYXJmaXggZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjbGVhcmZpeCcpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb21wYXNzIEV4dGVuc2lvbiBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUaW50IGFuZCBTaGFkZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMdW1hXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBsdW1hKCRjb2xvcikge1xuICBAcmV0dXJuIChyZWQoJGNvbG9yKSAqIC4yOTkpICsgKGdyZWVuKCRjb2xvcikgKiAuNTg3KSArIChibHVlKCRjb2xvcikgKiAuMTE0KTtcbn1cblxuQGZ1bmN0aW9uIGx1bWEtZ3RlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPj0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWx0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpIDw9IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1kaWZmKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQHJldHVybiBsdW1hKCRjb2xvcjEpIC0gbHVtYSgkY29sb3IyKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTdGFja3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXN0YWNrKCRtYWluLCAkc2Vjb25kYXJ5LCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ2NvbG9yIHN0YWNrIGFtb3VudHMnKTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJGFtb3VudHMpID09IDEge1xuICAgICRhbW91bnRzOiBudGgoJGFtb3VudHMsIDEpO1xuICB9XG5cbiAgJHN0YWNrOiAkbWFpbjtcblxuICBAZWFjaCAkYW1vdW50IGluICRhbW91bnRzIHtcbiAgICAkc3RhY2s6IGpvaW4oJHN0YWNrLCBtaXgoJHNlY29uZGFyeSwgbnRoKCRzdGFjaywgMSksICRhbW91bnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0YWNrO1xufVxuXG4vLyBUaW50IFN0YWNrXG5AZnVuY3Rpb24gdGludC1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFNoYWRlIFN0YWNrXG5AZnVuY3Rpb24gc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFRpbnQvU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgJGNvbG9yczogKCk7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgndGludCBzaGFkZSBhbW91bnRzJyk7XG4gIH1cbiAgJGxlbmd0aDogbGVuZ3RoKCRhbW91bnRzKTtcblxuICAvLyBTaGFkZXNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgc2hhZGUoJGNvbG9yLCBudGgoJGFtb3VudHMsICRpKSkpO1xuICB9XG5cbiAgLy8gQmFzZVxuICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgJGNvbG9yKTtcblxuICAvLyBUaW50c1xuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRsZW5ndGggLSAxIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgdGludCgkY29sb3IsIG50aCgkYW1vdW50cywgJGxlbmd0aCAtICRpKSkpO1xuICB9XG5cbiAgQHJldHVybiAkY29sb3JzO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFNjYWxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc2NhbGUoJG1haW4sICRzZWNvbmRhcnksICRzdGVwczogbnVsbCkge1xuICAkc3RlcHM6IGlmKCRzdGVwcyAhPSBudWxsLCAkc3RlcHMsIHRvb2xraXQtZ2V0KCdjb2xvciBzY2FsZSBzdGVwcycpKTtcblxuICAkbGlzdDogJG1haW47XG5cbiAgJHJlZDE6IHJlZCgkbWFpbik7XG4gICRyZWQyOiByZWQoJHNlY29uZGFyeSk7XG4gICRyZWQtZGlmZjogKCgkcmVkMSAtICRyZWQyKSAvICgoJHN0ZXBzIC0gMSkpKTtcblxuICAkaHVlMTogaHVlKCRtYWluKTtcbiAgJGh1ZTI6IGh1ZSgkc2Vjb25kYXJ5KTtcbiAgQGlmICgkaHVlMiArIDM1OSAtICRodWUxKSA8IGFicygkaHVlMSAtICRodWUyKSB7XG4gICAgJGh1ZTI6ICRodWUyICsgMzU5O1xuICB9XG4gICRodWUtZGlmZjogKCRodWUyIC0gJGh1ZTEpIC8gKCRzdGVwcyAtIDEpO1xuXG4gICRzYXQxOiBzYXR1cmF0aW9uKCRtYWluKTtcbiAgJHNhdDI6IHNhdHVyYXRpb24oJHNlY29uZGFyeSk7XG4gICRzYXQtZGlmZjogMDtcbiAgQGlmICRzYXQxID4gJHNhdDIge1xuICAgICRzYXQtZGlmZjogKCRzYXQyIC0gJHNhdDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MSAtICRzYXQyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRsdGUxOiBsaWdodG5lc3MoJG1haW4pO1xuICAkbHRlMjogbGlnaHRuZXNzKCRzZWNvbmRhcnkpO1xuICAkbHRlLWRpZmY6IDA7XG4gIEBpZiAkbHRlMSA+ICRsdGUyIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMiAtICRsdGUxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTEgLSAkbHRlMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkYWxwMTogYWxwaGEoJG1haW4pO1xuICAkYWxwMjogYWxwaGEoJHNlY29uZGFyeSk7XG4gICRhbHAtZGlmZjogMDtcbiAgQGlmICRhbHAxID4gJGFscDIge1xuICAgICRhbHAtZGlmZjogKCRhbHAyIC0gJGFscDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMSAtICRhbHAyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRodWUtaG9sZDogJGh1ZTE7XG4gICRzYXQtaG9sZDogJHNhdDE7XG4gICRsdGUtaG9sZDogJGx0ZTE7XG4gICRhbHAtaG9sZDogJGFscDE7XG4gICRjb2xvci1ob2xkOiAwO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJHN0ZXBzIHtcbiAgICAkaHVlLWhvbGQ6ICRodWUtaG9sZCArICRodWUtZGlmZjtcbiAgICAkc2F0LWhvbGQ6ICRzYXQtaG9sZCArICRzYXQtZGlmZjtcbiAgICAkbHRlLWhvbGQ6ICRsdGUtaG9sZCArICRsdGUtZGlmZjtcbiAgICAkYWxwLWhvbGQ6ICRhbHAtaG9sZCArICRhbHAtZGlmZjtcblxuICAgICRjb2xvci1ob2xkOiBoc2xhKCRodWUtaG9sZCwgJHNhdC1ob2xkLCAkbHRlLWhvbGQsICRhbHAtaG9sZCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGNvbG9yLWhvbGQpO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFbmFibGUgbGlnYXR1cmVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnbGlnYXR1cmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnZW5hYmxlIGxpZ2F0dXJlcycpIHtcbiAgICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXM7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2E9MSwgZGxpZz0xXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1zLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtby1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIixcImRsaWdcIjtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFjZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZm9udC1mYWNlKCRuYW1lLCAkZmlsZXMsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGlubGluZS13b2ZmOiBudWxsKSB7XG4gICR3ZWlnaHQ6IGlmKCR3ZWlnaHQgIT0gbnVsbCwgJHdlaWdodCwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSB3ZWlnaHQnKSk7XG4gICRzdHlsZTogaWYoJHN0eWxlICE9IG51bGwsICRzdHlsZSwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBzdHlsZScpKTtcbiAgJGlubGluZS13b2ZmOiBpZigkaW5saW5lLXdvZmYgIT0gbnVsbCwgJGlubGluZS13b2ZmLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIGlubGluZSB3b2ZmJykpO1xuXG4gICRmb250LXN0YWNrOiAoKTtcbiAgJGZvbnQtc3JjOiAnJztcbiAgJGVvdDogZmFsc2U7XG4gICRmb250LWV4dGVuc2lvbnM6ICgnZW90JzogJ2VtYmVkZGVkLW9wZW50eXBlJywgJ3dvZmYyJzogJ3dvZmYyJywgJ3dvZmYnOiAnd29mZicsICd0dGYnOiAndHJ1ZXR5cGUnLCAnc3ZnJzogJ3N2ZycpO1xuXG4gIEBlYWNoICRleHQsICRmb3JtYXQgaW4gJGZvbnQtZXh0ZW5zaW9ucyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRmaWxlcywgJGV4dCkge1xuICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhpbmxpbmUtZm9udC1maWxlcykgYW5kICRpbmxpbmUtd29mZiA9PSB0cnVlIGFuZCAoJGV4dCA9PSAnd29mZicgb3IgJGV4dCA9PSAnd29mZjInKSB7XG4gICAgICAgICRmb250LXNyYzogaW5saW5lLWZvbnQtZmlsZXMobWFwLWdldCgkZmlsZXMsICRleHQpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIGZ1bmN0aW9uLWV4aXN0cyhmb250LXVybCkge1xuICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkZm9udC1zdGFjazogYXBwZW5kKCRmb250LXN0YWNrLCAkZm9udC1zcmMsICdjb21tYScpO1xuICAgIH1cblxuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRuYW1lO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6ICRlb3Q7XG4gICAgfVxuICAgIEBpZiBsZW5ndGgoJGZvbnQtc3RhY2spID4gMCB7XG4gICAgICBzcmM6ICRmb250LXN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEljb24gRm9udFxuLy8gRnJvbSBodHRwOi8vaWNvbW9vbi5pb1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaWNvbi1mb250KCRmb250LXN0YWNrLCAkc3BlYWs6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHNwZWFrOiBpZigkc3BlYWsgIT0gbnVsbCwgJHNwZWFrLCB0b29sa2l0LWdldCgnaWNvbiBmb250IHNwZWFrJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjaztcbiAgQGlmICRzcGVhayA9PSBmYWxzZSB7XG4gICAgc3BlYWs6IG5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gaWNvbi1mb250LS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCAge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpY29uIGZvbnQgY29yZScpIHtcbiAgICAgIEBpbmNsdWRlIGljb24tZm9udC0tY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZCk7XG5cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWRlIEluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjb250ZW50LWZhZGUtaW4oJGR1cmF0aW9uOiBudWxsLCAkbG9hZGluZzogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZHVyYXRpb246IGlmKCRkdXJhdGlvbiAhPSBudWxsLCAkZHVyYXRpb24sIHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykpO1xuICAkbG9hZGluZzogaWYoJGxvYWRpbmcgIT0gbnVsbCwgJGxvYWRpbmcsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUgYW5kICRkdXJhdGlvbiA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpIGFuZCAkbG9hZGluZyA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjb250ZW50IGZhZGUgaW4nKSB7XG4gICAgICBAaW5jbHVkZSBjb250ZW50LWZhZGUtaW4oJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaWYgbm90IG1peGluLWV4aXN0cygnc2luZ2xlLXRyYW5zaXRpb24nKSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG9wYWNpdHkgJGR1cmF0aW9uKTtcbiAgICB9XG5cbiAgICAjeyRsb2FkaW5nfSAmIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZsdWlkIEVtYmVkcyBhbmQgd2hhdGV2ZXIgV0lUSCBOTyBKQVZBU0NJUFQhXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBwYXJlbnQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gY2hpbGQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICB0b3A6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG5cbiAgcGFkZGluZy0jeyRwb3NpdGlvbn06ICgxIC8gJHJhdGlvKSAqICR3aWR0aDtcbiAgd2lkdGg6ICR3aWR0aDtcbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRlbGVtZW50czogaWYoJGVsZW1lbnRzICE9IG51bGwsICRlbGVtZW50cywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZCk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xuXG4gIEBlYWNoICRlbGVtZW50IGluICRlbGVtZW50cyB7XG4gICAgI3skZWxlbWVudH0ge1xuICAgIFx0QGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXIoJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpbygkcmF0aW8sICR3aWR0aCwgJGVsZW1lbnRzLCAkZXh0ZW5kLCAkcG9zaXRpb24pO1xufVxuXG5AbWl4aW4gaXItcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG59IiwiLy8gc2ltcGxlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbnRleHQgb2YgYSBuZXN0ZWQgcGVyY2VudGFnZS5cbkBmdW5jdGlvbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG5cbiAgLy8gRmlyc3QgbGV2ZWwgZGVlcCBpcyBhbHdheXMgMTAwJVxuICAkcGVyY2VudGFnZTogMTAwJTtcblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBsZXZlbFxuICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgIC8vIEludmVydCB0aGUgcGVyY2VudGFnZSB0byBmaW5kIGNvbnRleHRcbiAgICAkcGVyY2VudGFnZTogcGVyY2VudGFnZSgkcGVyY2VudGFnZSAvICRjb250ZXh0KTtcbiAgfVxuICAvLyBSZXR1cm4gZmluYWwgcGVyY2VudGFnZVxuICBAcmV0dXJuICRwZXJjZW50YWdlO1xufVxuXG4vLyBtaXhpbiB0byBtYWtlIHRoaW5ncyBlYXNpZXJcbkBtaXhpbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nKSk7XG5cbiAgd2lkdGg6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cyk7XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJjZW50ZXJcIiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0uNTtcbiAgfVxuICBAaWYgJHBvc2l0aW9uID09IFwicmlnaHRcIiB7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtMSArIDEwMCU7XG4gIH1cbn0iLCIvLyBNYWdpYyBwYXJhbGxheCBtaXhpbnNcbkBtaXhpbiBwYXJhbGxheC1pbml0KCRwZXJzcGVjdGl2ZTogbnVsbCwgJGVsZW1lbnQ6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcblxuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJGVsZW1lbnQ6IGlmKCRlbGVtZW50ICE9IG51bGwsICRlbGVtZW50LCB0b29sa2l0LWdldCgncGFyYWxsYXggZWxlbWVudCcpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIEBpZiAkZWxlbWVudCA9PSAnYm9keScge1xuICAgIEBhdC1yb290IHtcbiAgICAgIGh0bWwsIGJvZHkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICBib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGVsZW1lbnQgPT0gdGhpcyB7XG4gICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGF0LXJvb3QgI3skZWxlbWVudH0ge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmU6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBvdmVyZmxvdzogYXV0bztcbiAgQGlmIG1peGluLWV4aXN0cyhwZXJzcGVjdGl2ZSkge1xuICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSAqIDFweCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgICBwZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICB9XG4gIC8vIEFsbG93cyBmb3Igc21vb3RoIHNjcm9sbGluZyBidXQgZGlzYWJsZXMgcGFyYWxsYXggZWZmZWN0cy5cbiAgQGlmICRwYXJhbGxheC1pb3MgPT0gZmFsc2Uge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAvLyBNYWtlIHN1cmUgM0QgcGVyc3BlY3RpdmUgaXMgcHJlc2VydmVkXG4gICYsICYgKiB7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0tc3R5bGUpIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZShwcmVzZXJ2ZS0zZCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheCgkZGlzdGFuY2U6IG51bGwsICRwZXJzcGVjdGl2ZTogbnVsbCkge1xuXG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGRpc3RhbmNlJykpO1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcblxuICAkdHJhbnNmb3JtOiB0cmFuc2xhdGVaKCRkaXN0YW5jZSAqICRwZXJzcGVjdGl2ZSAqIDFweCkgc2NhbGUoYWJzKCRkaXN0YW5jZSAtIDEpKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnNmb3JtKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gICAgdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICB9XG5cbiAgei1pbmRleDogJGRpc3RhbmNlICogMTAwO1xufVxuIiwiQG1peGluIHJ0bCgkcHJvcGVydHksICR2YWx1ZSkge1xuICAkX3Byb3BlcnR5OiAkcHJvcGVydHk7XG4gICN7JHByb3BlcnR5fTogJHZhbHVlO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA9PSA0IHtcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgI3skcHJvcGVydHl9OiBudGgoJHZhbHVlLCAxKSBudGgoJHZhbHVlLCA0KSBudGgoJHZhbHVlLCAzKSBudGgoJHZhbHVlLCAyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpIC0gMSkgKyAncmlnaHQnO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykgLSAxKSArICdsZWZ0JztcbiAgICB9XG5cbiAgICBAaWYgJHByb3BlcnR5ICE9ICRfcHJvcGVydHkge1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiQG1peGluIHRhcmdldCgkdGFyZ2V0KSB7XG4gIEBhdC1yb290IHtcbiAgICAvKiEgQHt0YXJnZXQ6ICN7JHRhcmdldH19ICovXG4gICAgJiB7XG4gICAgICBAY29udGVudDsgIFxuICAgIH1cbiAgICAvKiEge3RhcmdldDogI3skdGFyZ2V0fX1AICovICBcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRHJhdyB0cmlhbmdsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gdHJpYW5nbGUoJGNvbG9yOiBudWxsLCAkaGVpZ2h0OiBudWxsLCAkd2lkdGg6IG51bGwsICRhbmdsZTogbnVsbCkge1xuXG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGNvbG9yJykpO1xuICAkaGVpZ2h0OiBpZigkaGVpZ2h0ICE9IG51bGwsICRoZWlnaHQsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBoZWlnaHQnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIHdpZHRoJykpO1xuICAkYW5nbGU6IGlmKCRhbmdsZSAhPSBudWxsLCAkYW5nbGUsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBhbmdsZScpKTtcblxuICBAaWYgbnRoKCRhbmdsZSwgMSkgPT0gXCJ0b3BcIiBvciBudGgoJGFuZ2xlLCAxKSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IFwiI3skYW5nbGV9XCI7XG4gIH1cblxuICBAaWYgJGFuZ2xlID09IFwidG9wXCIge1xuICAgICRhbmdsZTogMDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiA3O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJyaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAxO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDQ7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiAzO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA2O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNTtcbiAgfVxuXG4gIEBpZiB1bml0KCRoZWlnaHQpID09IFwiXCIgb3IgdW5pdCgkaGVpZ2h0KSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skaGVpZ2h0fSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIGhlaWdodC5cIlxuICB9XG5cbiAgQGlmIHVuaXQoJHdpZHRoKSA9PSBcIlwiIG9yIHVuaXQoJHdpZHRoKSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skd2lkdGh9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3Igd2lkdGguXCJcbiAgfVxuXG4gIC8vIG9mZnNldCA0NWRlZyB0byBtYWtlIGVhY2ggc2lkZSBzdGFydCBhdCAwXG4gICRkZWc6ICRhbmdsZSArIDQ1O1xuICAvLyBpZiB1bml0cywgcmVtb3ZlIHVuaXRzXG4gIEBpZiB1bml0KCRkZWcpID09IGRlZyB7XG4gICAgJGRlZzogJGRlZyAvIDFkZWc7XG4gIH1cbiAgLy8gc2hpZnQgdG8gYmUgb24gYSBzY2FsZSBmcm9tIDAgdG8gOTAuXG4gIEB3aGlsZSAkZGVnID4gOTAge1xuICAgICRkZWc6ICRkZWcgLSA5MDtcbiAgfVxuICBAd2hpbGUgJGRlZyA8IDAge1xuICAgICRkZWc6ICRkZWcgKyA5MDtcbiAgfVxuICAvLyBHZXQgYSByYXRpbyBvZiA5MCB0byBtdWx0aXBseSBieS5cbiAgJGRlZzogJGRlZyAvIDkwO1xuXG4gIC8vIG1ha2Ugc3VyZSBtZXRyaWNzIGFyZSByZXNldFxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gIC8vIHJ1biB0aHJvdWdoIHNpZGVzXG4gIEBpZiAkYW5nbGUgPD0gNDUgb3IgJGFuZ2xlID4gMzE1IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKSAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gNDUgYW5kICRhbmdsZSA8PSAxMzUge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqICRkZWcpIDAgKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGg7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDEzNSBhbmQgJGFuZ2xlIDw9IDIyNSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAoJHdpZHRoICogJGRlZykgMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDIyNSBhbmQgJGFuZ2xlIDw9IDMxNSB7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aCAoJGhlaWdodCAqICRkZWcpIDA7XG4gIH1cbn0iLCIvLyBWZXJ0aWNhbGx5IGNlbnRlciBhbnl0aGluZywgbGl0ZXJhbGx5IGFueXRoaW5nLlxuLy8gaHR0cDovL3plcm9zaXh0aHJlZS5zZS92ZXJ0aWNhbC1hbGlnbi1hbnl0aGluZy13aXRoLWp1c3QtMy1saW5lcy1vZi1jc3MvXG5AbWl4aW4gdmVydGljYWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuXG4gIHRvcDogJG1pZHBvaW50O1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3ZlcnRpY2FsIGNlbnRlcicpIHtcbiAgICAgIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhvcml6b250YWwgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgQGlmICRtaWRwb2ludCAhPSAwJSB7XG4gICAgbGVmdDogJG1pZHBvaW50O1xuICB9XG5cbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBYnNvbHV0ZSBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFic29sdXRlLWNlbnRlcigkdmVydGljYWw6IG51bGwsICRob3Jpem9udGFsOiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHZlcnRpY2FsOiBpZigkdmVydGljYWwgIT0gbnVsbCwgJHZlcnRpY2FsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgdG9wOiAkdmVydGljYWw7XG4gIEBpZiAkaG9yaXpvbnRhbCAhPSAwJSB7XG4gICAgbGVmdDogJGhvcml6b250YWw7XG4gIH1cblxuICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENTUyBsZXZlbCA0IFZpZXdwb3J0XG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtZGV2aWNlLWFkYXB0LyN0aGUtYXR2aWV3cG9ydC1ydWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiB2aWV3cG9ydCB7XG4gIEAtd2Via2l0LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tcy12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQHZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4iLCJAbWl4aW4gdW5kZXJsaW5lKCRiYWNrZ3JvdW5kOiBudWxsLCAkY29sb3I6IG51bGwsICRjbGVhci1kZXNjZW5kZXJzOiBudWxsLCAkZGlzdGFuY2U6IG51bGwsICR3aWR0aDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkYmFja2dyb3VuZDogaWYoJGJhY2tncm91bmQgIT0gbnVsbCwgJGJhY2tncm91bmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgYmFja2dyb3VuZCcpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNvbG9yJykpO1xuICAkY2xlYXItZGVzY2VuZGVyczogaWYoJGNsZWFyLWRlc2NlbmRlcnMgIT0gbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnMsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycycpKTtcbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGRpc3RhbmNlJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgd2lkdGgnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgJFBYOiAuMDYyNWVtO1xuXG4gIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKCRleHRlbmQpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHMoYmFja2dyb3VuZC1pbWFnZSkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhsaW5lYXItZ3JhZGllbnQpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKFxuICAgICAgbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKVxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSk7XG4gIH1cbiAgYmFja2dyb3VuZC1zaXplOiAoMiAqICRQWCkgKCgxICsgJHdpZHRoKSAqICRQWCk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgKCgkd2lkdGgpICogJFBYKSArICRkaXN0YW5jZTtcblxuICBAaWYgJGNsZWFyLWRlc2NlbmRlcnMge1xuICAgIHRleHQtc2hhZG93OiAoMSAqICRQWCkgKDEgKiAkUFgpIDAgJGJhY2tncm91bmQsICgtMSAqICRQWCkgMCAwICRiYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd1bmRlcmxpbmUnKSB7XG4gICAgICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBUlQhXG4vLyBJbnNwaXJlZCBieSBodHRwOi8vZWxydW1vcmRlbGFsdXouZ2l0aHViLmlvL1BpeGVsYXRvci9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFydCgkYXJ0LCAkcHgtc2l6ZTogbnVsbCwgJGNvbG9yOiBudWxsLCAkcmFkaXVzOiBudWxsKSB7XG4gICRweC1zaXplOiBpZigkcHgtc2l6ZSAhPSBudWxsLCAkcHgtc2l6ZSwgdG9vbGtpdC1nZXQoJ2FydCBwaXhlbCBzaXplJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCdhcnQgY29sb3InKSk7XG4gICRyYWRpdXM6IGlmKCRyYWRpdXMgIT0gbnVsbCwgJHJhZGl1cywgdG9vbGtpdC1nZXQoJ2FydCBib3JkZXIgcmFkaXVzJykpO1xuXG4gICRidWlsZDogKCk7XG4gICR5OiAkcHgtc2l6ZTtcbiAgJHg6IDA7XG5cbiAgaGVpZ2h0OiAkcHgtc2l6ZTtcbiAgd2lkdGg6ICRweC1zaXplO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyX2xlbmd0aCgkYXJ0KSB7XG4gICAgJGNoYXI6IHN0cl9zbGljZSgkYXJ0LCAkaSwgJGkpO1xuICAgICR4OiAkeCArICRweC1zaXplO1xuXG4gICAgQGlmICRjaGFyID09ICduJyB7XG4gICAgICAkeTogJHkgKyAkcHgtc2l6ZTtcbiAgICAgICR4OiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY2hhciAhPSAnICcge1xuICAgICAgJGJvcmRlcjogJHggJHkgMCAkY29sb3I7XG4gICAgICAkYnVpbGQ6IGFwcGVuZCgkYnVpbGQsICRib3JkZXIsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBib3gtc2hhZG93OiAkYnVpbGQ7XG59IiwiQG1peGluIHNldC1tdWx0aXBsZSgkdmFsdWUsICRwcm9wZXJ0aWVzLi4uKSB7XG4gICRwcm9wZXJ0eS1sZW5ndGg6IGxlbmd0aCgkcHJvcGVydGllcyk7XG4gICRlcnJvci1tc2c6IFwiVGhlIGBzZXQtbXVsdGlwbGVgIG1peGluIHJlcXVpcmVzIHlvdSB0byBwYXNzIGluIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzIHRoZSBzZWNvbmQgYXJndW1lbnRcIjtcblxuICBAaWYgJHByb3BlcnR5LWxlbmd0aCA8IDEge1xuICAgIEBpZiBmZWF0dXJlLWV4aXN0cyhhdC1lcnJvcikge1xuICAgICAgQGVycm9yICRlcnJvci1tc2c7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICRlcnJvci1tc2c7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCBpbiBpcyBhIHdoaXRlLXNwYWNlZCBzZXBhcmF0ZWQgbGlzdC5cbiAgJHByb3BlcnRpZXM6IGlmKCRwcm9wZXJ0eS1sZW5ndGggPT0gMSwgbnRoKCRwcm9wZXJ0aWVzLCAxKSwgJHByb3BlcnRpZXMpO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSBpbiAkcHJvcGVydGllcyB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWVcbiAgfVxufVxuIiwiLy8gIE1vZHVsZSBTY2FsZSBhbmQgYmFzZSBmb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJGJhc2UtZm9udC1zaXplOiAgIDE0cHg7XG4kaWRlYWwtZm9udC1zaXplOiAgMjJweDtcbi8vICRiYXNlLWxpbmUtaGVpZ2h0OiBtcygxLCAkYmFzZS1mb250LXNpemUpO1xuXG4kcmh5dGhtLXVuaXQ6IFwicmVtXCI7XG4kcmh5dGhtLWdhcDogOHB4O1xuJHJlbS13aXRoLXB4LWZhbGxiYWNrOiBmYWxzZTtcblxuJHNjdXQtcmVtLWJhc2U6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZS1mb250LXNpemUpO1xuXG5cbi8vIHt7IENvbXBvbmVudCBzaXplIH19XG4kZ2xvYmFsLXJhZGl1czogM3B4O1xuIiwiLy8gIEdyaWQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG5cbiRsYXlvdXQtYmFzZTogKFxuICBndXR0ZXJzOiAxLzUsXG4gIGNvbHVtbi13aWR0aDogODBweCxcbiAgLy8gZ3V0dGVyLXBvc2l0aW9uOiBpbnNpZGUtc3RhdGljLFxuICBkZWJ1ZzogKFxuICAgIC8vIGltYWdlOiBzaG93LFxuICApLFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IHRydWUsXG4gICAgcmVtOiBmYWxzZSxcbiAgKSxcbik7XG4kc3VzeTogbGF5b3V0KDUgJGxheW91dC1iYXNlKTtcblxuLy8ge3sgRWxlbWVudCB0d2ljayBwb2ludHMgfX1cblxuLy8ge3sgRGV2aWNlIGxheW91dHMgfX1cbiRzdXN5LW1lZGlhOiAoXG4gICdtb2JpbGUnOiAnKG1heC13aWR0aDogNDE0cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6ICcobWF4LXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiAnKG1heC13aWR0aDogMTAyNHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3RhYmxldCc6ICcobWluLXdpZHRoOiA3NjhweCknLFxuICAndGFibGV0LXBvcnRyYWl0LW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ2Rlc2t0b3AnOiAnKG1pbi13aWR0aDogMTIwMHB4KScsXG4gICdjYXRlZ29yeS1tZW51JzogJyhtaW4td2lkdGg6IDEwMjRweCknXG4pO1xuJHRhYmxldDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgdGFibGV0KSxcbiAgbGF5b3V0OiA5IC41XG4pO1xuJHRhYmxldC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCR0YWJsZXQsIGxheW91dCkpO1xuJGRlc2t0b3A6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIGRlc2t0b3ApLFxuICBsYXlvdXQ6IDEyIDEuNSBzcGxpdFxuKTtcbiRkZXNrdG9wLWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJGRlc2t0b3AsIGxheW91dCkpO1xuJGRlc2t0b3AtZ3JpZC1wYWRkaW5nOiBzY3V0LXJlbSgxNSk7XG5cbi8vICB7eyBMYXllcnMgLS0tLS0tIH19XG4kbGF5ZXJzOiAoXG4gIGJhc2UsXG4gIGhlYWRlci1tZW51LFxuICBkcmF3ZXIsXG4gIGRyYXdlci1zaGFkb3csXG4gIGRyYXdlci1uYXYsXG4pOyIsIi8vICBTZXR0aW5nc1xuLy8gID09PT09PT09XG5cbiRjb2xvci1saWdodC1zYXR1cmF0aW9uOiA5MyU7XG5cbi8vICBDb2xvcnNcbi8vICA9PT09PT1cblxuJGdyYXktYmFzZTogICAgICMwMDAgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrZXI6ICAgdGludCgkZ3JheS1iYXNlLCAxMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrOiAgICAgdGludCgkZ3JheS1iYXNlLCAyMCUpICAgIWRlZmF1bHQ7XG4kZ3JheTogICAgICAgICAgdGludCgkZ3JheS1iYXNlLCAzMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodDogICAgdGludCgkZ3JheS1iYXNlLCA0Ni41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodGVyOiAgdGludCgkZ3JheS1iYXNlLCA5My41JSkgIWRlZmF1bHQ7XG5cbi8vICBUZXh0c1xuLy8gIC0tLS0tXG5cbiR0ZXh0LWNvbG9yOiAkZ3JheS1kYXJrO1xuXG4vLyAgUGFsbGV0ZVxuLy8gIC0tLS0tLS0tLS0tXG5cbiRibHVlOiAjMmQ2ZWM2O1xuJGJsdWUtZGFyazogcmdiKDAsIDY5LCAxNjQpO1xuJGJsdWUtbGlnaHQ6ICNkOGU5ZmY7XG4keWVsbG93OiAjZmM5NjAwO1xuJHllbGxvdy1kYXJrOiAjYjg2ZTAwO1xuJHllbGxvdy1saW5rOiAjZmZkODAwO1xuJG9yYW5nZTogI2ZjNDcwMDtcbiRvcmFuZ2UtZGFyazogI2I4NmUwMDtcbiRyZWQ6IHJnYigyMDYsIDY4LCA2Mik7XG4kZ3JlZW46IHJnYigyOCwgMTQ5LCAyMik7XG4kcGluazogcmdiKDE5NywgMzEsIDEyNCk7XG5cbiRwcmltYXJ5OiBzaGFkZSgjNDI4YmNhLCA2LjUlKTtcbiRzdWNjZXNzOiAjNWNiODVjO1xuJGluZm86ICAgICM1YmMwZGM7XG4kd2FybmluZzogI2YwYWQ0ZTtcbiRkYW5nZXI6ICAjZDk1MzRmO1xuXG4kaW5wdXQtYm9yZGVyOiAjZTRlNGU0O1xuJGJvcmRlci1ncmF5OiAjOTE5MTkxO1xuJGJhY2tncm91bmQtZ3JheTogI2U5ZTllOTtcblxuLy8gIExpbmtzXG4vLyAgLS0tLS1cblxuJGxpbmstY29sb3I6ICAgICAgICAgICAjMDAwICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICBzaGFkZSgkbGluay1jb2xvciwgMTUlKSAhZGVmYXVsdDtcbiRsaW5rLWZvY3VzLWNvbG9yOiAgICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLWFjdGl2ZS1jb2xvcjogICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLXZpc2l0ZWQtY29sb3I6ICAgJGdyYXktZGFyayAhZGVmYXVsdDtcblxuLy8gIE5Qcm9ncmVzc1xuLy8gIC0tLS0tLS0tLVxuJG5wcm9ncmVzcy1jb2xvcjogICAgJHByaW1hcnk7XG4iLCIvLyAgRm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiAgIHJpZ2h0O1xuXG4vLyDlg4Xph53lsI3oi7Hmlodcbi8vIEBmb250LWZhY2Uge1xuLy8gICBmb250LWZhbWlseTogRW5nbGlzaDtcbi8vICAgdW5pY29kZS1yYW5nZTogVSswMC0wMjRGO1xuLy8gICBzcmM6IGxvY2FsKEhlbHZldGljYSk7XG4vLyB9XG5cbiRzYW5zOiAgICBIZWx2ZXRpY2FOZXVlLUxpZ2h0XG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUgTGlnaHQnXG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUnXG4gICAgICAgLCAgSGVsdmV0aWNhXG4gICAgICAgLCAnSGVpdGkgVEMnXG4gICAgICAgLCAnTGlIZWkgUHJvJ1xuICAgICAgICwgJ01pY3Jvc29mdCBKaGVuZ0hlaSdcbiAgICAgICAsICflvq7ou5/mraPpu5Hpq5QnXG4gICAgICAgLCAgQXJpYWxcbiAgICAgICAsICBzYW5zLXNlcmlmO1xuXG4kc2VyaWY6ICAnUFQgU2VyaWYnXG4gICAgICAgLCBHZW9yZ2lhXG4gICAgICAgLCBUaW1lc1xuICAgICAgICwgJ1RpbWVzIE5ldyBSb21hbidcbiAgICAgICAsICdTb25ndGkgVEMnXG4gICAgICAgLCAnSGlyYWdpbm8gTWluY2hvIFByb04nXG4gICAgICAgLCBzZXJpZjtcblxuJGJhc2UtZm9udC1mYW1pbHk6ICRzYW5zOyJdLCJtYXBwaW5ncyI6IkE4Q0FBOzs7OztFQUtFO0E5Q01zQixBQUFBLHlCQUF5QixDQUFDO0VBQ2hELGFBQWEsRUNUa0IsR0FBVztFRFUxQyxRQUFRLEVBQUUsUUFBUyxHQUNwQjs7QUFDRCxBQUFBLGlCQUFpQixDQUFDO0VBQ2hCLE9BQU8sRUFBRSxJQUFLLEdBRWY7RUFIRCxBQUFBLGlCQUFpQixBQUVkLGtCQUFrQixDQUFDO0lBQUUsT0FBTyxFQUFFLEtBQU0sR0FBSTs7QUFFM0MsQUFBQSx1QkFBdUIsQ0FBQztFQUN0QixNQUFNLEVBQUUsQ0FBRTtFQUNWLFFBQVEsRUFBRSxRQUFTLEdBQ3BCOztBQUNELEFBQUEsMEJBQTBCLENBQUM7RUFDekIsT0FBTyxFQUFFLElBQUs7RUFDZCxPQUFPLEVDdEJ3QixHQUFXO0VEdUIxQyxRQUFRLEVBQUUsUUFBUSxDQ3pCSSxDQUFPLENEeUJOLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUM1QixJQUFJLEVBQUUsU0FBVTtFQUNoQixnQkFBZ0IsRUFBRSxrQkFBSSxHQUV2QjtFNkNvQkcsTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO0k3QzNCckIsQUFBQSwwQkFBMEIsQ0FBQztNQU1BLE9BQU8sRUFBRSxLQUFNLEdBQ3pDOztBQVdELEFBVEEsdUJBU3VCLEVBaUJ2QixBQTFCQSxrQ0EwQmtDLEVBWmxDLEFBZEEsdUJBY3VCLEVBZ0J2QixBQTlCQSxrQ0E4QmtDLENBOUIzQjtFQUNMLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxDQ2hDQSxDQUFPLENBQVAsQ0FBTyxDQUFQLENBQU87RURpQzdCLE1BQU0sRUFBRSxJQUFLLEdBR2Q7RUFJRCxBQUxFLHVCQUtxQixDQUxyQixLQUFLLEVBc0JQLEFBdEJFLGtDQXNCZ0MsQ0F0QmhDLEtBQUssRUFVUCxBQVZFLHVCQVVxQixDQVZyQixLQUFLLEVBMEJQLEFBMUJFLGtDQTBCZ0MsQ0ExQmhDLEtBQUssQ0FBQztJQUFFLElBQUksRUNqQ21CLElBQVcsR0RpQ3BCOztBNkNjcEIsTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO0U3Q1pyQixBQUFBLHlCQUF5QixDQUFDO0lBQ0MsT0FBTyxFQUFFLElBQUssR0FDeEM7O0FBQ0QsQUFBQSx1QkFBdUIsRUFpQnZCLEFBakJBLGtDQWlCa0MsQ0FqQlY7RUFFdEIsSUFBSSxFQUFFLENBQUU7RUFDUixTQUFTLEVBQUUsY0FBTSxDQUFTLGVBQVUsR0FDckM7O0FBQ0QsQUFBQSx1QkFBdUIsRUFnQnZCLEFBaEJBLGtDQWdCa0MsQ0FoQlY7RUFFdEIsS0FBSyxFQUFFLENBQUU7RUFDVCxTQUFTLEVBQUUsZ0JBQVUsR0FDdEI7O0FBRUQsQUFBQSxvQ0FBb0MsQ0FBQztFQUNuQyxhQUFhLEVDbERrQixHQUFXO0VEbUQxQyxPQUFPLEVBQUUsQ0FBQyxDQ25EcUIsSUFBVztFRG9EMUMsUUFBUSxFQUFFLFFBQVMsR0FDcEI7O0FBQ0QsQUFBMkIsMkJBQUEsQUFBQSxZQUFZLENBQUM7RUFBRSxNQUFNLEVDeER4QixDQUFPLENBRUUsR0FBVyxHRHNEbUI7O0FBQy9ELEFBQUEsa0NBQWtDLENBQUM7RUFFakMsTUFBTSxFQUFFLE9BQVEsR0FDakI7O0FBQ0QsQUFBQSxrQ0FBa0MsQ0FBQztFQUVqQyxNQUFNLEVBQUUsT0FBUSxHQUNqQiIsIm5hbWVzIjpbXX0= */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.article h3 {
  margin-top: 8px;
  margin-bottom: 8px;
  font-size: 16px;
  color: #2d6ec6; }

.article a {
  color: #2d6ec6; }

.article a:hover,
.article a:focus {
  color: #0045a4; }

.article section + section {
  margin-top: 2em; }

.article__news-title {
  font-size: 24px !important;
  color: #000 !important; }

.figcaption {font-size: 0.9em;}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2FydGljbGUuc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2FydGljbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy5hcnRpY2xlIHtcbiAgaDEge1xuICAgIG1hcmdpbjogcigxKSBuKCk7XG4gICAgdGV4dDogMTZweCAkYmx1ZTtcbiAgfVxuXG4gIGEgeyBAaW5jbHVkZSBzY3V0LWNvbG9yLXN3YXAoJGJsdWUsICRibHVlLWRhcmspOyB9XG5cbiAgc2VjdGlvbiArIHNlY3Rpb24geyBtYXJnaW4tdG9wOiAyZW07IH1cbn1cbi5hcnRpY2xlX19uZXdzLXRpdGxlIHtcbiAgdGV4dDogMjRweCAjMDAwICFpbXBvcnRhbnQ7XG59IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiQThDQUE7Ozs7O0VBS0U7QTlDTXNCLEFBQ3RCLFFBRDhCLENBQzlCLEVBQUUsQ0FBQztFQUNELE1BQU0sRUNWdUIsR0FBVyxDQUZwQixDQUFPO0VEYTNCLElBQUksRUFBRSxJQUFJLENrRVNQLE9BQU8sR2xFUlg7O0FBSnFCLEFBTXRCLFFBTjhCLENBTTlCLENBQUMsQ0FBQztFOEN1T0EsS0FBSyxFb0JqT0YsT0FBTyxHbEVOdUM7RUFON0IsQUFNdEIsUUFOOEIsQ0FNOUIsQ0FBQyxBOENpUEEsTUFBTSxFOUN2UGUsQUFNdEIsUUFOOEIsQ0FNOUIsQ0FBQyxBOENrUEEsTUFBTSxDQUFDO0lBYUosS0FBSyxFb0J4UEMsT0FBRyxHcEIwUFo7O0E5Q3ZRcUIsQUFRWixRQVJvQixDQVE5QixPQUFPLEdBQUcsT0FBTyxDQUFDO0VBQUUsVUFBVSxFQUFFLEdBQUksR0FBSTs7QUFFMUMsQUFBQSxvQkFBb0IsQ0FBQztFQUNuQixJQUFJLEVBQUUsb0JBQXFCLEdBQzVCIiwibmFtZXMiOltdfQ== */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.album-list {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.album-list:after {
  content: '';
  display: block;
  clear: both; }

.album-list__cell {
  margin-bottom: 16px;
  width: 48.50746%;
  float: left; }

.album-list__cell:nth-child(2n + 1) {
  margin-left: 0;
  margin-right: -100%;
  clear: both;
  margin-left: 0; }

.album-list__cell:nth-child(2n + 2) {
  margin-left: 51.49254%;
  margin-right: -100%;
  clear: none; }

@media (min-width: 768px) {
  .album-list__cell {
    width: 32.0197%;
    float: left; }

  .album-list__cell:nth-child(3n + 1) {
    margin-left: 0;
    margin-right: -100%;
    clear: both;
    margin-left: 0; }

  .album-list__cell:nth-child(3n + 2) {
    margin-left: 33.99015%;
    margin-right: -100%;
    clear: none; }

  .album-list__cell:nth-child(3n + 3) {
    margin-left: 67.9803%;
    margin-right: -100%;
    clear: none; } }
@media (min-width: 1200px) {
  .album-list__cell {
    width: 23.55072%;
    float: left; }

  .album-list__cell:nth-child(4n + 1) {
    margin-left: 0.72464%;
    margin-right: -100%;
    clear: both; }

  .album-list__cell:nth-child(4n + 2) {
    margin-left: 25.72464%;
    margin-right: -100%;
    clear: none; }

  .album-list__cell:nth-child(4n + 3) {
    margin-left: 50.72464%;
    margin-right: -100%;
    clear: none; }

  .album-list__cell:nth-child(4n + 4) {
    margin-left: 75.72464%;
    margin-right: -100%;
    clear: none; } }
.album-list__link {
  display: block; }

.album-list__link .image {
  width: 100%;
  height: auto;
  border: 1px solid #333333; }

.album-list__link .text {
  text-align: center; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2FsYnVtLWxpc3Quc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL2NvbXBvbmVudHMvX2FsYnVtLWxpc3Quc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy5hbGJ1bS1saXN0IHtcbiAgQGV4dGVuZCAlc2N1dC1saXN0LXVuc3R5bGVkO1xuICBjbGVhcjogZml4O1xufVxuLmFsYnVtLWxpc3RfX2NlbGwge1xuICBtYXJnaW4tYm90dG9tOiByKDIpO1xuICBAaW5jbHVkZSBnYWxsZXJ5KDEgb2YgMiAoMTMwcHggcigxKSkpO1xuXG4gIEBpbmNsdWRlIHN1c3koJHRhYmxldCkge1xuICAgIEBpbmNsdWRlIGdhbGxlcnkoMSBvZiAzICgxMzBweCByKDEpKSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5KCRkZXNrdG9wKSB7XG4gICAgQGluY2x1ZGUgZ2FsbGVyeSgxIG9mIDQgKDEzMHB4IHIoMSkpKTtcbiAgfVxufVxuLmFsYnVtLWxpc3RfX2xpbmsge1xuICBkaXNwbGF5OiBibG9jaztcbiAgXG4gIC5pbWFnZSB7XG4gICAgc2l6ZTogMTAwJSBhdXRvO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LWRhcms7XG4gIH1cblxuICAudGV4dCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIFxuICB9XG59IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiQThDQUE7Ozs7O0VBS0U7QTlDTXNCLEE4Q3VCeEIsVzlDdkJtQyxDOEN1QmY7RUFWbEIsZUFBZSxFQUFFLElBQUs7RUFDdEIsWUFBWSxFQUFFLENBQUU7RUFHZCxVQUFVLEVBQUUsQ0FBRTtFQUNkLGFBQWEsRUFBRSxDQUFFLEdBT3BCOztBOUN6QnVCLEFBQUEsV0FBVyxDQUFDO0VBRWxDLEtBQUssRUFBRSxHQUFJLEdBQ1o7O0FBQ0QsQUFBQSxpQkFBaUIsQ0FBQztFQUNoQixhQUFhLEVDYmtCLElBQVc7RWdCZ0J4QyxLQUFRLEVvQndJRSxTQUFVO0VwQnhJcEIsS0FBUSxFSUFnRCxJQUFJLEdyQk8vRDtFQVhELEFBQUEsaUJBQWlCLEF3Q2tEWixVQUFXLENBQUEsTUFBTSxFQUFsQjtJdkI5Q0EsV0FBUSxFc0J3RFEsQ0FBQztJdEJ4RGpCLFlBQVEsRXVCb0RpQixLQUFJO0l2QnBEN0IsS0FBUSxFd0JaYyxJQUFJO0l4QlkxQixXQUFRLEVXZ0JzQixDQUFDLEdZd0Q5QjtFeEM1RUwsQUFBQSxpQkFBaUIsQXdDa0RaLFVBQVcsQ0FBQSxNQUFNLEVBQWxCO0l2QjlDQSxXQUFRLEVvQndJRSxTQUFVO0lwQnhJcEIsWUFBUSxFdUJvRGlCLEtBQUk7SXZCcEQ3QixLQUFRLEV3QkpjLElBQUksR0Q0RXpCO0VLekNELE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztJN0NuQ3JCLEFBQUEsaUJBQWlCLENBQUM7TWlCSWQsS0FBUSxFb0J3SUUsUUFBVTtNcEJ4SXBCLEtBQVEsRUlBZ0QsSUFBSSxHckJPL0Q7TUFYRCxBQUFBLGlCQUFpQixBd0NrRFosVUFBVyxDQUFBLE1BQU0sRUFBbEI7UXZCOUNBLFdBQVEsRXNCd0RRLENBQUM7UXRCeERqQixZQUFRLEV1Qm9EaUIsS0FBSTtRdkJwRDdCLEtBQVEsRXdCWmMsSUFBSTtReEJZMUIsV0FBUSxFV2dCc0IsQ0FBQyxHWXdEOUI7TXhDNUVMLEFBQUEsaUJBQWlCLEF3Q2tEWixVQUFXLENBQUEsTUFBTSxFQUFsQjtRdkI5Q0EsV0FBUSxFb0J3SUUsU0FBVTtRcEJ4SXBCLFlBQVEsRXVCb0RpQixLQUFJO1F2QnBEN0IsS0FBUSxFd0JKYyxJQUFJLEdENEV6QjtNeEM1RUwsQUFBQSxpQkFBaUIsQXdDa0RaLFVBQVcsQ0FBQSxNQUFNLEVBQWxCO1F2QjlDQSxXQUFRLEVvQndJRSxRQUFVO1FwQnhJcEIsWUFBUSxFdUJvRGlCLEtBQUk7UXZCcEQ3QixLQUFRLEV3QkpjLElBQUksR0Q0RXpCO0VLekNELE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtJN0NuQ3RCLEFBQUEsaUJBQWlCLENBQUM7TWlCSWQsS0FBUSxFb0J3SUUsU0FBVTtNcEJ4SXBCLEtBQVEsRUlBZ0QsSUFBSSxHckJPL0Q7TUFYRCxBQUFBLGlCQUFpQixBd0NrRFosVUFBVyxDQUFBLE1BQU0sRUFBbEI7UXZCOUNBLFdBQVEsRXFCcUZFLFFBQVE7UXJCckZsQixZQUFRLEV1Qm9EaUIsS0FBSTtRdkJwRDdCLEtBQVEsRXdCWmMsSUFBSSxHRG9GekI7TXhDNUVMLEFBQUEsaUJBQWlCLEF3Q2tEWixVQUFXLENBQUEsTUFBTSxFQUFsQjtRdkI5Q0EsV0FBUSxFc0JxRG9DLFNBQU07UXRCckRsRCxZQUFRLEV1Qm9EaUIsS0FBSTtRdkJwRDdCLEtBQVEsRXdCSmMsSUFBSSxHRDRFekI7TXhDNUVMLEFBQUEsaUJBQWlCLEF3Q2tEWixVQUFXLENBQUEsTUFBTSxFQUFsQjtRdkI5Q0EsV0FBUSxFc0JxRG9DLFNBQU07UXRCckRsRCxZQUFRLEV1Qm9EaUIsS0FBSTtRdkJwRDdCLEtBQVEsRXdCSmMsSUFBSSxHRDRFekI7TXhDNUVMLEFBQUEsaUJBQWlCLEF3Q2tEWixVQUFXLENBQUEsTUFBTSxFQUFsQjtRdkI5Q0EsV0FBUSxFc0JxRG9DLFNBQU07UXRCckRsRCxZQUFRLEV1Qm9EaUIsS0FBSTtRdkJwRDdCLEtBQVEsRXdCSmMsSUFBSSxHRDRFekI7O0F4Q2hFTCxBQUFBLGlCQUFpQixDQUFDO0VBQ2hCLE9BQU8sRUFBRSxLQUFNLEdBV2hCO0VBWkQsQUFHRSxpQkFIZSxDQUdmLE1BQU0sQ0FBQztJQUNMLElBQUksRUFBRSxTQUFVO0lBQ2hCLE1BQU0sRUFBRSxHQUFHLENBQUMsS0FBSyxDbUR4QlgsT0FBRyxHbkR5QlY7RUFOSCxBQVFFLGlCQVJlLENBUWYsS0FBSyxDQUFDO0lBQ0osVUFBVSxFQUFFLE1BQU8sR0FFcEIiLCJuYW1lcyI6W119 */
/*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.news-carousel,
.home-page-news__list {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.news-carousel {
  display: none;
  margin-top: -35px;
  margin-bottom: 8px;
  height: 27px;
  overflow: hidden;
  font-size: 18px; }

@media (min-width: 768px) {
  .news-carousel {
    display: block; 
    margin-left: 23px; } }
.news-carousel__link {
  color: #2d6ec6; }

@media (min-width: 1200px) {
  .home-page-sections {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-flow: row wrap;
    flex-flow: row wrap;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between; } }
@media (min-width: 1200px) {
  .home-page-section {
    width: 100%;
    margin-bottom: 8px; }

  .home-page-section.home-page-slider {
    width: 66.66667%;
    padding-right: 8px; }

  .home-page-section.home-page-news {
    width: 33.33333%; } }
.home-page-news {
  display: none;
  background-color: #e9e9e9; }

@media (min-width: 1200px) {
  .home-page-news {
    display: block; } }
.home-page-news__date {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  padding-right: 8px;
  padding-left: 8px;
  color: #fff;
  font-size: 15px;
  height: 43px;
  background-color: #7d7d7d; }

.home-page-news__heading {
  padding: 8px;
  margin: 0;
  color: #2d6ec6;
  font-size: 18px;
  fill: currentColor; }

.home-page-news__heading .icon {
  width: 27px;
  height: 27px; }

.home-page-news__heading .text {
  display: inline; }

.home-page-news__list {
  padding-right: 8px;
  padding-bottom: 8px;
  padding-left: 8px; }

.home-page-news__list li + li {
  margin-top: 8px; }

.home-page-news-tab {
  border: 1px solid #3e403e;
  border-bottom-width: 2px; }

.home-page-news-tab__tabs {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: distribute;
  justify-content: space-around;
  padding-right: 24px;
  padding-left: 24px;
  border-bottom: 2px solid #3e403e; }

.home-page-news-tab__tab {
  padding: 8px;
  font-size: 18px; }

.home-page-news-tab__tab.active {
  color: #fff;
  background-color: #3e403e;
  position: relative;
  overflow: visible; }

.home-page-news-tab__content {
  display: none; }

.home-page-news-tab__content.active {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  position: relative; }

.home-page-news-tab__content .more-button {
  display: inline-block;
  padding-right: 16px;
  padding-left: 8px;
  right: 8px;
  bottom: 8px;
  position: absolute;
  font-weight: 700;
  color: #fff;
  background-color: #7d7d7d;
  border-radius: 3px; }

.home-page-news-tab__content .more-button::before {
  content: "\25B8";
  font-size: 20px;
  line-height: 1;
  top: -1px;
  right: 4px;
  position: absolute; }

.home-page-news-tab__content .thumbnail {
  border-right: 1px solid #3e403e; }

.home-page-news-tab__content .list-wrapper {
  -webkit-box-flex: 1;
  -ms-flex: 1 0 auto;
  flex: 1 0 auto;
  padding-bottom: 40px; }

.home-page-news-tab__content .list {
  padding-right: 8px; }

.home-page-news-tab__content .list__heading {
  font-size: 18px; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3BhZ2VzL19ob21lLXBhZ2Uuc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3BhZ2VzL19ob21lLXBhZ2Uuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy5uZXdzLWNhcm91c2VsIHtcbiAgJHNpemU6IDE4cHg7XG4gIEBleHRlbmQgJXNjdXQtbGlzdC11bnN0eWxlZDtcbiAgZGlzcGxheTogbm9uZTtcbiAgbWFyZ2luOiAoLSRzaXplICogMS41IC0gcigxKSkgbigpIHIoMSk7XG4gIGhlaWdodDogJHNpemUgKiAxLjU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGZvbnQtc2l6ZTogJHNpemU7XG4gIEBpbmNsdWRlIHN1c3koJHRhYmxldCkge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG4ubmV3cy1jYXJvdXNlbF9fbGluayB7IGNvbG9yOiAkYmx1ZTsgfVxuXG4uaG9tZS1wYWdlLXNlY3Rpb25zIHtcbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiByb3cgd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cbn1cbi5ob21lLXBhZ2Utc2VjdGlvbiB7XG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiByKDEpO1xuXG4gICAgJi5ob21lLXBhZ2Utc2xpZGVyIHtcbiAgICAgIHdpZHRoOiBzcGFuKDggb2YgMTIgMCk7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiByKDEpO1xuICAgIH1cbiAgICAmLmhvbWUtcGFnZS1uZXdzIHsgd2lkdGg6IHNwYW4oNCBvZiAxMiAwKTsgfVxuICB9XG59XG5cbi5ob21lLXBhZ2UtbmV3cyB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWdyYXk7XG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHsgZGlzcGxheTogYmxvY2s7IH1cbn1cbi5ob21lLXBhZ2UtbmV3c19fZGF0ZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogbigpIHIoMSk7XG4gIHRleHQ6ICNmZmYgMTVweDtcbiAgaGVpZ2h0OiA0M3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTI1LCAxMjUsIDEyNSk7XG59XG4uaG9tZS1wYWdlLW5ld3NfX2hlYWRpbmcge1xuICBwYWRkaW5nOiByKDEpO1xuICBtYXJnaW46IDA7XG4gIHRleHQ6ICRibHVlIDE4cHg7XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcblxuICAuaWNvbiB7IHNpemU6IDI3cHg7IH1cbiAgLnRleHQgeyBkaXNwbGF5OiBpbmxpbmU7IH1cbn1cbi5ob21lLXBhZ2UtbmV3c19fbGlzdCB7XG4gIEBleHRlbmQgJXNjdXQtbGlzdC11bnN0eWxlZDtcbiAgcGFkZGluZzogbigpIHIoMSkgcigxKTtcbiAgbGkgKyBsaSB7IG1hcmdpbi10b3A6IHIoMSk7IH1cbn1cblxuLmhvbWUtcGFnZS1uZXdzLXRhYiB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMzZTQwM2U7XG4gIGJvcmRlci1ib3R0b20td2lkdGg6IDJweDtcbn1cbi5ob21lLXBhZ2UtbmV3cy10YWJfX3RhYnMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgcGFkZGluZzogbigpIHIoMyk7XG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjM2U0MDNlO1xufVxuLmhvbWUtcGFnZS1uZXdzLXRhYl9fdGFiIHtcbiAgcGFkZGluZzogcigxKTtcbiAgdGV4dDogMThweDtcbiAgJi5hY3RpdmUge1xuICAgIGNvbG9yOiAjZmZmICMzZTQwM2U7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICB9XG59XG4uaG9tZS1wYWdlLW5ld3MtdGFiX19jb250ZW50IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgJi5hY3RpdmUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIC5tb3JlLWJ1dHRvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IG4oKSByKDIpIG4oKSByKDEpO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSBuKCkgcigxKSByKDEpIG4oKTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogI2ZmZiByZ2IoMTI1LCAxMjUsIDEyNSk7XG4gICAgYm9yZGVyLXJhZGl1czogJGdsb2JhbC1yYWRpdXM7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRzY3V0LXJzdHJpO1xuICAgICAgdGV4dDogMjBweCAxO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlIC0xcHggciguNSkgbigpIG4oKTtcbiAgICB9XG4gIH1cbiAgLnRodW1ibmFpbCB7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkICMzZTQwM2U7IH1cbiAgLmxpc3Qtd3JhcHBlciB7XG4gICAgZmxleDogMSAwIGF1dG87XG4gICAgcGFkZGluZy1ib3R0b206IHIoNSk7XG4gIH1cbiAgLmxpc3QgeyBwYWRkaW5nLXJpZ2h0OiByKDEpOyB9XG4gIC5saXN0X19oZWFkaW5nIHsgZm9udC1zaXplOiAxOHB4OyB9XG59IiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiO0E4Q0FBOzs7OztFQUtFO0E5Q01zQixBOEN1QnhCLGM5Q3ZCc0MsRUF5RHRDLEE4Q2xDQSxxQjlDa0NxQixDOENsQ0Q7RUFWbEIsZUFBZSxFQUFFLElBQUs7RUFDdEIsWUFBWSxFQUFFLENBQUU7RUFHZCxVQUFVLEVBQUUsQ0FBRTtFQUNkLGFBQWEsRUFBRSxDQUFFLEdBT3BCOztBOUN6QnVCLEFBQUEsY0FBYyxDQUFDO0VBR3JDLE9BQU8sRUFBRSxJQUFLO0VBQ2QsTUFBTSxFQUFHLEtBQUMsQ0NkWSxDQUFPLENBRUUsR0FBVztFRGExQyxNQUFNLEVBQUUsSUFBSztFQUNiLFFBQVEsRUFBRSxNQUFPO0VBQ2pCLFNBQVMsRUFORixJQUFJLEdBVVo7RTZDNEJHLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztJN0N2Q0csQUFBQSxjQUFjLENBQUM7TUFTbkMsT0FBTyxFQUFFLEtBQU0sR0FFbEI7O0FBQ0QsQUFBQSxvQkFBb0IsQ0FBQztFQUFFLEtBQUssRWtFQXJCLE9BQU8sR2xFQXlCOztBNkMyQm5DLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtFN0N6QnRCLEFBQUEsbUJBQW1CLENBQUM7SUFFaEIsT0FBTyxFQUFFLElBQUs7SUFDZCxTQUFTLEVBQUUsUUFBUztJQUNwQixlQUFlLEVBQUUsYUFBYyxHQUVsQzs7QTZDbUJHLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtFN0NsQnRCLEFBQUEsa0JBQWtCLENBQUM7SUFFZixLQUFLLEVBQUUsSUFBSztJQUNaLGFBQWEsRUNoQ2dCLEdBQVcsR0R3QzNDO0lBWEQsQUFBQSxrQkFBa0IsQUFLYixpQkFBaUIsQ0FBQztNQUNqQixLQUFLLEVxQ3FIRyxTQUFVO01yQ3BIbEIsYUFBYSxFQ3BDYyxHQUFXLEdEcUN2QztJQVJMLEFBQUEsa0JBQWtCLEFBU2IsZUFBZSxDQUFDO01BQUUsS0FBSyxFcUNrSGQsU0FBVSxHckNsSHlCOztBQUlqRCxBQUFBLGVBQWUsQ0FBQztFQUNkLE9BQU8sRUFBRSxJQUFLO0VBQ2QsZ0JBQWdCLEVrRUpBLE9BQU8sR2xFTXhCO0U2Q0NHLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtJN0NMdEIsQUFBQSxlQUFlLENBQUM7TUFHWSxPQUFPLEVBQUUsS0FBTSxHQUMxQzs7QUFDRCxBQUFBLHFCQUFxQixDQUFDO0VBQ3BCLE9BQU8sRUFBRSxJQUFLO0VBQ2QsZUFBZSxFQUFFLGFBQWM7RUFDL0IsV0FBVyxFQUFFLE1BQU87RUFDcEIsT0FBTyxFQ3JEZSxDQUFPLENBRUUsR0FBVztFRG9EMUMsSUFBSSxFQUFFLFNBQVU7RUFDaEIsTUFBTSxFQUFFLElBQUs7RUFDYixnQkFBZ0IsRUFBRSxPQUFHLEdBQ3RCOztBQUNELEFBQUEsd0JBQXdCLENBQUM7RUFDdkIsT0FBTyxFQ3pEd0IsR0FBVztFRDBEMUMsTUFBTSxFQUFFLENBQUU7RUFDVixJQUFJLEVrRXZDQyxPQUFPLENsRXVDQSxJQUFJO0VBQ2hCLElBQUksRUFBRSxZQUFhLEdBSXBCO0VBUkQsQUFNRSx3QkFOc0IsQ0FNdEIsS0FBSyxDQUFDO0lBQUUsSUFBSSxFQUFFLElBQUssR0FBSTtFQU56QixBQU9FLHdCQVBzQixDQU90QixLQUFLLENBQUM7SUFBRSxPQUFPLEVBQUUsTUFBTyxHQUFJOztBQUU5QixBQUFBLHFCQUFxQixDQUFDO0VBRXBCLE9BQU8sRUNyRWUsQ0FBTyxDQUVFLEdBQVcsQ0FBWCxHQUFXLEdEcUUzQztFQUpELEFBR08scUJBSGMsQ0FHbkIsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUFFLFVBQVUsRUNwRVcsR0FBVyxHRG9FWjs7QUFHaEMsQUFBQSxtQkFBbUIsQ0FBQztFQUNsQixNQUFNLEVBQUUsaUJBQWtCO0VBQzFCLG1CQUFtQixFQUFFLEdBQUksR0FDMUI7O0FBQ0QsQUFBQSx5QkFBeUIsQ0FBQztFQUN4QixPQUFPLEVBQUUsSUFBSztFQUNkLGVBQWUsRUFBRSxZQUFhO0VBQzlCLE9BQU8sRUNoRmUsQ0FBTyxDQUVFLElBQVc7RUQrRTFDLGFBQWEsRUFBRSxpQkFBa0IsR0FDbEM7O0FBQ0QsQUFBQSx3QkFBd0IsQ0FBQztFQUN2QixPQUFPLEVDbEZ3QixHQUFXO0VEbUYxQyxJQUFJLEVBQUUsSUFBSyxHQU1aO0VBUkQsQUFBQSx3QkFBd0IsQUFHckIsT0FBTyxDQUFDO0lBQ1AsS0FBSyxFQUFFLFlBQWE7SUFDcEIsUUFBUSxFQUFFLFFBQVM7SUFDbkIsUUFBUSxFQUFFLE9BQVEsR0FDbkI7O0FBRUgsQUFBQSw0QkFBNEIsQ0FBQztFQUMzQixPQUFPLEVBQUUsSUFBSyxHQTJCZjtFQTVCRCxBQUFBLDRCQUE0QixBQUV6QixPQUFPLENBQUM7SUFDUCxPQUFPLEVBQUUsSUFBSztJQUNkLGVBQWUsRUFBRSxhQUFjO0lBQy9CLFFBQVEsRUFBRSxRQUFTLEdBQ3BCO0VBTkgsQUFRRSw0QkFSMEIsQ0FRMUIsWUFBWSxDQUFDO0lBQ1gsT0FBTyxFQUFFLFlBQWE7SUFDdEIsT0FBTyxFQ3RHYSxDQUFPLENBRUUsSUFBVyxDQUZwQixDQUFPLENBRUUsR0FBVztJRHFHeEMsUUFBUSxFQUFFLFFBQVEsQ0N2R0UsQ0FBTyxDQUVFLEdBQVcsQ0FBWCxHQUFXLENBRnBCLENBQU87SUR3RzNCLFdBQVcsRUFBRSxJQUFLO0lBQ2xCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBRztJQUNmLGFBQWEsRWdFNUZELEdBQUcsR2hFa0doQjtJQXBCSCxBQVFFLDRCQVIwQixDQVExQixZQUFZLEFBT1QsUUFBUSxDQUFDO01BQ1IsT0FBTyxFOEM4bkNBLEtBQU87TTlDN25DZCxJQUFJLEVBQUUsTUFBTztNQUNiLFFBQVEsRUFBRSxRQUFRLENBQUUsSUFBRyxDQzVHSSxHQUFXLENBRnBCLENBQU8sQ0FBUCxDQUFPLEdEK0cxQjtFQW5CTCxBQXFCRSw0QkFyQjBCLENBcUIxQixVQUFVLENBQUM7SUFBRSxZQUFZLEVBQUUsaUJBQWtCLEdBQUk7RUFyQm5ELEFBc0JFLDRCQXRCMEIsQ0FzQjFCLGFBQWEsQ0FBQztJQUNaLElBQUksRUFBRSxRQUFTO0lBQ2YsY0FBYyxFQ2xIZSxJQUFXLEdEbUh6QztFQXpCSCxBQTBCRSw0QkExQjBCLENBMEIxQixLQUFLLENBQUM7SUFBRSxhQUFhLEVDcEhVLEdBQVcsR0RvSFg7RUExQmpDLEFBMkJFLDRCQTNCMEIsQ0EyQjFCLGNBQWMsQ0FBQztJQUFFLFNBQVMsRUFBRSxJQUFLLEdBQUkiLCJuYW1lcyI6W119 */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.news-list {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.news-list-hero {
  padding-bottom: 8px;
  border-bottom: 1px solid #e4e4e4; }

@media (min-width: 1200px) {
  .news-list-hero {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between; } }
@media (min-width: 1200px) {
  .news-list-hero__feature {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-flow: column nowrap;
    flex-flow: column nowrap;
    -webkit-box-flex: 1;
    -ms-flex: 1;
    flex: 1;
    height: 222.42px; }

  .news-list-hero__feature .post-preview {
    -webkit-box-flex: 1;
    -ms-flex: 1;
    flex: 1; } }
.news-list-hero__hot-news {
  display: none; }

@media (min-width: 768px) {
  .news-list-hero__hot-news { display: block; margin-left: 8px; }
  .news-list .post-preview__publish-time { -ms-flex-order: -2; order: -2 } }
@media (min-width: 1200px) {
  .news-list .post-preview__reporter {
    display: inline-block;
    margin-right: 16px; }
  .news-list .post-preview__publish-time { display: inline-block; -webkit-box-ordinal-group: -1; }
  .news-list .post-preview__count {
    display: inline-block;
    -webkit-box-ordinal-group: 0;
    -ms-flex-order: -1;
    order: -1; } }

.news-list__cell {
  padding: 8px 0; }

.news-list__cell + .news-list__cell {
  border-top: 1px solid #e4e4e4; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3BhZ2VzL19uZXdzLWxpc3Quc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3BhZ2VzL19uZXdzLWxpc3Quc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy5uZXdzLWxpc3QtaGVybyB7XG4gIHBhZGRpbmctYm90dG9tOiByKDEpO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGlucHV0LWJvcmRlcjtcbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG59XG4ubmV3cy1saXN0LWhlcm9fX2ZlYXR1cmUge1xuICBAaW5jbHVkZSBzdXN5KCRkZXNrdG9wKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgZmxleDogMTtcblxuICAgIC5wb3N0LXByZXZpZXcgeyBmbGV4OiAxOyB9XG4gIH1cbn1cbi5uZXdzLWxpc3QtaGVyb19faG90LW5ld3Mge1xuICBkaXNwbGF5OiBub25lOyAgXG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tbGVmdDogcigxKTtcbiAgICB3aWR0aDogMjYwcHg7XG4gIH1cbn1cblxuLm5ld3MtbGlzdCB7XG4gIEBleHRlbmQgJXNjdXQtbGlzdC11bnN0eWxlZDtcbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkge1xuICAgIC5wb3N0LXByZXZpZXdfX3JlcG9ydGVyIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG1hcmdpbi1yaWdodDogcigyKTtcbiAgICB9XG4gICAgLnBvc3QtcHJldmlld19fcHVibGlzaC10aW1lIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIG9yZGVyOiAtMjtcbiAgICB9XG4gICAgLnBvc3QtcHJldmlld19fY291bnQge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgb3JkZXI6IC0xO1xuICAgIH1cbiAgfVxufVxuLm5ld3MtbGlzdF9fY2VsbCB7XG4gIHBhZGRpbmc6IHIoMSkgMDtcbiAgJiArICYgeyBib3JkZXItdG9wOiAxcHggc29saWQgJGlucHV0LWJvcmRlcjsgfVxufVxuIiwiLy8ge3tTYXNzIG1peGlucyAtLS0tLS0tLX19XG5AZnVuY3Rpb24gbigpIHsgQHJldHVybiB1bnF1b3RlKFwiKlwiKTsgfVxuXG5AZnVuY3Rpb24gcigkdGltZXM6IDEpIHsgQHJldHVybiAkcmh5dGhtLWdhcCAqICR0aW1lczsgfVxuXG5AbWl4aW4gc3VzeSgkbWFwKSB7XG4gIEBpbmNsdWRlIHN1c3ktYnJlYWtwb2ludChtYXAtZ2V0KCRtYXAsIHF1ZXJ5KSwgbWFwLWdldCgkbWFwLCBsYXlvdXQpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIHJldmVyc2UtaGlkZS12aXN1YWxseSgpIHtcbiAgYm9yZGVyOiAwO1xuICBjbGlwOiBhdXRvO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogc3RhdGljO1xuICBoZWlnaHQ6IGF1dG87XG4gIHdpZHRoOiBhdXRvO1xufVxuXG5AbWl4aW4gc2hhcmUtYnJlYWtwb2ludHMoJG1hcCwgJGNzc3Byb3A6IGNvbnRlbnQpIHtcbiAgJGRlc2NyaXB0aW9uOiAnJztcblxuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICBAaWYgJGRlc2NyaXB0aW9uICE9ICAnJyB7XG4gICAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICcgfCAnO1xuICAgIH1cbiAgICBcbiAgICAkZGVzY3JpcHRpb246ICRkZXNjcmlwdGlvbiArICRwcm9wZXJ0eSArJzogJysgaW5zcGVjdCgkdmFsdWUpO1xuICB9XG5cbiAgZGlzcGxheTogbm9uZTtcbiAgI3skY3NzcHJvcH06ICAkZGVzY3JpcHRpb247XG59XG5cbkBtaXhpbiB0b2dnbGUtZmFkZSgpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgfVxufVxuXG5AbWl4aW4gdG9nZ2xlLXNob3coKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIGhlaWdodDogMDtcbiAgJi5hY3RpdmUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH0gIFxufVxuXG5AbWl4aW4gc2hvdygpIHtcbiAgb3BhY2l0eTogMTtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIGhlaWdodDogYXV0bzsgIFxufVxuXG5AbWl4aW4gaW5wdXQtcGxhY2Vob2xkZXIoKSB7XG4gICY6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIsIFxuICAmOjotbW96LXBsYWNlaG9sZGVyLFxuICAmOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG5cbkBtaXhpbiBkZWJ1ZygkY29sb3I6ICNmZmYgcmdiYSh0b21hdG8sIC4zKSkge1xuICBjb2xvcjogJGNvbG9yXG59XG5cbkBtaXhpbiBsaXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSkge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKTtcbiAgPiBsaSArIGxpOmJlZm9yZSB7IG1hcmdpbi1sZWZ0OiAkc3BhY2UgKyA0cHg7IH1cbn1cbiIsIkBtaXhpbiBIaWRkZW4ge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuQG1peGluIFNlbGVjdCB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIHBhZGRpbmc6IDAgcigyKSAwIHIoMSk7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIC8vIGhlaWdodDogJGlucHV0LWhlaWdodDtcbiAgLy8gYm9yZGVyOiAxcHggc29saWQgJGlucHV0LWJvcmRlci1jb2xvcjtcbiAgLy8gYmFja2dyb3VuZDogdXJsKFwiaW1hZ2VzL2Fycm93LWRvd24uc3ZnXCIpXG4gIC8vICAgICAgICAgICA5MiUgNTAlIC8gOHB4IDEwcHhcbiAgLy8gICAgICAgICAgIG5vLXJlcGVhdFxuICAvLyAgICAgICAgICAgdHJhbnNwYXJlbnQ7XG4gIC5uby1jc3MtYXBwZWFyYW5jZSAmIHtcbiAgICBAaW5jbHVkZSBzY3V0LXBhZGRpbmcobiAwKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG59XG5cbkBtaXhpbiBOb3JtYWxpemUoKSB7XG4gIGFwcGVhcmFuY2U6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZSB0cmFuc3BhcmVudDtcbiAgcGFkZGluZzogMDtcbn0iLCIvLyBTdXN5XG4vLyA9PT09XG5cbkBpbXBvcnQgJ3N1c3kvbGFuZ3VhZ2Uvc3VzeSc7XG4iLCIvLyBTdXN5IE5leHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbiRzdXN5LXZlcnNpb246IDIuMTtcblxuQGltcG9ydCBcIi4uL3N1XCI7XG5AaW1wb3J0IFwiLi4vb3V0cHV0L2Zsb2F0XCI7XG5cbkBpbXBvcnQgXCJzdXN5L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3VzeS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3VzeS9ncmlkc1wiO1xuQGltcG9ydCBcInN1c3kvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1c3kvY29udGV4dFwiO1xuQGltcG9ydCBcInN1c3kvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1c3kvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic3VzeS9zcGFuXCI7XG5AaW1wb3J0IFwic3VzeS9ndXR0ZXJzXCI7XG5AaW1wb3J0IFwic3VzeS9pc29sYXRlXCI7XG5AaW1wb3J0IFwic3VzeS9nYWxsZXJ5XCI7XG5AaW1wb3J0IFwic3VzeS9yb3dzXCI7XG5AaW1wb3J0IFwic3VzeS9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic3VzeS9wYWRkaW5nXCI7XG5AaW1wb3J0IFwic3VzeS9ibGVlZFwiO1xuQGltcG9ydCBcInN1c3kvYnJlYWtwb2ludC1wbHVnaW5cIjtcbiIsIi8vIFN1XG4vLyA9PVxuXG5AaW1wb3J0IFwic3UvdXRpbGl0aWVzXCI7XG5AaW1wb3J0IFwic3Uvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdS92YWxpZGF0aW9uXCI7XG5AaW1wb3J0IFwic3UvZ3JpZFwiO1xuIiwiLy8gTWFwIEZ1bmN0aW9uc1xuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIFRydW5jYXRlIExpc3Rcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgbGlzdCwgdHJ1bmNhdGVkIHRvIGEgZ2l2ZW4gbGVuZ3RoXG5AZnVuY3Rpb24gX3N1c3ktdHJ1bmNhdGUtbGlzdChcbiAgJGxpc3QsXG4gICRsZW5ndGhcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGxpc3QpIHtcbiAgICAkX3JldHVybjogaWYoJGkgPD0gJGxlbmd0aCwgYXBwZW5kKCRfcmV0dXJuLCBudGgoJGxpc3QsICRpKSksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBHZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFJldHVybiBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWdldChcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogJG1hcDtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgdHlwZS1vZigkX3JldHVybikgPT0gbWFwIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtZ2V0KCRfcmV0dXJuLCAka2V5KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgU2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBTZXQgYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1zZXQoXG4gICRtYXAsXG4gICRrZXlzLXZhbHVlLi4uXG4pIHtcbiAgJF92YWx1ZTogbnRoKCRrZXlzLXZhbHVlLCAtMSk7XG4gICRfa2V5czogX3N1c3ktdHJ1bmNhdGUtbGlzdCgka2V5cy12YWx1ZSwgbGVuZ3RoKCRrZXlzLXZhbHVlKSAtIDEpO1xuICAkX2xlbmd0aDogbGVuZ3RoKCRfa2V5cyk7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRfbGVuZ3RoIHtcbiAgICAkX246IDAgLSAkaTtcbiAgICAkX2xldmVsOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRfa2V5cywgJF9sZW5ndGggKyAkX24pO1xuICAgICRfbGV2ZWw6IF9zdXN5LWRlZXAtZ2V0KCRtYXAsICRfbGV2ZWwuLi4pO1xuICAgICRfbWVyZ2U6IG50aCgkX2tleXMsICRfbik7XG4gICAgJF9tZXJnZTogKCRfbWVyZ2U6ICRfdmFsdWUpO1xuICAgICRfcmV0dXJuOiBpZigkX2xldmVsLCBtYXAtbWVyZ2UoJF9sZXZlbCwgJF9tZXJnZSksICRfbWVyZ2UpO1xuICAgICRfdmFsdWU6ICRfcmV0dXJuO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIE1lcmdlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gMiBvYmplY3RzIG9mIGFueSBkZXB0aCwgbWVyZ2VkXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1tZXJnZShcbiAgJG1hcDEsXG4gICRtYXAyXG4pIHtcblxuICBAaWYgdHlwZS1vZigkbWFwMSkgIT0gbWFwIG9yIHR5cGUtb2YoJG1hcDIpICE9IG1hcCB7XG4gICAgJG1hcDE6ICRtYXAyO1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJG1hcDIge1xuICAgICAgJF9uZXc6ICgka2V5OiBfc3VzeV9kZWVwLW1lcmdlKG1hcC1nZXQoJG1hcDEsICRrZXkpLCAkdmFsdWUpKTtcbiAgICAgICRtYXAxOiBtYXAtbWVyZ2UoJG1hcDEsICRfbmV3KTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRtYXAxO1xufVxuXG5cbi8vIERlZXAgSGFzLUtleVxuLy8gLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiB0cnVlIGlmIGEgZGVlcCBrZXkgZXhpc3RzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1oYXMta2V5KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiBudWxsO1xuICAkX3N0b3A6IGZhbHNlO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiBub3QoJF9zdG9wKSB7XG4gICAgICAkX3JldHVybjogbWFwLWhhcy1rZXkoJG1hcCwgJGtleSk7XG4gICAgfVxuXG4gICAgQGlmICRfcmV0dXJuIHtcbiAgICAgICRtYXA6IG1hcC1nZXQoJG1hcCwgJGtleSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3N0b3A6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNldHRpbmdzXG4vLyA9PT09PT09PVxuXG4vLyBWZXJzaW9uXG4vLyAtLS0tLS0tXG4kc3UtdmVyc2lvbjogMS4xO1xuXG5cbi8vIERlZmF1bHQgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFRoZSBiYXNpYyBzZXR0aW5nc1xuJHN1c3ktZGVmYXVsdHM6IChcbiAgY29sdW1uczogNCxcbiAgZ3V0dGVyczogLjI1LFxuKTtcblxuXG4vLyBVc2VyIFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIERlZmluZSB0aGUgJHN1c3kgdmFyaWFibGUgd2l0aCBhIG1hcCBvZiB5b3VyIG93biBzZXR0aW5ncy5cbi8vIC0gU2V0IEVJVEhFUiAkY29sdW1uLXdpZHRoIE9SICRjb250YWluZXJcbi8vIC0gVXNlICRjb2x1bW4td2lkdGggZm9yIHN0YXRpYyBsYXlvdXRzXG4kc3VzeTogKCkgIWRlZmF1bHQ7XG5cblxuLy8gU3VzeSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogQWRkIGRlZmF1bHRzIHRvIFN1c3lcbkBtaXhpbiBzdXN5LWRlZmF1bHRzKFxuICAkZGVmYXVsdHNcbikge1xuICAkc3VzeS1kZWZhdWx0czogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkZGVmYXVsdHMpICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBTZXRcbi8vIC0tLS0tLS0tXG4vLyBDaGFuZ2Ugb25lIHNldHRpbmdcbi8vIC0gJGtleSAgIDogc2V0dGluZyBuYW1lXG4vLyAtICR2YWx1ZSA6IHNldHRpbmcgdmFsdWVcbkBtaXhpbiBzdXN5LXNldChcbiAgJGtleS12YWx1ZS4uLlxuKSB7XG4gICRzdXN5OiBfc3VzeS1kZWVwLXNldCgkc3VzeSwgJGtleS12YWx1ZS4uLikgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IEdldFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybiBvbmUgc2V0dGluZyBmcm9tIGEgZ3JpZFxuLy8gLSAka2V5ICAgICA6IDxrZXl3b3JkPlxuLy8gLSAkbGF5b3V0ICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBzdXN5LWdldChcbiAgJGtleSxcbiAgJGxheW91dDogbWFwLW1lcmdlKCRzdXN5LWRlZmF1bHRzLCAkc3VzeSlcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX29wdGlvbnM6ICRsYXlvdXQgJHN1c3kgJHN1c3ktZGVmYXVsdHM7XG4gICRfYnJlYWs6IGZhbHNlO1xuICAkX3JldHVybjogbnVsbDtcblxuICBAZWFjaCAkb3B0IGluICRfb3B0aW9ucyB7XG4gICAgQGlmIHR5cGUtb2YoJG9wdCkgPT0gbWFwIGFuZCBub3QoJF9icmVhaykge1xuICAgICAgJF9rZXlzZXQ6IF9zdXN5LWRlZXAtaGFzLWtleSgkb3B0LCAka2V5Li4uKTtcbiAgICAgIEBpZiAkX2tleXNldCB7XG4gICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLWdldCgkb3B0LCAka2V5Li4uKTtcbiAgICAgICAgJF9icmVhazogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gTWF0aCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT1cblxuXG4vLyBWYWxpZCBDb2x1bW5zXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgY29sdW1uIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1ucyhcbiAgJGNvbHVtbnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGNvbHVtbnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRjb2x1bW5zKSB7XG4gICAgJHJldHVybjogJGNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgJHR5cGUgPT0gbGlzdCB7XG4gICAgJGZhaWw6IG51bGw7XG4gICAgQGVhY2ggJGNvbCBpbiAkY29sdW1ucyB7XG4gICAgICBAaWYgdHlwZS1vZigkY29sKSA9PSBudW1iZXIge1xuICAgICAgICAkZmFpbDogJGZhaWwgb3IgaWYodW5pdGxlc3MoJGNvbCksIG51bGwsIHRydWUpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRmYWlsOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICAkcmV0dXJuOiBpZigkZmFpbCwgJHJldHVybiwgJGNvbHVtbnMpO1xuICB9XG5cbiAgQGlmICRyZXR1cm4gIT0gJGNvbHVtbnMgYW5kIG5vdCgkc2lsZW50KSB7XG4gICAgJHJldHVybjogbnVsbDtcbiAgICAkd2FybjogJyRjb2x1bW5zIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIgb3IgbGlzdCBvZiB1bml0bGVzcyBudW1iZXJzLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skY29sdW1uc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuXG5cbi8vIFZhbGlkIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBndXR0ZXIgc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1ndXR0ZXJzKFxuICAkZ3V0dGVycyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkZ3V0dGVycyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGd1dHRlcnMpIHtcbiAgICAkcmV0dXJuOiAkZ3V0dGVycztcbiAgfSBAZWxzZSBpZiBub3QoJHNpbGVudCkge1xuICAgICR3YXJuOiAnJGd1dHRlcnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlci4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGd1dHRlcnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIENvbHVtbiBtYXRoXG4vLyA9PT09PT09PT09PVxuXG5cbi8vIElzIFN5bW1ldHJpY2FsXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGEgZ3JpZCBpcyBzeW1tZXRyaWNhbC5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBpcy1zeW1tZXRyaWNhbChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlmKHR5cGUtb2YoJGNvbHVtbnMpID09IG51bWJlciwgJGNvbHVtbnMsIG51bGwpO1xufVxuXG5cbi8vIFN1c3kgQ291bnRcbi8vIC0tLS0tLS0tLS1cbi8vIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIGEgZ2l2ZW4gbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1jb3VudChcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICBAcmV0dXJuIGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSBvciBsZW5ndGgoJGNvbHVtbnMpO1xufVxuXG5cbi8vIFN1c3kgU3VtXG4vLyAtLS0tLS0tLVxuLy8gRmluZCB0aGUgdG90YWwgc3VtIG9mIGNvbHVtbi11bml0cyBpbiBhIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3ktc3VtKFxuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG5cbiAgJHNwcmVhZDogaWYoJHNwcmVhZCA9PSB3aWRlLCAwLCBpZigkc3ByZWFkID09IHdpZGVyLCAxLCAtMSkpO1xuICAkZ3V0dGVyLXN1bTogKHN1c3ktY291bnQoJGNvbHVtbnMpICsgJHNwcmVhZCkgKiAkZ3V0dGVycztcbiAgJGNvbHVtbi1zdW06IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICBAaWYgbm90KCRjb2x1bW4tc3VtKSB7XG4gICAgQGVhY2ggJGNvbHVtbiBpbiAkY29sdW1ucyB7XG4gICAgICAkY29sdW1uLXN1bTogKCRjb2x1bW4tc3VtIG9yIDApICsgJGNvbHVtbjtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4tc3VtICsgJGd1dHRlci1zdW07XG59XG5cblxuLy8gU3VzeSBTbGljZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IG9mIGNvbHVtbnMgYXQgYSBnaXZlbiBsb2NhdGlvbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LXNsaWNlKFxuICAkc3BhbixcbiAgJGxvY2F0aW9uLFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRzdWItY29sdW1uczogJHNwYW47XG5cbiAgQGlmIG5vdChpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykpIHtcbiAgICAkbG9jYXRpb246ICRsb2NhdGlvbiBvciAxO1xuICAgICRzdWItY29sdW1uczogKCk7XG4gICAgQGZvciAkaSBmcm9tICRsb2NhdGlvbiB0byAoJGxvY2F0aW9uICsgJHNwYW4pIHtcbiAgICAgICRzdWItY29sdW1uczogYXBwZW5kKCRzdWItY29sdW1ucywgbnRoKCRjb2x1bW5zLCAkaSkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHN1Yi1jb2x1bW5zO1xufVxuXG5cbi8vIFN1c3lcbi8vIC0tLS1cbi8vIEZpbmQgdGhlIHN1bSBvZiBhIGNvbHVtbi1zcGFuLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuLy8gLSBbJGd1dHRlcnNdICAgOiA8cmF0aW8+XG4vLyAtIFskc3ByZWFkXSAgICA6IGZhbHNlL25hcnJvdyB8IHdpZGUgfCB3aWRlclxuQGZ1bmN0aW9uIHN1c3koXG4gICRzcGFuLFxuICAkbG9jYXRpb24gICAgIDogZmFsc2UsXG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zKSxcbiAgJGd1dHRlcnMgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgICAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcbiAgJHNwYW46IHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xuXG4gIEByZXR1cm4gc3VzeS1zdW0oJHNwYW4sICRndXR0ZXJzLCAkc3ByZWFkKTtcbn1cbiIsIi8vIEZsb2F0IEFQSVxuLy8gPT09PT09PT09XG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuQGltcG9ydCBcImZsb2F0L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcImZsb2F0L3NwYW5cIjtcbkBpbXBvcnQgXCJmbG9hdC9lbmRcIjtcbkBpbXBvcnQgXCJmbG9hdC9pc29sYXRlXCI7XG4iLCIvLyBTaGFyZWQgQVBJXG4vLyA9PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0XCI7XG5cbkBpbXBvcnQgXCJzaGFyZWQvaW5zcGVjdFwiO1xuQGltcG9ydCBcInNoYXJlZC9vdXRwdXRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvZGlyZWN0aW9uXCI7XG5AaW1wb3J0IFwic2hhcmVkL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzaGFyZWQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwic2hhcmVkL21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzaGFyZWQvcGFkZGluZ1wiO1xuXG5cblxuIiwiLy8gU3VzeSBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbkBpbXBvcnQgXCJzdXBwb3J0L3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3ByZWZpeFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInN1cHBvcnQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcInN1cHBvcnQvcmVtXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9jbGVhcmZpeFwiO1xuIiwiLy8gQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBTdXBwb3J0IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IGZhbHNlLFxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHRydWUsXG4gICAgYmFja2dyb3VuZC1vcHRpb25zOiBmYWxzZSxcbiAgICBicmVha3BvaW50OiB0cnVlLFxuICAgIGJveC1zaXppbmc6IHRydWUsXG4gICAgcmVtOiB0cnVlLFxuICApLFxuKSk7XG5cblxuLy8gU3VzeSBTdXBwb3J0IFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZW5kIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRvIHRoZSBwcm9wZXIgc3VwcG9ydCBtb2R1bGVzLlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktc3VwcG9ydChcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAvLyBCYWNrZ3JvdW5kIFN1cHBvcnRcbiAgQGlmICRwcm9wID09IGJhY2tncm91bmQtaW1hZ2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1pbWFnZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLXNpemUge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1zaXplKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtb3JpZ2luIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtb3JpZ2luKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtY2xpcCB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWNsaXAoJHZhbCk7XG4gIH1cblxuICAvLyBCb3gtU2l6aW5nIFN1cHBvcnRcbiAgQGVsc2UgaWYgJHByb3AgPT0gYm94LXNpemluZyB7XG4gICAgQGluY2x1ZGUgc3VzeS1ib3gtc2l6aW5nKCR2YWwpO1xuICB9XG5cbiAgLy8gUmVtIFN1cHBvcnRcbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuXG5cbi8vIFN1c3kgU3VwcG9ydCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIHN1cHBvcnQgb2YgYSBmZWF0dXJlLlxuLy8gLSAkZmVhdHVyZSAgICAgICA6IDxzdHJpbmc+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgXCJyZW1cIiBvciBcImJveC1zaXppbmdcIlxuLy8gLSAkcmVxdWlyZW1lbnRzICA6IDxtYXA+XG4vLyAgICAgICAgICAgICAgICAgICAgLSBlLmcgKHZhcmlhYmxlOiByZW0td2l0aC1weC1mYWxsYmFjaywgbWl4aW46IHJlbSlcbi8vIC0gJHdhcm4gICAgICAgICAgOiA8Ym9vbD5cbkBmdW5jdGlvbiBzdXN5LXN1cHBvcnQoXG4gICRmZWF0dXJlLFxuICAkcmVxdWlyZW1lbnRzOiAoKSxcbiAgJHdhcm46IHRydWVcbikge1xuICAkX3N1cHBvcnQ6IHN1c3ktZ2V0KHVzZS1jdXN0b20gJGZlYXR1cmUpO1xuXG4gIEBpZiAkX3N1cHBvcnQge1xuICAgICRfZmFpbDogZmFsc2U7XG5cbiAgICBAZWFjaCAkX3R5cGUsICRfcmVxIGluICRyZXF1aXJlbWVudHMge1xuICAgICAgQGVhY2ggJF9pIGluICRfcmVxIHtcbiAgICAgICAgJF9wYXNzOiBjYWxsKHVucXVvdGUoXCIjeyRfdHlwZX0tZXhpc3RzXCIpLCAkX2kpO1xuXG4gICAgICAgIEBpZiBub3QoJF9wYXNzKSB7XG4gICAgICAgICAgJF9mYWlsOiB0cnVlO1xuICAgICAgICAgIEBpZiAkd2FybiB7XG4gICAgICAgICAgICBAd2FybiBcIllvdSByZXF1ZXN0ZWQgY3VzdG9tIHN1cHBvcnQgb2YgI3skZmVhdHVyZX0sIGJ1dCB0aGUgI3skX2l9ICN7JF90eXBlfSBpcyBub3QgYXZhaWxhYmxlLlwiO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfc3VwcG9ydDogaWYoJF9mYWlsLCBmYWxzZSwgJF9zdXBwb3J0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdXBwb3J0O1xufVxuIiwiLy8gU3VzeSBQcmVmaXhcbi8vID09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgc2ltcGxlIHByZWZpeGVkIHByb3BlcnRpZXMuXG4vLyAtICRwcm9wICAgICAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgICAgIDogPGNzcyB2YWx1ZT5cbi8vIC0gWyRwcmVmaXhdICA6IDxicm93c2VyIHByZWZpeCBsaXN0PlxuQG1peGluIHN1c3ktcHJlZml4KFxuICAkcHJvcCxcbiAgJHZhbCxcbiAgJHByZWZpeDogb2ZmaWNpYWxcbikge1xuICBAZWFjaCAkZml4IGluICRwcmVmaXgge1xuICAgICRmaXg6IGlmKCRmaXggPT0gb2ZmaWNpYWwgb3Igbm90KCRmaXgpLCAkcHJvcCwgJy0jeyRmaXh9LSN7JHByb3B9Jyk7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJGZpeCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIEJhY2tncm91bmQgUHJvcGVydGllc1xuLy8gPT09PT09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBJbWFnZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1pbWFnZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1pbWFnZSwgKG1peGluOiBiYWNrZ3JvdW5kLWltYWdlKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2UuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2U7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIFNpemVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtc2l6ZT5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtc2l6ZShcbiAgJHNpemVcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLXNpemUpKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRzaXplKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgT3JpZ2luXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1vcmlnaW4+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbihcbiAgJG9yaWdpblxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtb3JpZ2luKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtb3JpZ2luKCRvcmlnaW4pO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJG9yaWdpbjtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgQ2xpcFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWNsaXA+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWNsaXAoXG4gICRjbGlwXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1jbGlwKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtY2xpcCgkY2xpcCk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXA7XG4gIH1cbn1cbiIsIi8vIEJveCBTaXppbmdcbi8vID09PT09PT09PT1cblxuLy8gQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRtb2RlbDogPGJveC1zaXppbmc+XG5AbWl4aW4gc3VzeS1ib3gtc2l6aW5nKFxuICAkbW9kZWw6IGNvbnRlbnQtYm94XG4pIHtcbiAgQGlmICRtb2RlbCB7XG4gICAgQGlmIHN1c3ktc3VwcG9ydChib3gtc2l6aW5nLCAobWl4aW46IGJveC1zaXppbmcpLCAkd2FybjogZmFsc2UpIHtcbiAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoJG1vZGVsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwcmVmaXg6IChtb3osIHdlYmtpdCwgb2ZmaWNpYWwpO1xuICAgICAgQGluY2x1ZGUgc3VzeS1wcmVmaXgoYm94LXNpemluZywgJG1vZGVsLCAkcHJlZml4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIHJlbSBTdXBwb3J0XG4vLyA9PT09PT09PT09PVxuXG4vLyByZW1cbi8vIC0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIG91dHB1dCBkaXJlY3RseS5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXJlbShcbiAgJHByb3AsXG4gICR2YWxcbikge1xuICAkX3JlcXM6IChcbiAgICB2YXJpYWJsZTogcmh5dGhtLXVuaXQgcmVtLXdpdGgtcHgtZmFsbGJhY2ssXG4gICAgbWl4aW46IHJlbSxcbiAgKTtcbiAgQGlmIHN1c3ktc3VwcG9ydChyZW0sICRfcmVxcywgJHdhcm46IGZhbHNlKSBhbmQgJHJoeXRobS11bml0ID09IHJlbSB7XG4gICAgQGluY2x1ZGUgcmVtKCRwcm9wLCAkdmFsKTtcbiAgfSBAZWxzZSB7XG4gICAgI3skcHJvcH06ICR2YWw7XG4gIH1cbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIERlYnVnZ2luZ1xuLy8gPT09PT09PT09XG5cbi8vIFN1c3kgSW5zcGVjdFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBPdXRwdXQgYXJndW1lbnRzIHBhc3NlZCB0byBhIGluc3BlY3QuXG4vLyAtICRtaXhpbiAgOiA8c3VzeSBtaXhpbj5cbi8vIC0gJGluc3BlYyAgIDogPG1peGluIGFyZ3VtZW50cz5cblxuQG1peGluIHN1c3ktaW5zcGVjdChcbiAgJG1peGluLFxuICAkaW5zcGVjdFxuKSB7XG4gICRzaG93OiBmYWxzZTtcblxuICBAZWFjaCAkaXRlbSBpbiAkaW5zcGVjdCB7XG4gICAgQGlmIGluZGV4KCRpdGVtLCBpbnNwZWN0KSB7XG4gICAgICAkc2hvdzogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAaWYgJHNob3cgb3Igc3VzeS1nZXQoZGVidWcgaW5zcGVjdCkge1xuICAgIC1zdXN5LSN7JG1peGlufTogaW5zcGVjdCgkaW5zcGVjdCk7XG4gIH1cbn1cbiIsIi8vIE91dHB1dFxuLy8gPT09PT09XG5cbi8vIE91dHB1dFxuLy8gLS0tLS0tXG4vLyBPdXRwdXQgQ1NTIHdpdGggcHJvcGVyIGJyb3dzZXIgc3VwcG9ydC5cbi8vIC0gJHN0eWxlcyAgOiA8bWFwIG9mIGNzcyBwcm9wZXJ0eS12YWx1ZSBwYWlycz5cbkBtaXhpbiBvdXRwdXQoXG4gICRzdHlsZXNcbikge1xuICBAZWFjaCAkcHJvcCwgJHZhbCBpbiAkc3R5bGVzIHtcbiAgICBAaW5jbHVkZSBzdXN5LXN1cHBvcnQoJHByb3AsICR2YWwpO1xuICB9XG59XG4iLCIvLyBEaXJlY3Rpb24gSGVscGVyc1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBGbG93IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGZsb3c6IGx0cixcbikpO1xuXG4vLyBHZXQgRGlyZWN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBvciAndG8nIGRpcmVjdGlvbiBvZiBhIGx0ciBvciBydGwgZmxvdy5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbi8vIC0gWyRrZXldICAgOiBmcm9tIHwgdG9cbkBmdW5jdGlvbiBnZXQtZGlyZWN0aW9uKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRrZXk6IGZyb21cbikge1xuICAkcmV0dXJuOiBpZigkZmxvdyA9PSBydGwsIChmcm9tOiByaWdodCwgdG86IGxlZnQpLCAoZnJvbTogbGVmdCwgdG86IHJpZ2h0KSk7XG4gIEByZXR1cm4gbWFwLWdldCgkcmV0dXJuLCAka2V5KTtcbn1cblxuLy8gVG9cbi8vIC0tXG4vLyBSZXR1cm4gdGhlICd0bycgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIHRvKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIHRvKTtcbn1cblxuLy8gRnJvbVxuLy8gLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgZGlyZWN0aW9uIG9mIGEgZmxvd1xuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQGZ1bmN0aW9uIGZyb20oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgZnJvbSk7XG59XG4iLCIvLyBHcmlkIEJhY2tncm91bmQgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG4vLyAtIFN1Yi1waXhlbCByb3VuZGluZyBjYW4gbGVhZCB0byBzZXZlcmFsIHBpeGVscyB2YXJpYXRpb24gYmV0d2VlbiBicm93c2Vycy5cblxuLy8gR3JpZCBCYWNrZ3JvdW5kIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkaW1hZ2U6IGJhY2tncm91bmQtaW1hZ2Vcbi8vIC0gJHNpemU6IGJhY2tncm91bmQtc2l6ZVxuLy8gLSAkY2xpcDogYmFja2dyb3VuZC1jbGlwXG4vLyAtIFskZmxvd106IGx0ciB8IHJ0bFxuQG1peGluIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQgKFxuICAkaW1hZ2UsXG4gICRzaXplOiBudWxsLFxuICAkY2xpcDogbnVsbCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZSxcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplLFxuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwLFxuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGZyb20oJGZsb3cpIHRvcCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTaGFyZWQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgICAgICAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBjb250YWluZXItb3V0cHV0KFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgJG91dHB1dDogKFxuICAgICN7JHByb3BlcnR5fTogJHdpZHRoIG9yIDEwMCUsXG4gICAgbWFyZ2luLWxlZnQ6IG50aCgkanVzdGlmeSwgMSksXG4gICAgbWFyZ2luLXJpZ2h0OiBudGgoJGp1c3RpZnksIDIpLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIE1hcmdpbnMgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBNYXJnaW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIG1hcmdpbi1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBQYWRkaW5nIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gUGFkZGluZyBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRiZWZvcmUgIDogPGxlbmd0aD5cbi8vIC0gJGFmdGVyICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIHBhZGRpbmctb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRiZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRhZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IENvbnRhaW5lclxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gZmxvYXQtY29udGFpbmVyKFxuICAkd2lkdGgsXG4gICRqdXN0aWZ5OiBhdXRvIGF1dG8sXG4gICRwcm9wZXJ0eTogbWF4LXdpZHRoXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1jbGVhcmZpeDtcbiAgQGluY2x1ZGUgY29udGFpbmVyLW91dHB1dCgkd2lkdGgsICRqdXN0aWZ5LCAkcHJvcGVydHkpO1xufVxuIiwiLy8gRmxvYXQgU3BhbiBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIEZsb2F0IFNwYW4gT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkd2lkdGggICAgICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb2F0XSAgICAgICAgICAgOiBmcm9tIHwgdG9cbi8vIC0gWyRtYXJnaW4tYmVmb3JlXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRtYXJnaW4tYWZ0ZXJdICAgIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWJlZm9yZV0gIDogPGxlbmd0aD5cbi8vIC0gWyRwYWRkaW5nLWFmdGVyXSAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgICAgICAgICAgIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtc3Bhbi1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tLFxuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGwsXG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbCxcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsLFxuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGwsXG4gICRmbG93ICAgICAgICAgICAgIDogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG8gICAgIDogdG8oJGZsb3cpO1xuICAkZnJvbSAgIDogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoOiAkd2lkdGgsXG4gICAgZmxvYXQ6IGlmKCRmbG9hdCA9PSB0bywgJHRvLCBudWxsKSBvciBpZigkZmxvYXQgPT0gZnJvbSwgJGZyb20sIG51bGwpLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy0jeyR0b306ICRwYWRkaW5nLWFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IEVuZHMgQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEVuZCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGxhc3QtZmxvdzogdG8sXG4pKTtcblxuLy8gRmxvYXQgTGFzdFxuLy8gLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWxhc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGxhc3QtZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgbGFzdC1mbG93KSxcbiAgJG1hcmdpbjogMFxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogaWYoJGxhc3QtZmxvdyA9PSB0bywgJHRvLCBudWxsKSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuLy8gRmxvYXQgRmlyc3Rcbi8vIC0tLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtZmlyc3QoXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3tmcm9tKCRmbG93KX06IDAsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgSXNvbGF0aW9uIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBJc29sYXRlIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHB1c2ggICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGlzb2xhdGUtb3V0cHV0KFxuICAkcHVzaCxcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6ICRmcm9tLFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJHB1c2gsXG4gICAgbWFyZ2luLSN7JHRvfTogLTEwMCUsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU3VzeSBTZXR0aW5nc1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTdXN5IExhbmd1YWdlIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IGZsdWlkLFxuICBvdXRwdXQ6IGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGNlbnRlcixcbiAgZ3V0dGVyLXBvc2l0aW9uOiBhZnRlcixcbiAgZ2xvYmFsLWJveC1zaXppbmc6IGNvbnRlbnQtYm94LFxuICBkZWJ1ZzogKFxuICAgIGltYWdlOiBoaWRlLFxuICAgIGNvbG9yOiByZ2JhKCM2NmYsIC4yNSksXG4gICAgb3V0cHV0OiBiYWNrZ3JvdW5kLFxuICAgIHRvZ2dsZTogdG9wIHJpZ2h0LFxuICApLFxuKSk7XG5cblxuLy8gVmFsaWQgS2V5d29yZCBWYWx1ZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEU6IERPTlQnVCBUT1VDSFxuJHN1c3kta2V5d29yZHM6IChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBzdGF0aWMgZmx1aWQsXG4gIG91dHB1dDogaXNvbGF0ZSBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBsZWZ0IGNlbnRlciByaWdodCxcbiAgZmxvdzogbHRyIHJ0bCxcbiAgZ3V0dGVyLXBvc2l0aW9uOiBiZWZvcmUgYWZ0ZXIgc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWMsXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3ggY29udGVudC1ib3gsXG4gIHNwYW46IGZ1bGwsXG4gIGVkZ2U6IGZpcnN0IGFscGhhIGxhc3Qgb21lZ2EgZnVsbCxcbiAgc3ByZWFkOiBuYXJyb3cgd2lkZSB3aWRlcixcbiAgZ3V0dGVyLW92ZXJyaWRlOiBuby1ndXR0ZXJzIG5vLWd1dHRlcixcbiAgcm9sZTogbmVzdCxcbiAgY2xlYXI6IGJyZWFrIG5vYnJlYWssXG4gIGRlYnVnIGltYWdlOiBzaG93IGhpZGUgc2hvdy1jb2x1bW5zIHNob3ctYmFzZWxpbmUsXG4gIGRlYnVnIG91dHB1dDogYmFja2dyb3VuZCBvdmVybGF5LFxuKTtcblxuXG4vLyBQYXJzZSBTdXN5IEtleXdvcmRzIGFuZCBNYXBzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc2V0dGluZ3MoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBzdHJpbmdzXG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gc3RyaW5nIHtcbiAgICAgICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRzdXN5LWtleXdvcmRzIHtcbiAgICAgICAgICBAaWYgaW5kZXgoJHZhbHVlLCAkaXRlbSkge1xuICAgICAgICAgICAgJF9rZXktdmFsdWU6IGFwcGVuZCgka2V5LCAkaXRlbSk7XG4gICAgICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1zZXQoJF9yZXR1cm4sICRfa2V5LXZhbHVlLi4uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIC8vIG1hcHNcbiAgICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkaXRlbSkgPT0gbWFwIHtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgQ29sdW1ucyAmIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtbGF5b3V0KFxuICAkc2hvcnRcbikge1xuICAkX3JldHVybjogKCk7XG4gICRfY29sdW1uczogKCk7XG4gICRfZ3V0dGVyczogbnVsbDtcblxuICBAaWYgbm90KHVuaXRsZXNzKG50aChudGgoJHNob3J0LCAxKSwgMSkpKSB7XG4gICAgJF9ndXR0ZXJzOiBudGgoJHNob3J0LCAxKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9jb2x1bW5zOiAoY29sdW1uczogbnRoKCRzaG9ydCwgMSkpO1xuICAgICRfZ3V0dGVyczogaWYobGVuZ3RoKCRzaG9ydCkgPiAxLCBudGgoJHNob3J0LCAyKSwgJF9ndXR0ZXJzKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRfZ3V0dGVycykgPT0gbGlzdCBhbmQgbGVuZ3RoKCRfZ3V0dGVycykgPiAwIHtcbiAgICAkX2d1dHRlcnM6IChcbiAgICAgIGd1dHRlcnM6IG50aCgkX2d1dHRlcnMsIDIpIC8gbnRoKCRfZ3V0dGVycywgMSksXG4gICAgICBjb2x1bW4td2lkdGg6IG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICk7XG4gIH0gQGVsc2Uge1xuICAgICRfZ3V0dGVyczogaWYoJF9ndXR0ZXJzLCAoZ3V0dGVyczogJF9ndXR0ZXJzKSwgKCkpO1xuICB9XG5cbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9jb2x1bW5zKTtcbiAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgJF9ndXR0ZXJzKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEdyaWQvQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3JpZChcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiBwYXJzZS1zZXR0aW5ncygkc2hvcnQpO1xuICAkX2xheW91dDogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRpdGVtIGluICRzaG9ydCB7XG4gICAgICAvLyBudW1iZXIgb3IgbGlzdFxuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBvciB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qgb3IgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgICAkX2xheW91dDogYXBwZW5kKCRfbGF5b3V0LCAkaXRlbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjb250YWluZXI6ICRpdGVtKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2xheW91dDogaWYobGVuZ3RoKCRfbGF5b3V0KSA+IDAsIHBhcnNlLWxheW91dCgkX2xheW91dCksICRfbGF5b3V0KTtcbiAgfVxuXG4gIEByZXR1cm4gbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2xheW91dCk7XG59XG5cblxuLy8gUGFyc2UgU3BhblxuLy8gLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNwYW4oXG4gICRzaG9ydCxcbiAgJGtleTogc3BhblxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgJF9hdDogaW5kZXgoJHNob3J0LCBhdCk7XG5cbiAgICBAaWYgJF9hdCB7XG4gICAgICAkX2xvY2k6ICRfYXQgKyAxO1xuICAgICAgJF9sb2NhdGlvbjogbnRoKCRzaG9ydCwgJF9sb2NpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChsb2NhdGlvbjogJF9sb2NhdGlvbikpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9hdCwgbnVsbCk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2xvY2ksIG51bGwpO1xuICAgIH1cblxuICAgICRfaTogMTtcbiAgICAkX3NwYW46ICgpO1xuXG4gICAgQHdoaWxlICRfaSA8PSBsZW5ndGgoJHNob3J0KSB7XG4gICAgICAkX3RoaXM6IG50aCgkc2hvcnQsICRfaSk7XG5cbiAgICAgIEBpZiB0eXBlLW9mKCRfdGhpcykgPT0gbnVtYmVyIHtcbiAgICAgICAgJF9zcGFuOiBhcHBlbmQoJF9zcGFuLCAkX3RoaXMpO1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgfSBAZWxzZSBpZiAkX3RoaXMgPT0gb2Yge1xuICAgICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2ksIG51bGwpO1xuICAgICAgICAkX2k6IGxlbmd0aCgkc2hvcnQpICsgMTtcbiAgICAgIH1cblxuICAgICAgJF9pOiAkX2kgKyAxO1xuICAgIH1cblxuICAgIEBpZiBsZW5ndGgoJF9zcGFuKSA+IDAge1xuICAgICAgJF9zcGFuOiBpZihsZW5ndGgoJF9zcGFuKSA9PSAxLCBudGgoJF9zcGFuLCAxKSwgJF9zcGFuKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgka2V5OiAkX3NwYW4pKTtcbiAgICB9XG5cbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCBwYXJzZS1ncmlkKCRzaG9ydCkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2UtZ3V0dGVycyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfZ3V0dGVyczogcGFyc2Utc3Bhbigkc2hvcnQsIGd1dHRlci1vdmVycmlkZSk7XG4gICRfc3Bhbjogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkX2d1dHRlcnMpO1xuXG4gIEBpZiAkX3NwYW4gYW5kIG5vdChtYXAtZ2V0KCRfZ3V0dGVycywgY29sdW1ucykpIHtcbiAgICAkX2NvbnRleHQ6ICgpO1xuICAgICRfbmV3OiAoKTtcblxuICAgIEBlYWNoICRpdGVtIGluICRfc3BhbiB7XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAkX2NvbnRleHQ6IGFwcGVuZCgkX2NvbnRleHQsICRpdGVtKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkX25ldzogYXBwZW5kKCRfbmV3LCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9jb250ZXh0OiBwYXJzZS1ncmlkKCRfY29udGV4dCk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMCwgbnVsbCwgJF9uZXcpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDEsIG50aCgkX25ldywgMSksICRfbmV3KTtcbiAgICAkX25ldzogKGd1dHRlci1vdmVycmlkZTogaWYoJF9uZXcgIT0gJF9zcGFuLCAkX25ldywgJF9zcGFuKSk7XG5cbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfbmV3KTtcbiAgICAkX2d1dHRlcnM6IG1hcC1tZXJnZSgkX2d1dHRlcnMsICRfY29udGV4dCk7XG4gIH1cblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cbiIsIi8vIFZhbGlkYXRpb25cbi8vID09PT09PT09PT1cblxuXG4vLyBWYWxpZGF0ZSBDb2x1bW4gTWF0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW4tbWF0aChcbiAgJG1hdGgsXG4gICRjb2x1bW4td2lkdGhcbikge1xuICBAaWYgJG1hdGggPT0gc3RhdGljIGFuZCBub3QoJGNvbHVtbi13aWR0aCkge1xuICAgIEBlcnJvciAnU3RhdGljIG1hdGggcmVxdWlyZXMgYSB2YWxpZCBjb2x1bW4td2lkdGggc2V0dGluZy4nO1xuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXdpZHRoO1xufVxuIiwiLy8gR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFNldCBhIG5ldyBsYXlvdXQgdXNpbmcgYSBzaG9ydGhhbmRcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiBsYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxheW91dCwgJGluc3BlY3QpO1xufVxuXG5cbi8vIFVzZSBHcmlkXG4vLyAtLS0tLS0tLVxuLy8gVXNlIGFuIGFyYml0cmFyeSBsYXlvdXQgZm9yIGEgc2VjdGlvbiBvZiBjb2RlXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gd2l0aC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAkbGF5b3V0O1xuICAkb2xkICAgICAgOiAkc3VzeTtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdCh3aXRoLWxheW91dCwgJGluc3BlY3QpO1xuXG4gIEBjb250ZW50O1xuXG4gICRzdXN5OiAkb2xkICFnbG9iYWw7XG59XG5cblxuLy8gTGF5b3V0XG4vLyAtLS0tLS1cbi8vIFJldHVybiBhIHBhcnNlZCBsYXlvdXQgbWFwIGJhc2VkIG9uIHNob3J0aGFuZCBzeW50YXhcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGxheW91dChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICBAcmV0dXJuIHBhcnNlLWdyaWQoJGxheW91dCk7XG59XG5cblxuLy8gR2V0IExheW91dFxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmV3IGxheW91dCBiYXNlZCBvbiBjdXJyZW50IGFuZCBnaXZlbiBzZXR0aW5nc1xuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQGZ1bmN0aW9uIF9nZXQtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGxheW91dDogbGF5b3V0KCRsYXlvdXQpO1xuICBAcmV0dXJuIGlmKCRjbGVhbiwgJGxheW91dCwgX3N1c3ktZGVlcC1tZXJnZSgkc3VzeSwgJGxheW91dCkpO1xufVxuIiwiLy8gU3VzeSBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBHbG9iYWwgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGJveCBtb2RlbCBnbG9iYWxseSBvbiBhbGwgZWxlbWVudHMuXG4vLyAtIFskYm94XTogYm9yZGVyLWJveCB8IGNvbnRlbnQtYm94XG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGdsb2JhbC1ib3gtc2l6aW5nKFxuICAkYm94OiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZyksXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0OiAkYm94O1xuXG4gIEBpZiAkaW5oZXJpdCB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgIGh0bWwgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICAgICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgYm94LXNpemluZzogaW5oZXJpdDsgfVxuICAgICB9XG4gIH0gQGVsc2Uge1xuICAgICosICo6YmVmb3JlLCAqOmFmdGVyIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnbG9iYWwtYm94LXNpemluZywgJGluc3BlY3QpO1xuICBAaW5jbHVkZSB1cGRhdGUtYm94LW1vZGVsKCRib3gpO1xufVxuXG4vLyBCb3JkZXIgQm94IFNpemluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEEgbGVnYWN5IHNob3J0Y3V0Li4uXG4vLyAtIFskaW5oZXJpdF06IHRydWUgfCBmYWxzZVxuQG1peGluIGJvcmRlci1ib3gtc2l6aW5nKFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBnbG9iYWwtYm94LXNpemluZyhib3JkZXItYm94LCAkaW5oZXJpdCk7XG59XG5cbi8vIFVwZGF0ZSBCb3ggTW9kZWxcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IFVwZGF0ZXMgZ2xvYmFsIGJveCBtb2RlbCBzZXR0aW5nXG5AbWl4aW4gdXBkYXRlLWJveC1tb2RlbChcbiAgJGJveFxuKSB7XG4gIEBpZiAkYm94ICE9IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSB7XG4gIEBpbmNsdWRlIHN1c3ktc2V0KGdsb2JhbC1ib3gtc2l6aW5nLCAkYm94KTtcbiAgfVxufVxuIiwiLy8gQ29udGV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIE5lc3RlZCBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgc3Vic2V0IGdyaWQgZm9yIG5lc3RlZCBjb250ZXh0LlxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG5AZnVuY3Rpb24gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRjb250ZXh0ICAgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRzcGFuICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJGNvbnRleHQpO1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkY29udGV4dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG59XG5cbi8vIE5lc3RlZCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gVXNlIGEgc3Vic2V0IGdyaWQgZm9yIGEgbmVzdGVkIGNvbnRleHRcbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuLy8gLSBAY29udGVudCAgIDogPGNvbnRlbnQ+XG5AbWl4aW4gbmVzdGVkKFxuICAkY29udGV4dFxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJG9sZCAgICAgIDogc3VzeS1nZXQoY29sdW1ucyk7XG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6IG5lc3RlZCgkY29udGV4dCkpKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChuZXN0ZWQsICRpbnNwZWN0KTtcbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogJG9sZCkpICFnbG9iYWw7XG59XG4iLCIvLyBCYWNrZ3JvdW5kIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogZmFsc2U7XG5cblxuLy8gU2hvdyBHcmlkL3Ncbi8vIC0tLS0tLS0tLS0tXG4vLyBTaG93IGdyaWQgb24gYW55IGVsZW1lbnQgdXNpbmcgZWl0aGVyIGJhY2tncm91bmQgb3Igb3ZlcmxheS5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gc2hvdy1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdDogJGdyaWQ7XG4gICRfb3V0cHV0OiBkZWJ1Zy1nZXQob3V0cHV0LCAkZ3JpZCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNob3ctZ3JpZCwgJGluc3BlY3QpO1xuICBAaWYgJF9vdXRwdXQgPT0gb3ZlcmxheSBhbmQgc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKSAhPSBoaWRlIHtcbiAgICBAaW5jbHVkZSBvdmVybGF5LWdyaWQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICB9XG59XG5cbkBtaXhpbiBzaG93LWdyaWRzKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGdyaWQpO1xufVxuXG4vLyBCYWNrZ3JvdW5kIEdyaWRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2hvdyBhIGdyaWQgYmFja2dyb3VuZCBvbiBhbnkgZWxlbWVudC5cbi8vIC0gWyRncmlkXSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkZ3JpZDtcbiAgJF9vdXRwdXQgIDogZ2V0LWJhY2tncm91bmQoJGdyaWQpO1xuXG4gIEBpZiBsZW5ndGgoJF9vdXRwdXQpID4gMCB7XG4gICAgJF9mbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCk7XG5cbiAgICAkX2ltYWdlOiAoKTtcbiAgICBAZWFjaCAkbmFtZSwgJGxheWVyIGluIG1hcC1nZXQoJF9vdXRwdXQsIGltYWdlKSB7XG4gICAgICAkX2RpcmVjdGlvbjogaWYoJG5hbWUgPT0gYmFzZWxpbmUsIHRvIGJvdHRvbSwgdG8gdG8oJF9mbG93KSk7XG4gICAgICAkX2ltYWdlOiBhcHBlbmQoJF9pbWFnZSwgbGluZWFyLWdyYWRpZW50KCRfZGlyZWN0aW9uLCAkbGF5ZXIpLCBjb21tYSk7XG4gICAgfVxuICAgICRfb3V0cHV0OiBtYXAtbWVyZ2UoJF9vdXRwdXQsIChpbWFnZTogJF9pbWFnZSkpO1xuXG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkLW91dHB1dCgkX291dHB1dC4uLik7XG4gICAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJhY2tncm91bmQtZ3JpZCwgJGluc3BlY3QpO1xuICB9XG59XG5cblxuLy8gT3ZlcmxheSBHcmlkXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEdlbmVyYXRlIGFuIGljb24gdG8gdHJpZ2dlciBncmlkLW92ZXJsYXlzIG9uIGFueSBnaXZlbiBlbGVtZW50cy5cbi8vICRncmlkcy4uLiAgOiA8c2VsZWN0b3I+IFs8c2V0dGluZ3M+XSBbLCA8c2VsZWN0b3I+XSpcbkBtaXhpbiBvdmVybGF5LWdyaWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICBAaWYgbm90KCRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0cykge1xuICAgIEBhdC1yb290IGhlYWQgeyBAaW5jbHVkZSBvdmVybGF5LWhlYWQoJGdyaWQpOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpiZWZvcmUgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXI7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmhvdmVyIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyLWhvdmVyOyB9XG4gICAgJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiB0cnVlICFnbG9iYWw7XG4gIH1cblxuICBoZWFkOmhvdmVyIH4gJixcbiAgaGVhZDpob3ZlciB+IGJvZHkgJiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICY6YmVmb3JlIHtcbiAgICAgIEBpbmNsdWRlIGdyaWQtb3ZlcmxheS1iYXNlO1xuICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyIHtcbiAgY29udGVudDogXCJ8fHxcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweCAxMHB4O1xuICBmb250OiB7XG4gICAgZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgIHNpemU6IDE2cHg7XG4gICAgd2VpZ2h0OiBib2xkO1xuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlciBIb3ZlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlci1ob3ZlciB7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC41KTtcbiAgY29sb3I6IHJlZDtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBIZWFkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyA8aGVhZD4gc3R5bGVzIHRvIGNyZWF0ZSBncmlkIG92ZXJsYXkgdG9nZ2xlXG5AbWl4aW4gb3ZlcmxheS1oZWFkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJF90b2dnbGU6IGRlYnVnLWdldCh0b2dnbGUsICRncmlkKTtcbiAgJF9ob3J6OiBudWxsO1xuICAkX3ZlcnQ6IG51bGw7XG5cbiAgQGVhY2ggJHNpZGUgaW4gJF90b2dnbGUge1xuICAgICRfaG9yejogaWYoJHNpZGUgPT0gbGVmdCBvciAkc2lkZSA9PSByaWdodCwgJHNpZGUsICRfaG9yeik7XG4gICAgJF92ZXJ0OiBpZigkc2lkZSA9PSB0b3Agb3IgJHNpZGUgPT0gYm90dG9tLCAkc2lkZSwgJF92ZXJ0KTtcbiAgfVxuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gICN7JF9ob3J6fTogMTBweDtcbiAgI3skX3ZlcnR9OiAxMHB4O1xuICB6LWluZGV4OiA5OTk7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuMjUpO1xufVxuXG5cbi8vIFtQcml2YXRlXSBHcmlkIE92ZXJsYXkgQmFzZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBCYXNlIHN0eWxlcyBmb3IgZ2VuZXJhdGluZyBhIGdyaWQgb3ZlcmxheVxuQG1peGluIGdyaWQtb3ZlcmxheS1iYXNlKCkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIHotaW5kZXg6IDk5ODtcbn1cblxuXG4vLyBHZXQgU3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICAgICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2d1dHRlcnMgICAgICAgOiBzdXN5LWdldChndXR0ZXJzLCAkZ3JpZCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGdyaWQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgICAgICAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF90cmFucyAgICAgICAgIDogdHJhbnNwYXJlbnQ7XG4gICRfbGlnaHQgICAgICAgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcblxuICAkX2VuZCAgICAgICAgICAgOiAxICsgJF9ndXR0ZXJzO1xuICAkX2FmdGVyICAgICAgICAgOiBwZXJjZW50YWdlKDEvJF9lbmQpO1xuICAkX3N0b3BzICAgICAgICAgOiAoKTtcbiAgJF9zaXplICAgICAgICAgIDogc3BhbigxICRncmlkIHdpZGUpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0O1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zcGxpdDogJF9ndXR0ZXJzLzI7XG4gICAgJF9iZWZvcmU6IHBlcmNlbnRhZ2UoJF9zcGxpdC8kX2VuZCk7XG4gICAgJF9hZnRlcjogcGVyY2VudGFnZSgoMSArICRfc3BsaXQpLyRfZW5kKTtcbiAgICAkX3N0b3BzOiAkX3RyYW5zICRfYmVmb3JlLCAkX2NvbG9yICRfYmVmb3JlLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH1cblxuICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgJF9zaXplOiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSAqICRfZW5kO1xuICB9XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpLFxuICAgIHNpemU6ICRfc2l6ZSxcbiAgKTtcblxuICBAcmV0dXJuICRfb3V0cHV0O1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgSW5zaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLWluc2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBTcGxpdFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLXNwbGl0KFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJHN0YXJ0LCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG5cbiAgICAkX2VuZDogJHN0YXJ0ICsgc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgdHJhbnNwYXJlbnQgJF9lbmQsIGNvbW1hKTtcblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgT3V0c2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tb3V0c2lkZShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF90cmFucyAgIDogdHJhbnNwYXJlbnQ7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkZ3V0dGVyOiBnZXQtc3Bhbi13aWR0aChmaXJzdCAkbG9jYXRpb24gJGdyaWQpO1xuXG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG5cbiAgICAgICRndXR0ZXI6ICRfbGlnaHQgJGd1dHRlciwgJF90cmFucyAkZ3V0dGVyLCAkX3RyYW5zICRfZW5kO1xuICAgICAgJHRoaXMtc3RvcDogam9pbigkdGhpcy1zdG9wLCAkZ3V0dGVyLCBjb21tYSk7XG4gICAgfVxuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1hc3ltKFxuICAkZ3JpZFxuKSB7XG4gICRfc3RvcHM6ICgpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1pbnNpZGUoJGdyaWQpO1xuICB9IEBlbHNlIGlmIGlzLXNwbGl0KCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tc3BsaXQoJGdyaWQpO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1vdXRzaWRlKCRncmlkKTtcbiAgfVxuXG4gIEByZXR1cm4gKGltYWdlOiAoY29sdW1uczogJF9zdG9wcykpO1xufVxuXG5cbi8vIEdldCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX3Nob3cgICAgOiBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpO1xuICAkX3JldHVybiAgOiAoKTtcblxuICBAaWYgJF9zaG93IGFuZCAkX3Nob3cgIT0gJ2hpZGUnIHtcbiAgICAkX2NvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgICRfc3ltOiBpcy1zeW1tZXRyaWNhbCgkX2NvbHVtbnMpO1xuICAgICAgJF9yZXR1cm46IGlmKCRfc3ltLCBnZXQtYmFja2dyb3VuZC1zeW0oJGdyaWQpLCBnZXQtYmFja2dyb3VuZC1hc3ltKCRncmlkKSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogY29udGVudC1ib3gpKTtcbiAgICB9XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWNvbHVtbnMnXG4gICAgICBhbmQgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cyhiYXNlLWxpbmUtaGVpZ2h0KVxuICAgICAgYW5kIHR5cGUtb2YoJGJhc2UtbGluZS1oZWlnaHQpID09ICdudW1iZXInXG4gICAgICBhbmQgbm90IHVuaXRsZXNzKCRiYXNlLWxpbmUtaGVpZ2h0KSB7XG4gICAgICAkX2NvbG9yOiB2YXJpYWJsZS1leGlzdHMoJ2dyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvcicpO1xuICAgICAgJF9jb2xvcjogaWYoJF9jb2xvciwgJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1jb2xvciwgIzAwMCk7XG5cbiAgICAgICRfaW1hZ2U6IG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKTtcbiAgICAgICRfc2l6ZTogbWFwLWdldCgkX3JldHVybiwgc2l6ZSk7XG4gICAgICAkX2Jhc2VsaW5lOiAoYmFzZWxpbmU6ICgkX2NvbG9yIDFweCwgdHJhbnNwYXJlbnQgMXB4KSk7XG4gICAgICAkX2Jhc2VsaW5lLXNpemU6IDEwMCUgJGJhc2UtbGluZS1oZWlnaHQ7XG5cbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChcbiAgICAgICAgaW1hZ2U6IGlmKCRfaW1hZ2UsIG1hcC1tZXJnZSgkX2ltYWdlLCAkX2Jhc2VsaW5lKSwgJF9iYXNlbGluZSksXG4gICAgICAgIHNpemU6IGlmKCRfc2l6ZSwgKCRfc2l6ZSwgJF9iYXNlbGluZS1zaXplKSwgJF9iYXNlbGluZS1zaXplKSxcbiAgICAgICkpO1xuXG4gICAgICBAaWYgJF9zaG93ID09ICdzaG93JyB7XG4gICAgICAgICRfY2xpcDogbWFwLWdldCgkX3JldHVybiwgY2xpcCk7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBqb2luKCRfY2xpcCwgYm9yZGVyLWJveCwgY29tbWEpKSk7XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiAkX3Nob3cgPT0gJ3Nob3ctYmFzZWxpbmUnIHtcbiAgICAgIEB3YXJuICdQbGVhc2UgcHJvdmlkZSBhICRiYXNlLWxpbmUtaGVpZ2h0IHdpdGggdGhlIGRlc2lyZWQgaGVpZ2h0IGFuZCB1bml0cyc7XG4gICAgfVxuICB9XG5cbiAgQGlmIG1hcC1nZXQoJF9yZXR1cm4sIGltYWdlKSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGZsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKSkpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBHZXQgRGVidWdcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIGRlYnVnIHNldHRpbmdcbi8vIC0gJGtleTogPHNldHRpbmc+XG5AZnVuY3Rpb24gZGVidWctZ2V0KFxuICAka2V5LFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAka2V5OiBqb2luKGRlYnVnLCAka2V5LCBzcGFjZSk7XG4gIEByZXR1cm4gc3VzeS1nZXQoJGtleSwgJGdyaWQpO1xufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gSXNvbGF0aW9uIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG5cbi8vIElzb2xhdGUgW01peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgaXNvbGF0aW9uIGFzIGFuIG92ZXJyaWRlLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQG1peGluIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGluc3BlY3Q6ICRpc29sYXRlO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwdXNoOiBpc29sYXRlKCRpc29sYXRlKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkaXNvbGF0ZSksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGlzb2xhdGUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgaXNvbGF0ZS1vdXRwdXQoJG91dHB1dC4uLik7XG59XG5cblxuLy8gSXNvbGF0ZSBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhbiBpc29sYXRpb24gb2Zmc2V0IHdpZHRoLlxuLy8gLSAkbG9jYXRpb246IDxzcGFuPlxuQGZ1bmN0aW9uIGlzb2xhdGUoXG4gICRpc29sYXRlOiAxXG4pIHtcbiAgJGlzb2xhdGU6IHBhcnNlLXNwYW4oJGlzb2xhdGUpO1xuICAkaXNvbGF0aW9uOiBzdXN5LWdldChzcGFuLCAkaXNvbGF0ZSk7XG5cbiAgQGlmICRpc29sYXRpb24gYW5kIG5vdChnZXQtbG9jYXRpb24oJGlzb2xhdGUpKSB7XG4gICAgJG5ldzogKFxuICAgICAgc3BhbjogbnVsbCxcbiAgICAgIGxvY2F0aW9uOiAkaXNvbGF0aW9uLFxuICAgICk7XG4gICAgJGlzb2xhdGU6IG1hcC1tZXJnZSgkaXNvbGF0ZSwgJG5ldyk7XG4gIH1cblxuICBAcmV0dXJuIGdldC1pc29sYXRpb24oJGlzb2xhdGUpO1xufVxuXG5cbi8vIEdldCBJc29sYXRpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgaXNvbGF0aW9uIG9mZnNldCB3aWR0aFxuLy8gLSAkaW5wdXQ6IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LWlzb2xhdGlvbihcbiAgJGlucHV0XG4pIHtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGlucHV0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkaW5wdXQpO1xuICAkd2lkdGggICAgICA6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIgYW5kIG5vdCh1bml0bGVzcygkbG9jYXRpb24pKSB7XG4gICAgJHdpZHRoOiAkbG9jYXRpb247XG4gIH0gQGVsc2UgaWYgJGxvY2F0aW9uIHtcbiAgICAkcHVzaDogJGxvY2F0aW9uIC0gMTtcbiAgICBAaWYgJHB1c2ggPiAwIHtcbiAgICAgICRwdXNoOiBtYXAtbWVyZ2UoJGlucHV0LCAoXG4gICAgICAgIHNwYW46ICRwdXNoLFxuICAgICAgICBsb2NhdGlvbjogMSxcbiAgICAgICAgc3ByZWFkOiB3aWRlLFxuICAgICAgKSk7XG4gICAgICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRwdXNoKTtcbiAgICB9XG4gIH1cblxuICBAaWYgc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkaW5wdXQpID09IHNwbGl0XG4gICAgICBhbmQgc3VzeS1nZXQoZ3V0dGVycywgJGlucHV0KSA+IDAge1xuICAgICR3aWR0aDogaWYoJHdpZHRoID09IG51bGwsIGd1dHRlcnMoJGlucHV0KSwgJHdpZHRoICsgZ3V0dGVycygkaW5wdXQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoIG9yIDA7XG59XG4iLCIvLyBHYWxsZXJ5IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gR2FsbGVyeVxuLy8gLS0tLS0tLVxuLy8gQ3JlYXRlIGFuIGlzb2xhdGVkIGdhbGxlcnlcbi8vIC0gJHNwYW4gICAgICAgIDogPHNwYW4+XG4vLyAtIFskc2VsZWN0b3JdICA6IGNoaWxkIHwgb2YtdHlwZVxuQG1peGluIGdhbGxlcnkoXG4gICRzcGFuLFxuICAkc2VsZWN0b3I6IGNoaWxkXG4pIHtcbiAgJGluc3BlY3QgICAgOiAkc3BhbjtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJHNwYW4gICAgICAgOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogMSkpO1xuXG4gICRuICAgICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjb2x1bW5zICAgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRjb250ZXh0ICAgICAgOiBzdXN5LWNvdW50KCRjb2x1bW5zKTtcbiAgJGZsb3cgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcblxuICAkaW5zaWRlICAgICAgIDogaXMtaW5zaWRlKCRzcGFuKTtcbiAgJGZyb20gICAgICAgICA6IGZyb20oJGZsb3cpO1xuICAkbGluZSAgICAgICAgIDogZmxvb3IoJGNvbnRleHQgLyAkbik7XG4gICRzeW1tZXRyaWNhbCAgOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgJG91dHB1dDogKFxuICAgIHdpZHRoICAgICAgICAgICAgIDogbnVsbCxcbiAgICBmbG9hdCAgICAgICAgICAgICA6IGZyb20sXG4gICAgbWFyZ2luLWJlZm9yZSAgICAgOiBudWxsLFxuICAgIG1hcmdpbi1hZnRlciAgICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICk7XG5cbiAgQGlmICRpbnNpZGUge1xuICAgICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsIChcbiAgICAgIHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpLFxuICAgICAgcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpLFxuICAgICkpO1xuICB9XG5cbiAgQGlmICRzeW1tZXRyaWNhbCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICh3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSk7XG4gIH1cblxuICAkYm94ICAgICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkZ2xvYmFsLWJveCAgIDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpID09ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChnYWxsZXJ5LCAkaW5zcGVjdCk7XG5cbiAgLy8gQ29sbGVjdGl2ZSBPdXRwdXRcbiAgQGlmICRib3ggPT0gYm9yZGVyLWJveCBvciAoJGluc2lkZSBhbmQgbm90KCRib3gpIGFuZCBub3QoJGdsb2JhbC1ib3gpKSB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBib3JkZXItYm94KSk7XG4gIH0gQGVsc2UgaWYgJGJveCA9PSBjb250ZW50LWJveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiBjb250ZW50LWJveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgLy8gSW5kaXZpZHVhbCBMb29wXG4gIEBmb3IgJGl0ZW0gZnJvbSAxIHRocm91Z2ggJGxpbmUge1xuICAgICRudGg6ICcjeyRsaW5lfW4gKyAjeyRpdGVtfSc7XG4gICAgJjpudGgtI3skc2VsZWN0b3J9KCN7JG50aH0pIHtcbiAgICAgIC8vIEluZGl2aWR1YWwgUHJlcFxuICAgICAgJG91dHB1dDogKFxuICAgICAgICB3aWR0aCAgICAgICAgICAgICA6IGlmKCRzeW1tZXRyaWNhbCwgbnVsbCwgZ2V0LXNwYW4td2lkdGgoJHNwYW4pKSxcbiAgICAgICAgZmxvYXQgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICBtYXJnaW4tYmVmb3JlICAgICA6IGdldC1pc29sYXRpb24oJHNwYW4pLFxuICAgICAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IC0xMDAlLFxuICAgICAgICBwYWRkaW5nLWJlZm9yZSAgICA6IG51bGwsXG4gICAgICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICAgICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgICAgICk7XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgT3V0cHV0XG4gICAgICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAgICAgQGlmIGdldC1lZGdlKCRzcGFuKSA9PSBmaXJzdCB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrO1xuICAgICAgICBAaW5jbHVkZSBmaXJzdCgkc3Bhbik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgbm9icmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gSW5kaXZpZHVhbCBMb2NhdGlvbiBJbmNyZW1lbnRcbiAgICAgICRsb2NhdGlvbjogZ2V0LWxvY2F0aW9uKCRzcGFuKSArICRuO1xuICAgICAgJGxvY2F0aW9uOiBpZigkbG9jYXRpb24gPiAkY29udGV4dCwgMSwgJGxvY2F0aW9uKTtcbiAgICAgICRzcGFuOiBtYXAtbWVyZ2UoJHNwYW4sIChsb2NhdGlvbjogJGxvY2F0aW9uKSk7XG4gICAgfVxuICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLy8gTWFyZ2luIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG4vLyBQcmVcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZShcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICRndXR0ZXIgOiBndXR0ZXIoJHNwYW4pO1xuICAkc3BhbiAgIDogc3Bhbigkc3Bhbik7XG4gICR3aWR0aCAgOiBpZigkc3BsaXQgYW5kICRndXR0ZXIsICRzcGFuICsgJGd1dHRlciwgJHNwYW4pO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmUsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gUG9zdFxuLy8gLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcG9zdChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocG9zdCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQdXNoXG4vLyAtLS0tXG4vLyBTaW1wbGUgc3lub255bW4gZm9yIHByZS5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVzaChcbiAgJHNwYW5cbikge1xuICBAaW5jbHVkZSBwcmUoJHNwYW4pO1xufVxuXG4vLyBQdWxsXG4vLyAtLS0tXG4vLyBBZGQgbmVnYXRpdmUgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHVsbChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHNwbGl0ICAgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJHdpZHRoICAgIDogaWYoJHNwbGl0LCAwIC0gc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCAwIC0gc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFNxdWlzaFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gc3F1aXNoKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgICAgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3F1aXNoLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZSgkcHJlKTtcbiAgQGluY2x1ZGUgcG9zdCgkcG9zdCk7XG59XG4iLCIvLyBQYWRkaW5nIFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmVmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZWZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3VmZml4XG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHN1ZmZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3VmZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KG51bGwsICR3aWR0aCwgJGZsb3cpO1xufVxuXG4vLyBQYWRcbi8vIC0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHBhZChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogKCRwcmUsICRwb3N0KTtcbiAgJHByZSAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwYWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlZml4KCRwcmUpO1xuICBAaW5jbHVkZSBzdWZmaXgoJHBvc3QpO1xuXG59XG4iLCIvLyBCbGVlZCBTeW50YXhcbi8vID09PT09PT09PT09PVxuXG4vLyBCbGVlZFxuLy8gLS0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBtYXJnaW5zLCBhbmQgZXF1YWwgcG9zaXRpdmUgcGFkZGluZyB0byBjcmVhdGUgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZChcbiAgJGJsZWVkOiAwIGd1dHRlcigpXG4pIHtcbiAgJGluc3BlY3QgIDogJGJsZWVkO1xuICAkb3V0cHV0ICAgOiBnZXQtYmxlZWQoJGJsZWVkKTtcblxuICBAaWYgc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9IGNvbnRlbnQtYm94IHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSwgJG91dHB1dCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmxlZWQsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG5cbi8vIEJsZWVkLXhcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciBob3Jpem9udGFsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteChcbiAgJGJsZWVkOiBndXR0ZXIoKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDIpIDAgbnRoKCR0cmJsLCAxKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteCBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gQmxlZWQteVxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIHZlcnRpY2FsIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQteShcbiAgJGJsZWVkOiBpZihmdW5jdGlvbi1leGlzdHMocmh5dGhtKSwgcmh5dGhtKDEpLCAxZW0pXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDAgbnRoKCR0cmJsLCAyKSAwKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC15IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBHZXQgQmxlZWRcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGJsZWVkIG91dHB1dCB2YWx1ZXNcbi8vIC0gJGJsZWVkOiA8c3Bhbj5cbkBmdW5jdGlvbiBnZXQtYmxlZWQoXG4gICRibGVlZFxuKSB7XG4gICRibGVlZCAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkYmxlZWQpKTtcbiAgJHRyYmwgICAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcbiAgJHNob3J0ICAgIDogbnVsbDtcbiAgJG91dHB1dCAgIDogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJHRyYmwpIHtcbiAgICAkdGhpczogbnRoKCR0cmJsLCAkaSk7XG4gICAgJG5ldzogKCk7XG4gICAgJG1hcmdpbjogbnVsbDtcbiAgICAkcGFkZGluZzogbnVsbDtcbiAgICAkcGFkZGluZy14OiBudWxsO1xuXG4gICAgQGlmICR0aGlzID4gMCB7XG4gICAgICAkdGhpczogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46ICR0aGlzKSk7XG4gICAgICAkbWFyZ2luOiBzcGFuKCR0aGlzKTtcbiAgICAgICRwYWRkaW5nOiAkbWFyZ2luO1xuICAgICAgJHBhZGRpbmcteDogJHBhZGRpbmc7XG4gICAgfVxuXG4gICAgQGlmICRtYXJnaW4gYW5kICRtYXJnaW4gPiAwIHtcbiAgICAgICRtYXJnaW46IC0gJG1hcmdpbjtcblxuICAgICAgQGlmIGlzLWluc2lkZSgkdGhpcykge1xuICAgICAgICAkZ3V0dGVyOiBndXR0ZXIoJHRoaXMpO1xuICAgICAgICAkam9pbjogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkcGFkZGluZywgJGd1dHRlciksIHRydWUsIGZhbHNlKTtcbiAgICAgICAgJHBhZGRpbmcteDogaWYoJGpvaW4gYW5kICRwYWRkaW5nID4gMCwgJHBhZGRpbmcgKyAkZ3V0dGVyLCAkcGFkZGluZyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGlmICRpID09IDEge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDIge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMyB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSA0IHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgJG91dHB1dDogbWFwLW1lcmdlKCRvdXRwdXQsICRuZXcpO1xuICB9XG5cbiAgQGVhY2ggJHByb3AsICR2YWx1ZSBpbiAkb3V0cHV0IHtcbiAgICAkb3V0cHV0OiBpZigkdmFsdWUgPT0gMCwgbWFwLW1lcmdlKCRvdXRwdXQsICgkcHJvcDogbnVsbCkpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEByZXR1cm4gYmxlZWQtc2hvcnRoYW5kKCRvdXRwdXQpO1xufVxuXG4vLyBCbGVlZCBTaG9ydGhhbmRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ29udmVydCBibGVlZCBvdXRwdXQgaW50byBzaG9ydGhhbmQgd2hlbiBwb3NzaWJsZS5cbi8vIC0gJGJsZWVkOiA8b3V0cHV0IG1hcD5cbkBmdW5jdGlvbiBibGVlZC1zaG9ydGhhbmQoXG4gICRibGVlZFxuKSB7XG4gICRtYXJnaW46ICgpO1xuICAkcGFkZGluZzogKCk7XG4gICRyZXR1cm46ICgpO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkYmxlZWQge1xuICAgIEBpZiBzdHItaW5kZXgoJGtleSwgbWFyZ2luKSB7XG4gICAgICAkbWFyZ2luOiBtYXAtbWVyZ2UoJG1hcmdpbiwgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH0gQGVsc2UgaWYgc3RyLWluZGV4KCRrZXksIHBhZGRpbmcpID4gMCB7XG4gICAgICAkcGFkZGluZzogbWFwLW1lcmdlKCRwYWRkaW5nLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgJHByb3BzOiAoXG4gICAgbWFyZ2luOiAkbWFyZ2luLFxuICAgIHBhZGRpbmc6ICRwYWRkaW5nLFxuICApO1xuXG4gIEBlYWNoICRuYW1lLCAkbWFwIGluICRwcm9wcyB7XG4gICAgJGZvdXI6IGlmKGxlbmd0aChtYXAta2V5cygkbWFwKSkgPT0gNCwgdHJ1ZSwgZmFsc2UpO1xuICAgICRudWxsOiBpZihpbmRleChtYXAtdmFsdWVzKCRtYXApLCBudWxsKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRmb3VyIGFuZCBub3QoJG51bGwpIHtcbiAgICAgICR0b3A6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXRvcCcpO1xuICAgICAgJHJpZ2h0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1yaWdodCcpO1xuICAgICAgJGJvdHRvbTogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tYm90dG9tJyk7XG4gICAgICAkbGVmdDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tbGVmdCcpO1xuXG4gICAgICAkdGI6IGlmKCR0b3AgPT0gJGJvdHRvbSwgJHRvcCwgbnVsbCk7XG4gICAgICAkcmw6IGlmKCRyaWdodCA9PSAkbGVmdCwgJHJpZ2h0LCBudWxsKTtcbiAgICAgICRhbGw6IGlmKCR0YiA9PSAkcmwsICR0YiwgbnVsbCk7XG5cbiAgICAgICRuZXc6IGlmKCRhbGwsICRhbGwsIG51bGwpO1xuXG4gICAgICBAaWYgbm90KCRuZXcpIHtcbiAgICAgICAgQGlmICR0YiBhbmQgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdGIgJHJsO1xuICAgICAgICB9IEBlbHNlIGlmICRybCB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmwgJGJvdHRvbTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJG5ldzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgKCRuYW1lOiAkbmV3KSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmV0dXJuOiBtYXAtbWVyZ2UoJHJldHVybiwgJG1hcCk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQnJlYWtwb2ludCBJbnRlZ3JhdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1tZWRpYTogKCkgIWRlZmF1bHQ7XG4kc3VzeS1tZWRpYS1mYWxsYmFjazogZmFsc2UgIWRlZmF1bHQ7XG5cbiRfc3VzeS1tZWRpYS1jb250ZXh0OiAoKTtcblxuXG4vLyBTdXN5IEJyZWFrcG9pbnRcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hhbmdlIGdyaWRzIGF0IGRpZmZlcmVudCBtZWRpYSBxdWVyeSBicmVha3BvaW50cy5cbi8vIC0gJHF1ZXJ5ICAgICA6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT4gfCA8bWFwPlxuLy8gLSAkbGF5b3V0ICAgIDogPHNldHRpbmdzPlxuLy8gLSAkbm8tcXVlcnkgIDogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktYnJlYWtwb2ludChcbiAgJHF1ZXJ5LFxuICAkbGF5b3V0OiBmYWxzZSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtcm91dGVyKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgQGlmICRsYXlvdXQge1xuICAgICAgQGluY2x1ZGUgd2l0aC1sYXlvdXQoJGxheW91dCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFN1c3kgTWVkaWFcbi8vIC0tLS0tLS0tLS1cbi8vIC0gJHF1ZXJ5OiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+XG4vLyAtICRuby1xdWVyeTogPGJvb2xlYW4+IHwgPHNlbGVjdG9yPlxuQG1peGluIHN1c3ktbWVkaWEoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gICRvbGQtY29udGV4dDogJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gICRuYW1lOiBpZihtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJHF1ZXJ5KSwgJHF1ZXJ5LCBudWxsKTtcbiAgJHF1ZXJ5OiBzdXN5LWdldC1tZWRpYSgkcXVlcnkpO1xuICAkcXVlcnk6IHN1c3ktcGFyc2UtbWVkaWEoJHF1ZXJ5KTtcblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJHF1ZXJ5LCAkbmFtZSk7XG5cbiAgQGlmICRuby1xdWVyeSBhbmQgdHlwZS1vZigkbm8tcXVlcnkpICE9IHN0cmluZyB7XG4gICAgQGNvbnRlbnQ7XG4gIH0gQGVsc2Uge1xuICAgIEBtZWRpYSAje3N1c3ktcmVuZGVyLW1lZGlhKCRxdWVyeSl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cblxuICAgIEBpZiB0eXBlLW9mKCRuby1xdWVyeSkgPT0gc3RyaW5nIHtcbiAgICAgICN7JG5vLXF1ZXJ5fSAmIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRvbGQtY29udGV4dCwgJGNsZWFuOiB0cnVlKTtcbn1cblxuXG4vLyBNZWRpYSBSb3V0ZXJcbi8vIC0tLS0tLS0tLS0tLVxuLy8gUm91dCBtZWRpYSBhcmd1bWVudHMgdG8gdGhlIGNvcnJlY3QgbWl4aW4uXG5AbWl4aW4gc3VzeS1tZWRpYS1yb3V0ZXIoXG4gICRxdWVyeSxcbiAgJG5vLXF1ZXJ5OiAkc3VzeS1tZWRpYS1mYWxsYmFja1xuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYnJlYWtwb2ludCwgKG1peGluOiBicmVha3BvaW50KSwgJHdhcm46IGZhbHNlKSB7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LW1lZGlhKCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBVcGRhdGUgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gU2V0IHRoZSBuZXcgbWVkaWEgY29udGV4dFxuQG1peGluIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHF1ZXJ5LFxuICAkbmFtZTogbnVsbCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRxdWVyeTogbWFwLW1lcmdlKChuYW1lOiAkbmFtZSksICRxdWVyeSk7XG5cbiAgQGlmICRjbGVhbiB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICRxdWVyeSAhZ2xvYmFsO1xuICB9IEBlbHNlIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogbWFwLW1lcmdlKCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcXVlcnkpICFnbG9iYWw7XG4gIH1cbn1cblxuXG4vLyBNZWRpYSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGZ1bGwgbWVkaWEgY29udGV4dCwgb3IgYSBzaW5nbGUgbWVkaWEgcHJvcGVydHkgKGUuZy4gbWluLXdpZHRoKVxuQGZ1bmN0aW9uIHN1c3ktbWVkaWEtY29udGV4dChcbiAgJHByb3BlcnR5OiBmYWxzZVxuKSB7XG4gIEBpZiAkcHJvcGVydHkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHByb3BlcnR5KTtcbiAgfSBAZWxzZSB7XG4gICAgQHJldHVybiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgfVxufVxuXG5cbi8vIEdldCBNZWRpYVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuYW1lZCBtZWRpYS1xdWVyeSBmcm9tICRzdXN5LW1lZGlhLlxuLy8gLSAkbmFtZTogPGtleT5cbkBmdW5jdGlvbiBzdXN5LWdldC1tZWRpYShcbiAgJG5hbWVcbikge1xuICBAaWYgbWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRuYW1lKSB7XG4gICAgJG1hcC12YWx1ZTogbWFwLWdldCgkc3VzeS1tZWRpYSwgJG5hbWUpO1xuICAgIEBpZiAoJG5hbWUgPT0gJG1hcC12YWx1ZSkge1xuICAgICAgJG5hbWU6ICRtYXAtdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbmFtZTogc3VzeS1nZXQtbWVkaWEoJG1hcC12YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbmFtZTtcbn1cblxuXG4vLyBSZW5kZXIgTWVkaWFcbi8vIC0tLS0tLS0tLS0tLVxuLy8gQnVpbGQgYSBtZWRpYS1xdWVyeSBzdHJpbmcgZnJvbSB2YXJpb3VzIG1lZGlhIHNldHRpbmdzXG5AZnVuY3Rpb24gc3VzeS1yZW5kZXItbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRvdXRwdXQ6IG51bGw7XG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRxdWVyeSB7XG4gICAgJHN0cmluZzogbnVsbDtcblxuICAgIEBpZiAkcHJvcGVydHkgPT0gbWVkaWEge1xuICAgICAgJHN0cmluZzogJHZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0cmluZzogJygjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSknO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IGlmKCRvdXRwdXQsICcjeyRvdXRwdXR9IGFuZCAjeyRzdHJpbmd9JywgJHN0cmluZyk7XG4gIH1cblxuICBAcmV0dXJuICRvdXRwdXQ7XG59XG5cblxuLy8gUGFyc2UgTWVkaWFcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gcGFyc2VkIG1lZGlhLXF1ZXJ5IHNldHRpbmdzIGJhc2VkIG9uIHNob3J0aGFuZFxuQGZ1bmN0aW9uIHN1c3ktcGFyc2UtbWVkaWEoXG4gICRxdWVyeVxuKSB7XG4gICRtcTogbnVsbDtcbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBtYXAge1xuICAgICRtcTogJHF1ZXJ5O1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIge1xuICAgICRtcTogKG1pbi13aWR0aDogJHF1ZXJ5KTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbGlzdCBhbmQgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmIHR5cGUtb2YobnRoKCRxdWVyeSwgMSkpID09IG51bWJlciB7XG4gICAgICAkbXE6IChcbiAgICAgICAgbWluLXdpZHRoOiBtaW4oJHF1ZXJ5Li4uKSxcbiAgICAgICAgbWF4LXdpZHRoOiBtYXgoJHF1ZXJ5Li4uKSxcbiAgICAgICk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkbXE6IChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJG1xOiAobWVkaWE6ICcjeyRxdWVyeX0nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1xO1xufVxuIiwiLypcbiogU2N1dCwgYSBjb2xsZWN0aW9uIG9mIFNhc3MgdXRpbGl0aWVzXG4qIHRvIGVhc2UgYW5kIGltcHJvdmUgb3VyIGltcGxlbWVudGF0aW9ucyBvZiBjb21tb24gc3R5bGUtY29kZSBwYXR0ZXJucy5cbiogdjEuNC4wXG4qIERvY3MgYXQgaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXRcbiovXG5cbkBtaXhpbiBzY3V0LWNsZWFyZml4IHtcblxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG5cbn1cblxuJXNjdXQtY2xlYXJmaXgge1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xufVxuQG1peGluIHNjdXQtbGlzdC11bnN0eWxlZChcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWZsb2F0ZWQgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkZGlyOiBsZWZ0LFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG5cbiAgJiA+IGxpIHtcbiAgICBmbG9hdDogJGRpcjtcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi0jeyRkaXJ9OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1mbG9hdGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQ7XG59XG5cbkBmdW5jdGlvbiBzY3V0LWF1dG9PclZhbHVlICgkdmFsKSB7XG4gIEBpZiAkdmFsID09IGEgb3IgJHZhbCA9PSBhdXRvIHtcbiAgICBAcmV0dXJuIGF1dG87XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHZhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1jb29yZHMgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gICR0b3A6IG50aCgkY29vcmRpbmF0ZXMsIDEpO1xuICAkcmlnaHQ6IG50aCgkY29vcmRpbmF0ZXMsIDIpO1xuICAkYm90dG9tOiBudGgoJGNvb3JkaW5hdGVzLCAzKTtcbiAgJGxlZnQ6IG50aCgkY29vcmRpbmF0ZXMsIDQpO1xuXG4gIEBpZiAkdG9wICE9IG4ge1xuICAgIHRvcDogc2N1dC1hdXRvT3JWYWx1ZSgkdG9wKTtcbiAgfVxuICBAaWYgJHJpZ2h0ICE9IG4ge1xuICAgIHJpZ2h0OiBzY3V0LWF1dG9PclZhbHVlKCRyaWdodCk7XG4gIH1cbiAgQGlmICRib3R0b20gIT0gbiB7XG4gICAgYm90dG9tOiBzY3V0LWF1dG9PclZhbHVlKCRib3R0b20pO1xuICB9XG4gIEBpZiAkbGVmdCAhPSBuIHtcbiAgICBsZWZ0OiBzY3V0LWF1dG9PclZhbHVlKCRsZWZ0KTtcbiAgfVxuXG59XG5AZnVuY3Rpb24gc2N1dC1zdHJpcC11bml0IChcbiAgJG51bVxuKSB7XG5cbiAgQHJldHVybiAkbnVtIC8gKCRudW0gKiAwICsgMSk7XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LWVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1lbSAoXG4gICRwaXhlbHMsXG4gICRiYXNlOiAkc2N1dC1lbS1iYXNlXG4pIHtcblxuICAvLyAkYmFzZSBjb3VsZCBiZSBpbiBlbSBvciBweCAobm8gdW5pdCA9IHB4KS5cbiAgLy8gQWRqdXN0IGFjY29yZGluZ2x5IHRvIGNyZWF0ZSBhICRkaXZpc29yIHRoYXRcbiAgLy8gc2VydmVzIGFzIGNvbnRleHQgZm9yICRwaXhlbHMuXG4gICRtdWx0aXBsaWVyOiBpZih1bml0KCRiYXNlKSA9PSBlbSwgMTYsIDEpO1xuICAkZGl2aXNvcjogc2N1dC1zdHJpcC11bml0KCRiYXNlKSAqICRtdWx0aXBsaWVyO1xuXG4gICRlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLWVtczogKHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRkaXZpc29yKSAqIDFlbTtcbiAgICAkZW0tdmFsczogYXBwZW5kKCRlbS12YWxzLCAkdmFsLWluLWVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJGVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRlbS12YWxzO1xuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYHNjdXQtc3RyaXAtdW5pdGAuXG5cbiRzY3V0LXJlbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtcmVtIChcbiAgJHBpeGVsc1xuKSB7XG5cbiAgJHJlbS12YWxzOiAoKTtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXJlbXM6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAvICRzY3V0LXJlbS1iYXNlICogMXJlbTtcbiAgICAkcmVtLXZhbHM6IGFwcGVuZCgkcmVtLXZhbHMsICR2YWwtaW4tcmVtcyk7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRyZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRyZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJHJlbS12YWxzO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWJvcmRlciAoXG4gICRzdHlsZSxcbiAgJHNpZGVzOiBuIHlcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpZGVzKSA9PSAyIHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiBsZW5ndGgoJHNpZGVzKSA9PSA0IHtcbiAgICBAaWYgbnRoKCRzaWRlcywgMSkgIT0gbiB7XG4gICAgICBib3JkZXItdG9wOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAyKSAhPSBuIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMykgIT0gbiB7XG4gICAgICBib3JkZXItYm90dG9tOiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCA0KSAhPSBuIHtcbiAgICAgIGJvcmRlci1sZWZ0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2Uge1xuICAgIEB3YXJuIFwiU2N1dC1ib3JkZXIgcmVxdWlyZXMgYSAkc2lkZXMgYXJndW1lbnQgb2YgMiBvciA0IHZhbHVlcy5cIlxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNpcmNsZSAoXG4gICRzaXplLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIEBpZiAkY29sb3IgPT0gaW5oZXJpdCB7XG4gICAgLy8gSWYgdXNlciB3YW50cyB0byBpbmhlcml0IHRoZSBjb2xvcixcbiAgICAvLyB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IGJvcmRlclxuICAgIC8vIGNvbG9yIGRlZmF1bHRzIHRvIHRoZSB0ZXh0IGNvbG9yIG9mIHRoZSBlbGVtZW50LlxuICAgIGJvcmRlci13aWR0aDogJHNpemUgLyAyO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAwO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBPdGhlcndpc2UsIGp1c3QgdXNlIGJhY2tncm91bmQtY29sb3IuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgd2lkdGg6ICRzaXplO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNvbG9yLXN3YXAgKFxuICAkb2ZmLFxuICAkb24sXG4gICRkdXJhdGlvbjogMCxcbiAgJGJnOiBmYWxzZVxuKSB7XG5cbiAgJHRyYW5zaXRpb24tcHJvcGVydGllczogbnVsbDtcbiAgJG9mZi1pcy1saXN0OiB0eXBlLW9mKCRvZmYpID09IGxpc3Q7XG4gICRvbi1pcy1saXN0OiB0eXBlLW9mKCRvbikgPT0gbGlzdDtcblxuICAvLyBJZiAkb2ZmIElTIGEgbGlzdCxcbiAgLy8gYXNzaWduIGNvbG9yIGFuZCBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAaWYgJG9mZi1pcy1saXN0IHtcbiAgICBjb2xvcjogbnRoKCRvZmYsIDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb2ZmLCAyKTtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yLCBjb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIFRSVUUsXG4gIC8vIGFzc2lnbiBiYWNrZ3JvdW5kLWNvbG9yLlxuICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb2ZmLWlzLWxpc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBGQUxTRSxcbiAgLy8gYXNzaWduIGNvbG9yLlxuICBAZWxzZSB7XG4gICAgY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogY29sb3I7XG4gIH1cblxuICAvLyBPbmx5IHNldC11cCB0cmFuc2l0aW9uIGlmICRkdXJhdGlvbiAhPSAwLlxuICBAaWYgJGR1cmF0aW9uICE9IDAge1xuICAgIHRyYW5zaXRpb24tcHJvcGVydHk6ICR0cmFuc2l0aW9uLXByb3BlcnRpZXM7XG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogJGR1cmF0aW9uO1xuICB9XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG5cbiAgICAvLyAkb24gaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyAkb2ZmLCBhYm92ZS5cbiAgICBAaWYgJG9uLWlzLWxpc3Qge1xuICAgICAgY29sb3I6IG50aCgkb24sIDEpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvbiwgMik7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9uLWlzLWxpc3QpIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvbjtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBjb2xvcjogJG9uO1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1oZC1icCAoXG4gICRyYXRpbzogMS4zXG4pIHtcblxuICBAbWVkaWEgKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICgkcmF0aW8gLyAxKSksXG4gICAgICAgICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICAgICAgICAgKG1pbi1yZXNvbHV0aW9uOiAocm91bmQoOTYgKiAkcmF0aW8pICogMWRwaSkpIHtcbiAgICBAY29udGVudDtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhpZGUtdmlzdWFsbHkge1xuXG4gIGJvcmRlcjogMDtcbiAgY2xpcDogcmVjdCgwIDAgMCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xuXG59XG5cbiVzY3V0LWhpZGUtdmlzdWFsbHkge1xuICBAaW5jbHVkZSBzY3V0LWhpZGUtdmlzdWFsbHk7XG59XG5AbWl4aW4gc2N1dC1pbWFnZS1yZXBsYWNlIHtcblxuICB0ZXh0LWluZGVudDogMTAyJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcblxufVxuXG4lc2N1dC1pbWFnZS1yZXBsYWNlIHtcbiAgQGluY2x1ZGUgc2N1dC1pbWFnZS1yZXBsYWNlO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtcmVtIGFuZCBzY3V0LXN0cmlwLXVuaXRcblxuQG1peGluIHNjdXQtcmVtLWZhbGxiYWNrIChcbiAgJHBpeGVscyxcbiAgJHByb3BlcnR5OiBmb250LXNpemVcbikge1xuXG4gICRweC12YWxzOiBudWxsO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcHg6IHNjdXQtc3RyaXAtdW5pdCgkdmFsKSAqIDFweDtcbiAgICAkcHgtdmFsczogYXBwZW5kKCRweC12YWxzLCAkdmFsLWluLXB4KTtcbiAgfVxuICAkcmVtLXZhbHM6IHNjdXQtcmVtKCRwaXhlbHMpO1xuXG4gICN7JHByb3BlcnR5fTogJHB4LXZhbHM7XG4gICN7JHByb3BlcnR5fTogJHJlbS12YWxzO1xuXG59XG5AbWl4aW4gc2N1dC1yZXNldC1ib3JkZXItYm94IHtcbiAgLy8gTWFrZSBldmVyeXRoaW5nIGEgYm9yZGVyLWJveCwgYmVjYXVzZSB3aHkgbm90P1xuICBodG1sIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWFudGlhbGlhcyB7XG4gIC8vIEFudGlhbGlhcyFcbiAgYm9keSB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtc2VtYW50aWNpemUge1xuICAvLyBNYWtlIGhlYWRlcnMgYW5kIDxiPiBzZW1hbnRpYywgbm90IHByZXNlbnRhdGlvbmFsLlxuICBoMSxcbiAgaDIsXG4gIGgzLFxuICBoNCxcbiAgaDUsXG4gIGg2IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogMDtcbiAgfVxuICBiIHtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBvaW50ZXIge1xuICAvLyBDbGlja2FibGUgZm9ybSBlbGVtZW50cyBzaG91bGQgaGF2ZSBhIHBvaW50ZXIuXG4gIGxhYmVsLFxuICBzZWxlY3QsXG4gIG9wdGlvbixcbiAgYnV0dG9uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZm9ybSB7XG4gIGZpZWxkc2V0IHtcbiAgICBib3JkZXI6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgdGV4dGFyZWEge1xuICAgIHJlc2l6ZTogdmVydGljYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYnV0dG9uIHtcbiAgLy8gUmVzZXQgZGVmYXVsdCBidXR0b24gc3R5bGVzLCB3aGljaCBhcmUgbmV2ZXIgdXNlZC5cbiAgYnV0dG9uLFxuICBbdHlwZT1cImJ1dHRvblwiXSxcbiAgW3R5cGU9XCJzdWJtaXRcIl0sXG4gIFt0eXBlPVwicmVzZXRcIl0ge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250OiBpbmhlcml0O1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgICY6Oi1tb3otZm9jdXMtaW5uZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcGFyYWdyYXBoIHtcbiAgLy8gU29tZSBwYXJhZ3JhcGggbWFyZ2lucyBqdXN0IGdldCBpbiB0aGUgd2F5LlxuICBwOmZpcnN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gIH1cbiAgcDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtbWVkaWEge1xuICAvLyBZb3Ugd2FudCB0aGVzZSBlbGVtZW50cyBmbHVpZCwgcHJvYmFibHkuXG4gIGltZyxcbiAgdmlkZW8ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtZmlndXJlIHtcbiAgLy8gUmVtb3ZlIGRlZmF1bHQgbWFyZ2lucy5cbiAgZmlndXJlIHtcbiAgICBtYXJnaW46IDA7XG4gIH1cbn1cblxuLy8gQ2FsbCB0aGVtIGFsbCwgbWludXMgZXhjbHVzaW9ucyFcbkBtaXhpbiBzY3V0LXJlc2V0ICgkZXhjbHVkZTogZmFsc2UpIHtcbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYm9yZGVyLWJveCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJvcmRlci1ib3g7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYW50aWFsaWFzKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYW50aWFsaWFzO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHNlbWFudGljaXplKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtc2VtYW50aWNpemU7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcG9pbnRlcikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBvaW50ZXI7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZm9ybSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZvcm07XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgYnV0dG9uKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYnV0dG9uO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBhcmFncmFwaCkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXBhcmFncmFwaDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBtZWRpYSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LW1lZGlhO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZpZ3VyZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWZpZ3VyZTtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1zZWxlY3RlZCAoXG4gICRhY3RpdmU6IGZhbHNlXG4pIHtcblxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzLFxuICAgICY6YWN0aXZlIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjpob3ZlcixcbiAgICAmOmZvY3VzIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC10cmlhbmdsZSAoXG4gICRkaXJlY3Rpb246IHJpZ2h0LFxuICAkc2l6ZTogMC43NWVtLFxuICAkY29sb3I6IGluaGVyaXRcbikge1xuXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcbiAgLy8gRm9yIGltcHJvdmVkIGFwcGVhcmFuY2UgaW4gc29tZSBXZWJraXQgYnJvd3NlcnNcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuXG4gIC8vIFNldCB1cCBzb21lIHZhcmlhYmxlc1xuICAkd2lkdGg6IG51bGw7XG4gICRoZWlnaHQ6IG51bGw7XG4gICRib3JkZXItd2lkdGhzOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRzaXplKSA9PSBsaXN0IHtcbiAgICAkd2lkdGg6IG50aCgkc2l6ZSwgMSk7XG4gICAgJGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHdpZHRoOiAkc2l6ZTtcbiAgICAkaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikge1xuICAgIC8vIEZvciB1cCBhbmQgZG93biwgd2lkdGggZ2V0cyB0d28gYm9yZGVycyBidXQgaGVpZ2h0IG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBzZWNvbmQgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogJGhlaWdodCAoJHdpZHRoIC8gMik7XG4gIH1cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICAvLyBGb3IgcmlnaHQgYW5kIGxlZnQsIGhlaWdodCBnZXRzIHR3byBib3JkZXJzIGJ1dCB3aWR0aCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgZmlyc3QgYm9yZGVyLXdpZHRoIHZhbHVlIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAkd2lkdGg7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIEZvciByaWdodCB0cmlhbmdsZXMgKHRoZSByZXN0KSwgYm90aCBzaWRlcyBnZXQgdHdvIGJvcmRlcnMsXG4gICAgLy8gc28gZGl2aWRlIGJvdGggYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICgkd2lkdGggLyAyKTtcbiAgfVxuXG4gIGJvcmRlci13aWR0aDogJGJvcmRlci13aWR0aHM7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG5cblxuICAvLyBTVEFOREFSRCBUUklBTkdMRVNcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB1cCB7XG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItdG9wLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93biB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGxlZnQge1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItbGVmdC13aWR0aDogMDtcbiAgICB9XG4gIH1cblxuXG4gIC8vIENPUk5FUiBUUklBTkdMRVNcblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IHRvcC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHRvcC1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIEBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC10cmlhbmdsZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJpYW5nbGU7XG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYWJzb2x1dGVseSAoXG4gICRkaW1lbnNpb25zXG4pIHtcblxuICAkd2lkdGg6IG50aCgkZGltZW5zaW9ucywgMSk7XG4gICRoZWlnaHQ6IG50aCgkZGltZW5zaW9ucywgMik7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkd2lkdGggIT0gbiB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6ICgtJHdpZHRoIC8gMik7XG4gIH1cblxuICBAaWYgJGhlaWdodCAhPSBuIHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogKC0kaGVpZ2h0IC8gMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY2VudGVyLWJsb2NrIChcbiAgJG1heC13aWR0aDogZmFsc2Vcbikge1xuXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIEBpZiAkbWF4LXdpZHRoIHtcbiAgICBtYXgtd2lkdGg6ICRtYXgtd2lkdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jZW50ZXItYmxvY2sge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci1ibG9jaztcbn1cblxuQG1peGluIHNjdXQtY2VudGVyLXRyYW5zZm9ybSAoXG4gICRheGlzOiBmYWxzZSAvLyBvciB4IG9yIHlcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJGF4aXMgIT0geCB7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogYXV0bztcbiAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICB9XG5cbiAgQGlmICRheGlzICE9IHkge1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIH1cblxuICAkdHJhbnNsYXRlLXZhbDogbnVsbDtcblxuICBAaWYgbm90KCRheGlzKSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB4IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWSgtNTAlKTtcbiAgfVxuICBAZWxzZSBpZiAkYXhpcyAhPSB5IHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlWCgtNTAlKTtcbiAgfVxuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgLW1zLXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIHRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0ge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm07XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teCB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh4KTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS15IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG5AbWl4aW4gc2N1dC1maWxsIChcbiAgJHdpZHRoLWhlaWdodDogZmFsc2Vcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgdG9wOiAwO1xuICBAaWYgJHdpZHRoLWhlaWdodCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICB9XG4gIEBlbHNlIHtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1maWxsIHtcbiAgQGluY2x1ZGUgc2N1dC1maWxsO1xufVxuQG1peGluIHNjdXQtbGlzdC1jdXN0b20gKFxuICAkY29udGVudDogXCJcXDIwMjJcIixcbiAgJG1hcmtlci13aWR0aDogMC43NWVtLFxuICAkcGFkOiAwLFxuICAkbm8tbWFyZ2luOiBmYWxzZVxuKSB7XG5cbiAgJGNvbnRlbnQtdmFsOiBudWxsO1xuICAkY291bnRlcjogaW5kZXgoJGNvbnRlbnQsIGNvdW50KTtcbiAgQGlmICRjb3VudGVyIHtcbiAgICBAaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAzIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIsIG50aCgkY29udGVudCwgMykpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDIge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJGNvbnRlbnQtdmFsOiAkY29udGVudDtcbiAgfVxuXG4gIHBhZGRpbmctbGVmdDogJG1hcmtlci13aWR0aCArICRwYWQ7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgJiA+IGxpIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmICRjb3VudGVyIHtcbiAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBzY3V0bGlzdGNvdW50ZXI7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICRjb250ZW50LXZhbDtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwO1xuICAgICAgbGVmdDogLSRtYXJrZXItd2lkdGg7XG4gICAgICB3aWR0aDogJG1hcmtlci13aWR0aDtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LWZsb2F0ZWRgLCB3aGljaCBkZXBlbmRzIGluIHR1cm4gb24gYGxpc3QtdW5zdHlsZWRgIGFuZCBgY2xlYXJmaXhgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWRpdmlkZWQgKFxuICAkZGl2aWRlcjogXCJ8XCIsXG4gICRzcGFjZTogMC41ZW0sXG4gICRkaXI6IGxlZnQsXG4gICRoZWlnaHQ6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZCgkZGlyOiAkZGlyLCAkbm8tbWFyZ2luOiAkbm8tbWFyZ2luKTtcblxuICAkcHNldWRvOiBpZigkZGlyID09IGxlZnQsICdiZWZvcmUnLCAnYWZ0ZXInKTtcblxuICAvLyBJZiBhbiBleHBsaWNpdCBoZWlnaHQgaXMgcGFzc2VkLFxuICAvLyB0aGluZ3MgYXJlIGRpZmZlcmVudDogQWxsIDxsaT5zXG4gIC8vIG5lZWQgdGhlIHBzZXVkby1lbGVtZW50ICh0byBmb3JjZSBoZWlnaHQpLFxuICAvLyBidXQgdGhlIGZpcnN0J3MgbXVzdCBiZSBoaWRkZW4uXG5cbiAgQGlmICRoZWlnaHQge1xuICAgICYgPiBsaSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgfVxuICAgICYgPiBsaTojeyRwc2V1ZG99IHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICAmID4gbGk6Zmlyc3QtY2hpbGQ6I3skcHNldWRvfSB7XG4gICAgICB3aWR0aDogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG5cbiAgJiA+IGxpICsgbGk6I3skcHNldWRvfSB7XG4gICAgQGlmIG5vdCgkaGVpZ2h0KSB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogJHNwYWNlO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1iYXIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZDtcbn1cblxuJXNjdXQtbGlzdC1icmVhZGNydW1iIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoXCIvXCIpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtaW5saW5lIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWlubGluZSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1pbmxpbmU7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1wdW5jdHVhdGVkIChcbiAgJGRpdmlkZXI6IFwiLCBcIixcbiAgJGRpc3BsYXk6IGlubGluZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuXG4gICYgPiBsaSB7XG4gICAgZGlzcGxheTogJGRpc3BsYXk7XG4gICAgJjpub3QoOmxhc3QtY2hpbGQpOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtY29tbWEge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtcHVuY3R1YXRlZDtcbn1cbkBtaXhpbiBzY3V0LW1hcmdpbiAoXG4gICRtYXJnaW5cbikge1xuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMSBhbmQgJG1hcmdpbiAhPSBuIHtcbiAgICBtYXJnaW4tdG9wOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbjtcbiAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luO1xuICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAyIHtcbiAgICAkbWFyZ2luLXk6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICBAaWYgJG1hcmdpbi15ICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15O1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMyB7XG4gICAgJG1hcmdpbi15LXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4teS1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICBAaWYgJG1hcmdpbi15LXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teS10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXktYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDQge1xuICAgICRtYXJnaW4tdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi1yaWdodDogbnRoKCRtYXJnaW4sIDIpO1xuICAgICRtYXJnaW4tYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgJG1hcmdpbi1sZWZ0OiBudGgoJG1hcmdpbiwgNCk7XG4gICAgQGlmICRtYXJnaW4tdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi10b3A7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXJpZ2h0ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tbGVmdCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLWxlZnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXBhZGRpbmcgKFxuICAkcGFkZGluZ1xuKSB7XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMSBhbmQgJHBhZGRpbmcgIT0gbiB7XG4gICAgcGFkZGluZy10b3A6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMiB7XG4gICAgJHBhZGRpbmcteTogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgIEBpZiAkcGFkZGluZy15ICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXk7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDMge1xuICAgICRwYWRkaW5nLXktdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmcteS1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgQGlmICRwYWRkaW5nLXktdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy15LWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15LWJvdHRvbTtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSA0IHtcbiAgICAkcGFkZGluZy10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmctcmlnaHQ6IG50aCgkcGFkZGluZywgMik7XG4gICAgJHBhZGRpbmctYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgICRwYWRkaW5nLWxlZnQ6IG50aCgkcGFkZGluZywgNCk7XG4gICAgQGlmICRwYWRkaW5nLXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1yaWdodCAhPSBuIHtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXJpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLWJvdHRvbTtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWxlZnQgIT0gbiB7XG4gICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLWxlZnQ7XG4gICAgfVxuICB9XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWFic29sdXRlIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtYWJzb2x1dGUge1xuICBAaW5jbHVkZSBzY3V0LWFic29sdXRlO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1maXhlZCAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWZpeGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1maXhlZDtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtcmVsYXRpdmUgKFxuICAkY29vcmRpbmF0ZXM6IG4gbiBuIG5cbikge1xuXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuQG1peGluIHNjdXQtcmF0aW8tYm94IChcbiAgJHJhdGlvOiAxLzFcbikge1xuXG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAvLyBUaGUgY29udGFpbmVyJ3MgaGVpZ2h0LCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlXG4gIC8vIGNvbnRhaW5lcidzIHdpZHRoLCBpcyBzZXQgYnkgYXNzaWduaW5nXG4gIC8vIHBhZGRpbmctdG9wIHRvIGEgcHNldWRvLWVsZW1lbnQuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLXRvcDogKDEgLyAkcmF0aW8pICogMTAwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXJhdGlvLWJveCB7XG4gIEBpbmNsdWRlIHNjdXQtcmF0aW8tYm94O1xufVxuQG1peGluIHNjdXQtc2l6ZShcbiAgJHNpemVcbikge1xuXG4gIEBpZiBsZW5ndGgoJHNpemUpID09IDEge1xuICAgIHdpZHRoOiAgJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJHNpemUpID09IDIge1xuICAgIHdpZHRoOiAgbnRoKCRzaXplLCAxKTtcbiAgICBoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cblxufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBtaW4taGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbi1ib3R0b206IC0kaGVpZ2h0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICN7JHdyYXBwZXJ9OmFmdGVyLFxuICAjeyRmb290ZXJ9IHtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIH1cblxufVxuXG4vLyBkZXByZWNhdGVkXG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKXtcbiAgQGluY2x1ZGUgc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkKCRoZWlnaHQsICR3cmFwcGVyLCAkZm9vdGVyKTtcbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZmx1aWQgKFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgI3skZm9vdGVyfSB7XG4gICAgZGlzcGxheTogdGFibGUtcm93O1xuICAgIGhlaWdodDogMXB4O1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItaWIgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIC8vIFRoZSBpbm5lciBlbGVtZW50IGlzIHZlcnRpY2FsbHkgY2VudGVyZWRcbiAgLy8gYnkgbWlkZGxlLWFsaWduaW5nIGl0IHdpdGggYW4gaW5saW5lIHBzZXVkby1lbGVtZW50XG4gIC8vIHdob3NlIGhlaWdodCBpcyAxMDAlLlxuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAvLyBBIHNtYWxsIG5lZ2F0aXZlIHJpZ2h0IG1hcmdpbiBpcyBzZXRcbiAgICAvLyB0byBhY2NvdW50IGZvciB0aGUgZGVmYXVsdFxuICAgIC8vIHdvcmQtc3BhY2luZyBvZiBpbmxpbmUtYmxvY2suXG4gICAgbWFyZ2luLXJpZ2h0OiAtMC4yNWVtO1xuICB9XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXZjZW50ZXItaWIge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItaWI7XG59XG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItbGggKFxuICAkaGVpZ2h0XG4pIHtcblxuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIGxpbmUtaGVpZ2h0OiAkaGVpZ2h0O1xuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLXRkIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICBkaXNwbGF5OiB0YWJsZTtcblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIH1cbiAgfVxuXG59XG5cblxuJXNjdXQtdmNlbnRlci10ZCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10ZDtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LWNlbnRlci10cmFuc2Zvcm1cblxuQG1peGluIHNjdXQtdmNlbnRlci10dCAoKSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuJXNjdXQtdmNlbnRlci10dCB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci10dDtcbn1cbi8vIHNwYWNlXG4kc2N1dC1zcGFjZTogXCJcXDAwMjBcIjtcbi8vIG5vbi1icmVha2luZyBzcGFjZVxuJHNjdXQtbmJzcDogXCJcXDAwYTBcIjtcblxuLy8gcXVvdGF0aW9uIG1hcmtcbiRzY3V0LXF1b3Q6IFwiXFwwMDIyXCI7XG4vLyBsZWZ0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtbHNxdW86IFwiXFwyMDE4XCI7XG4vLyByaWdodCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LXJzcXVvOiBcIlxcMjAxOVwiO1xuLy8gbGVmdCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LWxkcXVvOiBcIlxcMjAxQ1wiO1xuLy8gcmlnaHQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1yZHF1bzogXCJcXDIwMURcIjtcbi8vIGxlZnQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sc2FxdW86IFwiXFwyMDM5XCI7XG4vLyByaWdodCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJzYXF1bzogXCJcXDIwM0FcIjtcbi8vIGxlZnQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1sYXF1bzogXCJcXDAwYWJcIjtcbi8vIHJpZ2h0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcmFxdW86IFwiXFwwMGJiXCI7XG5cbi8vIGVtIGRhc2ggKG11dHRvbilcbiRzY3V0LW1kYXNoOiBcIlxcMjAxNFwiO1xuLy8gZW4gZGFzaCAobnV0KVxuJHNjdXQtbmRhc2g6IFwiXFwyMDEzXCI7XG4vLyBoeXBoZW5cbiRzY3V0LWh5cGhlbjogXCJcXDIwMTBcIjtcblxuLy8gYW1wZXJzYW5kXG4kc2N1dC1hbXA6IFwiXFwwMDI2XCI7XG4vLyBncmVhdGVyIHRoYW5cbiRzY3V0LWd0OiBcIlxcMDAzZVwiO1xuLy8gbGVzcyB0aGFuXG4kc2N1dC1sdDogXCJcXDAwM2NcIjtcbi8vIHRpbWVzXG4kc2N1dC10aW1lczogXCJcXDAwRDdcIjtcbi8vIGJpZyB0aW1lc1xuJHNjdXQtYmlndGltZXM6IFwiXFwyNzE1XCI7XG4vLyBjaGVja21hcmtcbiRzY3V0LWNoZWNrbWFyazogXCJcXDI3MTNcIjtcblxuLy8gc2VjdGlvbiBzaWduIChkb3VibGUgUywgaHVycmljYW5lLCBzZWN0aW9uYWwgc3ltYm9sLCB0aGUgbGVnYWwgZG91Z2hudXQsIHNpZ251bSBzZWN0aW9uaXMpXG4kc2N1dC1zZWN0OiBcIlxcMDBhN1wiO1xuLy8gcGFyYWdyYXBoIHN5bWJvbCAocGlsY3JvdylcbiRzY3V0LXBhcmE6IFwiXFwwMGI2XCI7XG5cbi8vIG1pZGRvdCAoaW50ZXJwdW5jdCwgaW50ZXJwb2ludClcbiRzY3V0LW1pZGRvdDogXCJcXDAwYjdcIjtcbi8vIG8tc2xhc2ggKHNsYXNoZWQgbylcbiRzY3V0LW9zbGFzaDogXCJcXDAwZjhcIjtcbi8vIGJ1bGxldFxuJHNjdXQtYnVsbDogXCJcXDIwMjJcIjtcbi8vIHdoaXRlIGJ1bGxldFxuJHNjdXQtd2hpYnVsbDogXCJcXDI1RTZcIjtcbi8vIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LWhlbGxpcDogXCJcXDIwMjZcIjtcbi8vIHZlcnRpY2FsIGVsbGlwc2lzXG4kc2N1dC12ZWxsaXA6IFwiXFwyMkVFXCI7XG4vLyBtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXNcbiRzY3V0LW1pZGhlbGxpcDogXCJcXDIyRUZcIjtcblxuLy8gdXAtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXV0cmk6IFwiXFwyNWIyXCI7XG4vLyBkb3duLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1kdHJpOiBcIlxcMjViY1wiO1xuLy8gbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtbHRyaTogXCJcXDI1YzBcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1ydHJpOiBcIlxcMjViNlwiO1xuLy8gdXAtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXVzdHJpOiBcIlxcMjViNFwiO1xuLy8gZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtZHN0cmk6IFwiXFwyNWJlXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1sc3RyaTogXCJcXDI1YzJcIjtcbi8vIHJpZ2h0LXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1yc3RyaTogXCJcXDI1YjhcIjtcbi8vIGRpYW1vbmRcbiRzY3V0LWRpYW1vbmQ6IFwiXFwyNWM2XCI7XG4vLyBmaXNoZXllXG4kc2N1dC1maXNoZXllOiBcIlxcMjVjOVwiO1xuLy8gYnVsbHNleWVcbiRzY3V0LWJ1bGxzZXllOiBcIlxcMjVjZVwiO1xuLy8gY2lyY2xlXG4kc2N1dC1jaXJjbGU6IFwiXFwyNWNmXCI7XG4vLyB3aGl0ZSBjaXJjbGVcbiRzY3V0LXdoaXRlY2lyY2xlOiBcIlxcMjVjYlwiO1xuLy8gc3F1YXJlXG4kc2N1dC1zcXVhcmU6IFwiXFwyNWEwXCI7XG4vLyB3aGl0ZSBzcXVhcmVcbiRzY3V0LXdoaXRlc3F1YXJlOiBcIlxcMjVhMVwiO1xuLy8gc21hbGwgc3F1YXJlXG4kc2N1dC1zc3F1YXJlOiBcIlxcMjVhYVwiO1xuLy8gc21hbGwgd2hpdGUgc3F1YXJlXG4kc2N1dC1zd2hpdGVzcXVhcmU6IFwiXFwyNWFiXCI7XG5cbi8vIGdlbmVyYWwgY3VycmVuY3lcbiRzY3V0LWN1cnJlbmN5OiBcIlxcMDBhNFwiO1xuLy8gY2VudFxuJHNjdXQtY2VudDogXCJcXDAwYTJcIjtcbi8vIGRvbGxhclxuJHNjdXQtZG9sbGFyOiBcIlxcMDAyNFwiO1xuLy8gcG91bmRcbiRzY3V0LXBvdW5kOiBcIlxcMDBhM1wiO1xuLy8gZXVyb1xuJHNjdXQtZXVybzogXCJcXDIwYWNcIjtcbi8vIHllblxuJHNjdXQteWVuOiBcIlxcMDBhNVwiO1xuLy8gcnVwZWVcbiRzY3V0LXJ1cGVlOiBcIlxcMjBCOVwiO1xuQGZ1bmN0aW9uIG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpIHtcbiAgLy8gUmV0dXJuIHRoZSBsaXN0IG9mIGBzcmNgIHZhbHVlcywgaW4gb3JkZXIsIHRoYXRcbiAgLy8gYSBnb29kIGBAZm9udC1mYWNlYCB3aWxsIG5lZWQsIGluY2x1ZGluZyBvbmx5XG4gIC8vIHRob3NlIGZvcm1hdHMgc3BlY2lmaWVkIGluIHRoZSBsaXN0IGAkZm9ybWF0c2AuXG4gICRyZXN1bHQ6ICgpO1xuICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICRlb3QtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90PyNpZWZpeCcpIGZvcm1hdCgnZW1iZWRkZWQtb3BlbnR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJGVvdC12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYyKSB7XG4gICAgJHdvZmYyLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZjItdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmKSB7XG4gICAgJHdvZmYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZicpIGZvcm1hdCgnd29mZicpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkd29mZi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHR0Zikge1xuICAgICR0dGYtdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0udHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkdHRmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgc3ZnKSB7XG4gICAgJHN2Zy12YWw6IHVybCgnI3skZmlsZS1wYXRofS5zdmcjI3skZm9udC1mYW1pbHl9JykgZm9ybWF0KCdzdmcnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHN2Zy12YWwsIGNvbW1hKTtcbiAgfVxuICBAcmV0dXJuICRyZXN1bHQ7XG59XG5cbkBtaXhpbiBzY3V0LWZvbnQtZmFjZSAoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmdcbikge1xuXG4gIEBpZiBpbmRleCgnaXRhbGljJyAnb2JsaXF1ZScsICR3ZWlnaHQpIHtcbiAgICAkc3R5bGU6ICR3ZWlnaHQ7XG4gICAgJHdlaWdodDogbm9ybWFsO1xuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG5cbiAgICBAaWYgaW5kZXgoJGZvcm1hdHMsIGVvdCkge1xuICAgICAgc3JjOiB1cmwoJyN7JGZpbGUtcGF0aH0uZW90Jyk7XG4gICAgfVxuICAgIHNyYzogbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSk7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oYW5naW5nLWluZGVudCAoXG4gICRpbmRlbnQ6IDFlbVxuKSB7XG5cbiAgLy8gcGFkZGluZy1sZWZ0IGNyZWF0ZXMgdGhlIGluZGVudCxcbiAgLy8gd2hpbGUgdGV4dC1pbmRlbnQgcHVsbHMgdGhlIGZpcnN0IGxpbmVcbiAgLy8gYmFjayB0byB0aGUgZWRnZS5cblxuICBwYWRkaW5nLWxlZnQ6ICRpbmRlbnQ7XG4gIHRleHQtaW5kZW50OiAtJGluZGVudDtcblxufVxuXG4lc2N1dC1oYW5naW5nLWluZGVudCB7XG4gIEBpbmNsdWRlIHNjdXQtaGFuZ2luZy1pbmRlbnQ7XG59XG5AbWl4aW4gc2N1dC1pbmRlbnRlZC1wcyAoXG4gICRpbmRlbnQ6IDEuNWVtLFxuICAkbm8tZmlyc3QtaW5kZW50OiB0cnVlXG4pIHtcblxuICBwIHtcbiAgICBtYXJnaW46IDA7XG4gICAgdGV4dC1pbmRlbnQ6ICRpbmRlbnQ7XG4gIH1cblxuICBAaWYgJG5vLWZpcnN0LWluZGVudCB7XG4gICAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICAgIHRleHQtaW5kZW50OiAwO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWluZGVudGVkLXBzIHtcbiAgQGluY2x1ZGUgc2N1dC1pbmRlbnRlZC1wcztcbn1cbkBtaXhpbiBzY3V0LWtleS12YWwgKFxuICAkZGl2aWRlcjogXCI6XCIsXG4gICRwYWQ6IDAuMjVlbSxcbiAgJGluZGVudDogMWVtLFxuICAkc3BhY2luZzogMCxcbiAgJHBhZC1sZWZ0OiAwXG4pIHtcblxuICAmID4gZHQge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRwYWQ7XG4gICAgICBAaWYgJHBhZC1sZWZ0ICE9IDAge1xuICAgICAgICBtYXJnaW4tbGVmdDogJHBhZC1sZWZ0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICYgPiBkZCB7XG4gICAgbWFyZ2luLWxlZnQ6ICRpbmRlbnQ7XG4gICAgQGlmICRzcGFjaW5nICE9IDAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQta2V5LXZhbCB7XG4gIEBpbmNsdWRlIHNjdXQta2V5LXZhbDtcbn1cbkBtaXhpbiBzY3V0LWxpbmstYmIgKFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR3aWR0aDogMXB4XG4pIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgYm9yZGVyLWJvdHRvbS13aWR0aDogJHdpZHRoO1xuICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICB9XG5cbn1cblxuJXNjdXQtbGluay1iYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay1iYjtcbn1cbi8vIFNDVVQgTElOSyBVTlNUWUxFRFxuLy8gaHR0cDovL2RhdmlkdGhlY2xhcmsuZ2l0aHViLmlvL3NjdXQvI2xpbmstdW5zdHlsZWRcblxuQG1peGluIHNjdXQtbGluay11bnN0eWxlZCgpIHtcblxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGNvbG9yOiBpbmhlcml0O1xuXG59XG5cbiVzY3V0LWxpbmstdW5zdHlsZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstdW5zdHlsZWQoKTtcbn1cblxuQG1peGluIHNjdXQtcmV2ZXJzZS1pdGFsaWNzIChcbiAgJGVsZW1lbnRzOiBudWxsXG4pIHtcblxuICAkZWxlbWVudC1saXN0OiBlbSwgY2l0ZSwgaTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICAje2pvaW4oJGVsZW1lbnQtbGlzdCwgJGVsZW1lbnRzKX0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgfVxuXG59XG5cbiVzY3V0LXJldmVyc2UtaXRhbGljcyB7XG4gIEBpbmNsdWRlIHNjdXQtcmV2ZXJzZS1pdGFsaWNzO1xufVxuXG5AbWl4aW4gc2N1dC1zaWRlLWxpbmVkIChcbiAgJGhlaWdodDogMXB4LFxuICAkc3BhY2U6IDAuNWVtLFxuICAkY29sb3I6IGluaGVyaXQsXG4gICRzdHlsZTogc29saWQsXG4gICR2LWFkanVzdDogZmFsc2UsXG4gICRkb3VibGU6IGZhbHNlXG4pIHtcblxuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICY6YmVmb3JlLFxuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogNTAlO1xuXG4gICAgYm9yZGVyLXRvcC1zdHlsZTogJHN0eWxlO1xuICAgIGJvcmRlci10b3Atd2lkdGg6ICRoZWlnaHQ7XG5cbiAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIH1cblxuICAgIEBpZiAkdi1hZGp1c3QgIT0gZmFsc2Uge1xuICAgICAgYm90dG9tOiAkdi1hZGp1c3Q7XG4gICAgfVxuXG4gICAgQGlmICRkb3VibGUgIT0gZmFsc2Uge1xuICAgICAgaGVpZ2h0OiAkZG91YmxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGhlaWdodDtcbiAgICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmOmJlZm9yZSB7XG4gICAgcmlnaHQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tbGVmdDogLTUwJTtcbiAgfVxuICAmOmFmdGVyIHtcbiAgICBsZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAtNTAlO1xuICB9XG5cbn1cblxuJXNjdXQtc2lkZS1saW5lZCB7XG4gIEBpbmNsdWRlIHNjdXQtc2lkZS1saW5lZDtcbn1cbkBtaXhpbiBzY3V0LXRydW5jYXRlIHtcblxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblxufVxuXG4lc2N1dC10cnVuY2F0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtdHJ1bmNhdGU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wbGFjZWhvbGRlcnNcIjtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBpbXBvcnQgXCJ0b29sa2l0L2NsZWFyZml4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jb2xvcnNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ZvbnRzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9pbnRyaW5zaWMtcmF0aW9cIjtcbkBpbXBvcnQgXCJ0b29sa2l0L25lc3RlZC1jb250ZXh0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9wYXJhbGxheFwiO1xuQGltcG9ydCBcInRvb2xraXQvcnRsXCI7XG5AaW1wb3J0IFwidG9vbGtpdC90YXJnZXRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RyaWFuZ2xlXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9jZW50ZXJcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3ZpZXdwb3J0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC91bmRlcmxpbmVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2FydFwiO1xuQGltcG9ydCBcInRvb2xraXQvc2V0LW11bHRpcGxlXCI7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuJFRvb2xraXQtU2V0dGluZ3M6IChcbiAgJ2NsZWFyZml4IGV4dGVuZCc6IGZhbHNlLFxuICAnY29sb3Igc3RhY2sgYW1vdW50cyc6IDI1JSA1MCUgNzUlIDg1JSA5MCUsXG4gICd0aW50IHNoYWRlIGFtb3VudHMnOiA3NSUgNTAlIDI1JSxcbiAgJ3RpbnQgY29sb3InOiAjZmZmLFxuICAnc2hhZGUgY29sb3InOiAjMDAwLFxuICAnY29sb3Igc2NhbGUgc3RlcHMnOiA2LFxuICAnbGlnYXR1cmUgZXh0ZW5kJzogZmFsc2UsXG4gICdmb250IGZhY2Ugd2VpZ2h0Jzogbm9ybWFsLFxuICAnZm9udCBmYWNlIHN0eWxlJzogbm9ybWFsLFxuICAnZm9udCBmYWNlIGlubGluZSB3b2ZmJzogZmFsc2UsXG4gICdpY29uIGZvbnQgZXh0ZW5kJzogZmFsc2UsXG4gICdpY29uIGZvbnQgc3BlYWsnOiBmYWxzZSxcbiAgJ2ZhZGUgaW4gZHVyYXRpb24nOiAxcyxcbiAgJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcyc6ICcud2YtbG9hZGluZycsXG4gICdmYWRlIGluIGV4dGVuZCc6IGZhbHNlLFxuICAnaW50cmluc2ljIHJhdGlvJzogMTYvOSxcbiAgJ2ludHJpbnNpYyByYXRpbyB3aWR0aCc6IDEwMCUsXG4gICdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnOiAnPiAqJyxcbiAgJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbic6IHRvcCxcbiAgJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnOiBmYWxzZSxcbiAgJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJzogMTAwJSxcbiAgJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJzogbGVmdCxcbiAgJ3RyaWFuZ2xlIGNvbG9yJzogIzAwMCxcbiAgJ3RyaWFuZ2xlIGhlaWdodCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIHdpZHRoJzogMWVtLFxuICAndHJpYW5nbGUgYW5nbGUnOiAwLFxuICAncGFyYWxsYXggcGVyc3BlY3RpdmUnOiAxLFxuICAncGFyYWxsYXggZWxlbWVudCc6ICdib2R5JyxcbiAgJ3BhcmFsbGF4IGlvcyc6IHRydWUsXG4gICdwYXJhbGxheCBkaXN0YW5jZSc6IDAsXG4gICd2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ3ZlcnRpY2FsIGV4dGVuZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCc6IDUwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgZXh0ZW5kJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnOiA1MCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnOiBmYWxzZSxcbiAgJ3VuZGVybGluZSBiYWNrZ3JvdW5kJzogI2ZmZixcbiAgJ3VuZGVybGluZSBjb2xvcic6ICMwMGUsXG4gICd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycyc6IHRydWUsXG4gICd1bmRlcmxpbmUgZGlzdGFuY2UnOiAxLFxuICAndW5kZXJsaW5lIHdpZHRoJzogMixcbiAgJ3VuZGVybGluZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2FydCBwaXhlbCBzaXplJzogMXB4LFxuICAnYXJ0IGNvbG9yJzogYmxhY2ssXG4gICdhcnQgYm9yZGVyIHJhZGl1cyc6IDAlXG4pO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE5ldyBTZXR0aW5ncyBtb2R1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2xvYmFsXG4kR2xvYmFsU2V0dGluZ3M6ICRUb29sa2l0LVNldHRpbmdzICFkZWZhdWx0O1xuLy8gVXNlclxuJFVzZXJTZXR0aW5nczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVXNlciBTZXR0aW5nIEV4aXN0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICBAaWYgbWFwLWhhcy1rZXkoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkUmV0dXJuO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWhhcygkc2V0dGluZykge1xuICBAcmV0dXJuIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgR2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWdldCgkc2V0dGluZykge1xuICBAaWYgdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykge1xuICAgIEByZXR1cm4gbWFwLWdldCgkVXNlclNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkR2xvYmFsU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQtbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICR2YWx1ZXM6ICgpO1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICR2YWx1ZXM6IG1hcC1tZXJnZSgkdmFsdWVzLCAoJHNldHRpbmc6IHNldHRpbmctZ2V0KCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJHZhbHVlcztcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1nZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWdldCgkc2V0dGluZyk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5ncyBTZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICgkc2V0dGluZzogJHZhbHVlKSkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAkc2V0dGluZ3MpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEByZXR1cm4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBSZW1vdmUgU2V0dGluZ1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkUmV0dXJuOiAoKTtcblxuICBAZWFjaCAkS2V5LCAkVmFsdWUgaW4gJFVzZXJTZXR0aW5ncyB7XG4gICAgJFJldHVybjogaWYoJHNldHRpbmcgPT0gJEtleSwgJFJldHVybiwgbWFwLW1lcmdlKCRSZXR1cm4sICgkS2V5OiAkVmFsdWUpKSk7XG4gIH1cblxuICAkVXNlclNldHRpbmdzOiAkUmV0dXJuICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJGNsZWFyLXRoZS1zZXR0aW5nczogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG4gIH1cbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1yZXNldCgpIHtcbiAgJFVzZXJTZXR0aW5nczogKCkgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhcigkc2V0dGluZykge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzLi4uKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXItbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuQG1peGluIHNldHRpbmctcmVzZXQoKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctcmVzZXQoKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1yZXNldCgkc2V0dGluZykge1xuICBAaW5jbHVkZSBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIFBpY2tcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctcGljaygkc2V0dGluZywgJGlucHV0KSB7XG4gIEByZXR1cm4gaWYoJGlucHV0ICE9IG51bGwsICRpbnB1dCwgc2V0dGluZy1nZXQoJHNldHRpbmcpKTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcGljay1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nLCAkaW5wdXQgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiBzZXR0aW5nLXBpY2soJGlucHV0LCAkc2V0dGluZykpKTtcbiAgfVxuXG4gIEByZXR1cm4gJFJldHVybjtcbn0iLCIkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogKCkgIWRlZmF1bHQ7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUGxhY2Vob2xkZXIgR2V0L1NldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKSB7XG4gICR1bmlxdWUtaWQ6IHVuaXF1ZS1pZCgpO1xuICAkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVyczogbWFwLW1lcmdlKCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAoJGlkOiAkdW5pcXVlLWlkKSkgIWdsb2JhbDtcbiAgQHJldHVybiAkdW5pcXVlLWlkO1xufVxuXG5AZnVuY3Rpb24gdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKSB7XG4gIEByZXR1cm4gbWFwLWdldCgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgJGlkKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHZW5lcmF0ZSBQbGFjZWhvbGRlciBDbGFzcyBhbmQgRXh0ZW5kXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpO1xuXG4gIEBpZiAkcGxhY2Vob2xkZXItaWQgPT0gbnVsbCB7XG4gICAgJHBsYWNlaG9sZGVyLWlkOiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpO1xuICAgIEBhdC1yb290ICUjeyRwbGFjZWhvbGRlci1pZH0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBleHRlbmQgJSN7JHBsYWNlaG9sZGVyLWlkfTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTdGF0aWMgTWl4aW4gSGVscGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBtaXhpbi1kcnllcigkaWQsICRleHRlbmQ6IHRydWUpIHtcbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIE1vZGVybiBDbGVhcmZpeCBNaXhpblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY2xlYXJmaXgoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdjbGVhcmZpeCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NsZWFyZml4Jykge1xuICAgICAgQGluY2x1ZGUgY2xlYXJmaXgoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbXBhc3MgRXh0ZW5zaW9uIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRpbnQgYW5kIFNoYWRlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkY29sb3IsICRhbW91bnQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEx1bWFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGx1bWEoJGNvbG9yKSB7XG4gIEByZXR1cm4gKHJlZCgkY29sb3IpICogLjI5OSkgKyAoZ3JlZW4oJGNvbG9yKSAqIC41ODcpICsgKGJsdWUoJGNvbG9yKSAqIC4xMTQpO1xufVxuXG5AZnVuY3Rpb24gbHVtYS1ndGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA+PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtbHRlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPD0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWRpZmYoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAcmV0dXJuIGx1bWEoJGNvbG9yMSkgLSBsdW1hKCRjb2xvcjIpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFN0YWNrc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc3RhY2soJG1haW4sICRzZWNvbmRhcnksICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgnY29sb3Igc3RhY2sgYW1vdW50cycpO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMSB7XG4gICAgJGFtb3VudHM6IG50aCgkYW1vdW50cywgMSk7XG4gIH1cblxuICAkc3RhY2s6ICRtYWluO1xuXG4gIEBlYWNoICRhbW91bnQgaW4gJGFtb3VudHMge1xuICAgICRzdGFjazogam9pbigkc3RhY2ssIG1peCgkc2Vjb25kYXJ5LCBudGgoJHN0YWNrLCAxKSwgJGFtb3VudCkpO1xuICB9XG5cbiAgQHJldHVybiAkc3RhY2s7XG59XG5cbi8vIFRpbnQgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiBzaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSk7XG4gIH1cbn1cblxuLy8gVGludC9TaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICAkY29sb3JzOiAoKTtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCd0aW50IHNoYWRlIGFtb3VudHMnKTtcbiAgfVxuICAkbGVuZ3RoOiBsZW5ndGgoJGFtb3VudHMpO1xuXG4gIC8vIFNoYWRlc1xuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRsZW5ndGgge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCBzaGFkZSgkY29sb3IsIG50aCgkYW1vdW50cywgJGkpKSk7XG4gIH1cblxuICAvLyBCYXNlXG4gICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCAkY29sb3IpO1xuXG4gIC8vIFRpbnRzXG4gIEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggJGxlbmd0aCAtIDEge1xuICAgICRjb2xvcnM6IGFwcGVuZCgkY29sb3JzLCB0aW50KCRjb2xvciwgbnRoKCRhbW91bnRzLCAkbGVuZ3RoIC0gJGkpKSk7XG4gIH1cblxuICBAcmV0dXJuICRjb2xvcnM7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU2NhbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zY2FsZSgkbWFpbiwgJHNlY29uZGFyeSwgJHN0ZXBzOiBudWxsKSB7XG4gICRzdGVwczogaWYoJHN0ZXBzICE9IG51bGwsICRzdGVwcywgdG9vbGtpdC1nZXQoJ2NvbG9yIHNjYWxlIHN0ZXBzJykpO1xuXG4gICRsaXN0OiAkbWFpbjtcblxuICAkcmVkMTogcmVkKCRtYWluKTtcbiAgJHJlZDI6IHJlZCgkc2Vjb25kYXJ5KTtcbiAgJHJlZC1kaWZmOiAoKCRyZWQxIC0gJHJlZDIpIC8gKCgkc3RlcHMgLSAxKSkpO1xuXG4gICRodWUxOiBodWUoJG1haW4pO1xuICAkaHVlMjogaHVlKCRzZWNvbmRhcnkpO1xuICBAaWYgKCRodWUyICsgMzU5IC0gJGh1ZTEpIDwgYWJzKCRodWUxIC0gJGh1ZTIpIHtcbiAgICAkaHVlMjogJGh1ZTIgKyAzNTk7XG4gIH1cbiAgJGh1ZS1kaWZmOiAoJGh1ZTIgLSAkaHVlMSkgLyAoJHN0ZXBzIC0gMSk7XG5cbiAgJHNhdDE6IHNhdHVyYXRpb24oJG1haW4pO1xuICAkc2F0Mjogc2F0dXJhdGlvbigkc2Vjb25kYXJ5KTtcbiAgJHNhdC1kaWZmOiAwO1xuICBAaWYgJHNhdDEgPiAkc2F0MiB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDIgLSAkc2F0MSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRzYXQtZGlmZjogKCRzYXQxIC0gJHNhdDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGx0ZTE6IGxpZ2h0bmVzcygkbWFpbik7XG4gICRsdGUyOiBsaWdodG5lc3MoJHNlY29uZGFyeSk7XG4gICRsdGUtZGlmZjogMDtcbiAgQGlmICRsdGUxID4gJGx0ZTIge1xuICAgICRsdGUtZGlmZjogKCRsdGUyIC0gJGx0ZTEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMSAtICRsdGUyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRhbHAxOiBhbHBoYSgkbWFpbik7XG4gICRhbHAyOiBhbHBoYSgkc2Vjb25kYXJ5KTtcbiAgJGFscC1kaWZmOiAwO1xuICBAaWYgJGFscDEgPiAkYWxwMiB7XG4gICAgJGFscC1kaWZmOiAoJGFscDIgLSAkYWxwMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRhbHAtZGlmZjogKCRhbHAxIC0gJGFscDIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGh1ZS1ob2xkOiAkaHVlMTtcbiAgJHNhdC1ob2xkOiAkc2F0MTtcbiAgJGx0ZS1ob2xkOiAkbHRlMTtcbiAgJGFscC1ob2xkOiAkYWxwMTtcbiAgJGNvbG9yLWhvbGQ6IDA7XG5cbiAgQGZvciAkaSBmcm9tIDIgdGhyb3VnaCAkc3RlcHMge1xuICAgICRodWUtaG9sZDogJGh1ZS1ob2xkICsgJGh1ZS1kaWZmO1xuICAgICRzYXQtaG9sZDogJHNhdC1ob2xkICsgJHNhdC1kaWZmO1xuICAgICRsdGUtaG9sZDogJGx0ZS1ob2xkICsgJGx0ZS1kaWZmO1xuICAgICRhbHAtaG9sZDogJGFscC1ob2xkICsgJGFscC1kaWZmO1xuXG4gICAgJGNvbG9yLWhvbGQ6IGhzbGEoJGh1ZS1ob2xkLCAkc2F0LWhvbGQsICRsdGUtaG9sZCwgJGFscC1ob2xkKTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkY29sb3ItaG9sZCk7XG4gIH1cblxuICBAcmV0dXJuICRsaXN0O1xufVxuXG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEVuYWJsZSBsaWdhdHVyZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdsaWdhdHVyZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdlbmFibGUgbGlnYXR1cmVzJykge1xuICAgICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcztcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYT0xLCBkbGlnPTFcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbXMtZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1vLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiLFwiZGxpZ1wiO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWNlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBmb250LWZhY2UoJG5hbWUsICRmaWxlcywgJHdlaWdodDogbnVsbCwgJHN0eWxlOiBudWxsLCAkaW5saW5lLXdvZmY6IG51bGwpIHtcbiAgJHdlaWdodDogaWYoJHdlaWdodCAhPSBudWxsLCAkd2VpZ2h0LCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHdlaWdodCcpKTtcbiAgJHN0eWxlOiBpZigkc3R5bGUgIT0gbnVsbCwgJHN0eWxlLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIHN0eWxlJykpO1xuICAkaW5saW5lLXdvZmY6IGlmKCRpbmxpbmUtd29mZiAhPSBudWxsLCAkaW5saW5lLXdvZmYsIHRvb2xraXQtZ2V0KCdmb250IGZhY2UgaW5saW5lIHdvZmYnKSk7XG5cbiAgJGZvbnQtc3RhY2s6ICgpO1xuICAkZm9udC1zcmM6ICcnO1xuICAkZW90OiBmYWxzZTtcbiAgJGZvbnQtZXh0ZW5zaW9uczogKCdlb3QnOiAnZW1iZWRkZWQtb3BlbnR5cGUnLCAnd29mZjInOiAnd29mZjInLCAnd29mZic6ICd3b2ZmJywgJ3R0Zic6ICd0cnVldHlwZScsICdzdmcnOiAnc3ZnJyk7XG5cbiAgQGVhY2ggJGV4dCwgJGZvcm1hdCBpbiAkZm9udC1leHRlbnNpb25zIHtcbiAgICBAaWYgbWFwLWhhcy1rZXkoJGZpbGVzLCAkZXh0KSB7XG4gICAgICBAaWYgZnVuY3Rpb24tZXhpc3RzKGlubGluZS1mb250LWZpbGVzKSBhbmQgJGlubGluZS13b2ZmID09IHRydWUgYW5kICgkZXh0ID09ICd3b2ZmJyBvciAkZXh0ID09ICd3b2ZmMicpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBpbmxpbmUtZm9udC1maWxlcyhtYXAtZ2V0KCRmaWxlcywgJGV4dCkpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgZnVuY3Rpb24tZXhpc3RzKGZvbnQtdXJsKSB7XG4gICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgICRmb250LXN0YWNrOiBhcHBlbmQoJGZvbnQtc3RhY2ssICRmb250LXNyYywgJ2NvbW1hJyk7XG4gICAgfVxuXG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJG5hbWU7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIEBpZiAkZW90IHtcbiAgICAgIHNyYzogJGVvdDtcbiAgICB9XG4gICAgQGlmIGxlbmd0aCgkZm9udC1zdGFjaykgPiAwIHtcbiAgICAgIHNyYzogJGZvbnQtc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSWNvbiBGb250XG4vLyBGcm9tIGh0dHA6Ly9pY29tb29uLmlvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpY29uLWZvbnQoJGZvbnQtc3RhY2ssICRzcGVhazogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkc3BlYWs6IGlmKCRzcGVhayAhPSBudWxsLCAkc3BlYWssIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgc3BlYWsnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgZm9udC1mYW1pbHk6ICRmb250LXN0YWNrO1xuICBAaWYgJHNwZWFrID09IGZhbHNlIHtcbiAgICBzcGVhazogbm9uZTtcbiAgfVxuICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBpY29uLWZvbnQtLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kICB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ljb24gZm9udCBjb3JlJykge1xuICAgICAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kKTtcblxuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhZGUgSW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNvbnRlbnQtZmFkZS1pbigkZHVyYXRpb246IG51bGwsICRsb2FkaW5nOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRkdXJhdGlvbjogaWYoJGR1cmF0aW9uICE9IG51bGwsICRkdXJhdGlvbiwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSk7XG4gICRsb2FkaW5nOiBpZigkbG9hZGluZyAhPSBudWxsLCAkbG9hZGluZywgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnZmFkZSBpbiBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgPT0gdHJ1ZSBhbmQgJGR1cmF0aW9uID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykgYW5kICRsb2FkaW5nID09IHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2NvbnRlbnQgZmFkZSBpbicpIHtcbiAgICAgIEBpbmNsdWRlIGNvbnRlbnQtZmFkZS1pbigkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIEBpZiBub3QgbWl4aW4tZXhpc3RzKCdzaW5nbGUtdHJhbnNpdGlvbicpIHtcbiAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgc2luZ2xlLXRyYW5zaXRpb24ob3BhY2l0eSAkZHVyYXRpb24pO1xuICAgIH1cblxuICAgICN7JGxvYWRpbmd9ICYge1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRmx1aWQgRW1iZWRzIGFuZCB3aGF0ZXZlciBXSVRIIE5PIEpBVkFTQ0lQVCFcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIHBhcmVudCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBjaGlsZCcpIHtcbiAgICAgIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcblxuICBwYWRkaW5nLSN7JHBvc2l0aW9ufTogKDEgLyAkcmF0aW8pICogJHdpZHRoO1xuICB3aWR0aDogJHdpZHRoO1xufVxuXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJGVsZW1lbnRzOiBpZigkZWxlbWVudHMgIT0gbnVsbCwgJGVsZW1lbnRzLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG5cbiAgQGVhY2ggJGVsZW1lbnQgaW4gJGVsZW1lbnRzIHtcbiAgICAjeyRlbGVtZW50fSB7XG4gICAgXHRAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZCk7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBpcigkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkZWxlbWVudHMsICRleHRlbmQsICRwb3NpdGlvbik7XG59XG5cbkBtaXhpbiBpci1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcbn0iLCIvLyBzaW1wbGUgZnVuY3Rpb24gdG8gZmluZCB0aGUgY29udGV4dCBvZiBhIG5lc3RlZCBwZXJjZW50YWdlLlxuQGZ1bmN0aW9uIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcblxuICAvLyBGaXJzdCBsZXZlbCBkZWVwIGlzIGFsd2F5cyAxMDAlXG4gICRwZXJjZW50YWdlOiAxMDAlO1xuXG4gIC8vIExvb3AgdGhyb3VnaCBlYWNoIGxldmVsXG4gIEBlYWNoICRjb250ZXh0IGluICRjb250ZXh0cyB7XG4gICAgLy8gSW52ZXJ0IHRoZSBwZXJjZW50YWdlIHRvIGZpbmQgY29udGV4dFxuICAgICRwZXJjZW50YWdlOiBwZXJjZW50YWdlKCRwZXJjZW50YWdlIC8gJGNvbnRleHQpO1xuICB9XG4gIC8vIFJldHVybiBmaW5hbCBwZXJjZW50YWdlXG4gIEByZXR1cm4gJHBlcmNlbnRhZ2U7XG59XG5cbi8vIG1peGluIHRvIG1ha2UgdGhpbmdzIGVhc2llclxuQG1peGluIG5lc3RlZC1jb250ZXh0KCRjb250ZXh0czogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBwb3NpdGlvbicpKTtcblxuICB3aWR0aDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKTtcbiAgQGlmICRwb3NpdGlvbiA9PSBcImNlbnRlclwiIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLS41O1xuICB9XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJyaWdodFwiIHtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0xICsgMTAwJTtcbiAgfVxufSIsIi8vIE1hZ2ljIHBhcmFsbGF4IG1peGluc1xuQG1peGluIHBhcmFsbGF4LWluaXQoJHBlcnNwZWN0aXZlOiBudWxsLCAkZWxlbWVudDogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuXG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkZWxlbWVudDogaWYoJGVsZW1lbnQgIT0gbnVsbCwgJGVsZW1lbnQsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBlbGVtZW50JykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgQGlmICRlbGVtZW50ID09ICdib2R5JyB7XG4gICAgQGF0LXJvb3Qge1xuICAgICAgaHRtbCwgYm9keSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cbiAgICAgIGJvZHkge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZWxlbWVudCA9PSB0aGlzIHtcbiAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAYXQtcm9vdCAjeyRlbGVtZW50fSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZTogbnVsbCwgJHBhcmFsbGF4LWlvczogbnVsbCkge1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIG92ZXJmbG93OiBhdXRvO1xuICBAaWYgbWl4aW4tZXhpc3RzKHBlcnNwZWN0aXZlKSB7XG4gICAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlICogMXB4KTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1wZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICAgIHBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gIH1cbiAgLy8gQWxsb3dzIGZvciBzbW9vdGggc2Nyb2xsaW5nIGJ1dCBkaXNhYmxlcyBwYXJhbGxheCBlZmZlY3RzLlxuICBAaWYgJHBhcmFsbGF4LWlvcyA9PSBmYWxzZSB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG4gIC8vIE1ha2Ugc3VyZSAzRCBwZXJzcGVjdGl2ZSBpcyBwcmVzZXJ2ZWRcbiAgJiwgJiAqIHtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybS1zdHlsZSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLXN0eWxlKHByZXNlcnZlLTNkKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4KCRkaXN0YW5jZTogbnVsbCwgJHBlcnNwZWN0aXZlOiBudWxsKSB7XG5cbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgncGFyYWxsYXggZGlzdGFuY2UnKSk7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuXG4gICR0cmFuc2Zvcm06IHRyYW5zbGF0ZVooJGRpc3RhbmNlICogJHBlcnNwZWN0aXZlICogMXB4KSBzY2FsZShhYnMoJGRpc3RhbmNlIC0gMSkpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFuc2Zvcm0pO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgICB0cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gIH1cblxuICB6LWluZGV4OiAkZGlzdGFuY2UgKiAxMDA7XG59XG4iLCJAbWl4aW4gcnRsKCRwcm9wZXJ0eSwgJHZhbHVlKSB7XG4gICRfcHJvcGVydHk6ICRwcm9wZXJ0eTtcbiAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG5cbiAgQGlmIGxlbmd0aCgkdmFsdWUpID09IDQge1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAjeyRwcm9wZXJ0eX06IG50aCgkdmFsdWUsIDEpIG50aCgkdmFsdWUsIDQpIG50aCgkdmFsdWUsIDMpIG50aCgkdmFsdWUsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykgLSAxKSArICdyaWdodCc7XG4gICAgfVxuICAgIEBlbHNlIGlmIChzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAncmlnaHQnKSAtIDEpICsgJ2xlZnQnO1xuICAgIH1cblxuICAgIEBpZiAkcHJvcGVydHkgIT0gJF9wcm9wZXJ0eSB7XG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iLCJAbWl4aW4gdGFyZ2V0KCR0YXJnZXQpIHtcbiAgQGF0LXJvb3Qge1xuICAgIC8qISBAe3RhcmdldDogI3skdGFyZ2V0fX0gKi9cbiAgICAmIHtcbiAgICAgIEBjb250ZW50OyAgXG4gICAgfVxuICAgIC8qISB7dGFyZ2V0OiAjeyR0YXJnZXR9fUAgKi8gIFxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBEcmF3IHRyaWFuZ2xlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiB0cmlhbmdsZSgkY29sb3I6IG51bGwsICRoZWlnaHQ6IG51bGwsICR3aWR0aDogbnVsbCwgJGFuZ2xlOiBudWxsKSB7XG5cbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndHJpYW5nbGUgY29sb3InKSk7XG4gICRoZWlnaHQ6IGlmKCRoZWlnaHQgIT0gbnVsbCwgJGhlaWdodCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGhlaWdodCcpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndHJpYW5nbGUgd2lkdGgnKSk7XG4gICRhbmdsZTogaWYoJGFuZ2xlICE9IG51bGwsICRhbmdsZSwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGFuZ2xlJykpO1xuXG4gIEBpZiBudGgoJGFuZ2xlLCAxKSA9PSBcInRvcFwiIG9yIG50aCgkYW5nbGUsIDEpID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogXCIjeyRhbmdsZX1cIjtcbiAgfVxuXG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3BcIiB7XG4gICAgJGFuZ2xlOiAwO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDc7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAyO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gcmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDE7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDM7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDY7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA1O1xuICB9XG5cbiAgQGlmIHVuaXQoJGhlaWdodCkgPT0gXCJcIiBvciB1bml0KCRoZWlnaHQpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyRoZWlnaHR9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3IgaGVpZ2h0LlwiXG4gIH1cblxuICBAaWYgdW5pdCgkd2lkdGgpID09IFwiXCIgb3IgdW5pdCgkd2lkdGgpID09IFwiJVwiIHtcbiAgICBAZGVidWcgXCJpbiB0cmlhbmdsZSAjeyR3aWR0aH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciB3aWR0aC5cIlxuICB9XG5cbiAgLy8gb2Zmc2V0IDQ1ZGVnIHRvIG1ha2UgZWFjaCBzaWRlIHN0YXJ0IGF0IDBcbiAgJGRlZzogJGFuZ2xlICsgNDU7XG4gIC8vIGlmIHVuaXRzLCByZW1vdmUgdW5pdHNcbiAgQGlmIHVuaXQoJGRlZykgPT0gZGVnIHtcbiAgICAkZGVnOiAkZGVnIC8gMWRlZztcbiAgfVxuICAvLyBzaGlmdCB0byBiZSBvbiBhIHNjYWxlIGZyb20gMCB0byA5MC5cbiAgQHdoaWxlICRkZWcgPiA5MCB7XG4gICAgJGRlZzogJGRlZyAtIDkwO1xuICB9XG4gIEB3aGlsZSAkZGVnIDwgMCB7XG4gICAgJGRlZzogJGRlZyArIDkwO1xuICB9XG4gIC8vIEdldCBhIHJhdGlvIG9mIDkwIHRvIG11bHRpcGx5IGJ5LlxuICAkZGVnOiAkZGVnIC8gOTA7XG5cbiAgLy8gbWFrZSBzdXJlIG1ldHJpY3MgYXJlIHJlc2V0XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICBib3JkZXI6IDAgc29saWQgdHJhbnNwYXJlbnQ7XG5cbiAgLy8gcnVuIHRocm91Z2ggc2lkZXNcbiAgQGlmICRhbmdsZSA8PSA0NSBvciAkYW5nbGUgPiAzMTUge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6IDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiA0NSBhbmQgJGFuZ2xlIDw9IDEzNSB7XG4gICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogJGRlZykgMCAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aDtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMTM1IGFuZCAkYW5nbGUgPD0gMjI1IHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKSAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gMjI1IGFuZCAkYW5nbGUgPD0gMzE1IHtcbiAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoICgkaGVpZ2h0ICogJGRlZykgMDtcbiAgfVxufSIsIi8vIFZlcnRpY2FsbHkgY2VudGVyIGFueXRoaW5nLCBsaXRlcmFsbHkgYW55dGhpbmcuXG4vLyBodHRwOi8vemVyb3NpeHRocmVlLnNlL3ZlcnRpY2FsLWFsaWduLWFueXRoaW5nLXdpdGgtanVzdC0zLWxpbmVzLW9mLWNzcy9cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG5cbiAgdG9wOiAkbWlkcG9pbnQ7XG4gIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBleHRlbmQnKSk7XG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndmVydGljYWwgY2VudGVyJykge1xuICAgICAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSG9yaXpvbnRhbCBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGhvcml6b250YWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRtaWRwb2ludDogaWYoJG1pZHBvaW50ICE9IG51bGwsICRtaWRwb2ludCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICBAaWYgJG1pZHBvaW50ICE9IDAlIHtcbiAgICBsZWZ0OiAkbWlkcG9pbnQ7XG4gIH1cblxuICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaG9yaXpvbnRhbCBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFic29sdXRlIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyKCR2ZXJ0aWNhbDogbnVsbCwgJGhvcml6b250YWw6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkdmVydGljYWw6IGlmKCR2ZXJ0aWNhbCAhPSBudWxsLCAkdmVydGljYWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgdmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cblxuICB0b3A6ICR2ZXJ0aWNhbDtcbiAgQGlmICRob3Jpem9udGFsICE9IDAlIHtcbiAgICBsZWZ0OiAkaG9yaXpvbnRhbDtcbiAgfVxuXG4gIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZCwgJGV4dGVuZCk7XG59XG5cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoZmFsc2UsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICB9XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ1NTIGxldmVsIDQgVmlld3BvcnRcbi8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy1kZXZpY2UtYWRhcHQvI3RoZS1hdHZpZXdwb3J0LXJ1bGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIHZpZXdwb3J0IHtcbiAgQC13ZWJraXQtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbW96LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1zLXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBAdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbiIsIkBtaXhpbiB1bmRlcmxpbmUoJGJhY2tncm91bmQ6IG51bGwsICRjb2xvcjogbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnM6IG51bGwsICRkaXN0YW5jZTogbnVsbCwgJHdpZHRoOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRiYWNrZ3JvdW5kOiBpZigkYmFja2dyb3VuZCAhPSBudWxsLCAkYmFja2dyb3VuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBiYWNrZ3JvdW5kJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY29sb3InKSk7XG4gICRjbGVhci1kZXNjZW5kZXJzOiBpZigkY2xlYXItZGVzY2VuZGVycyAhPSBudWxsLCAkY2xlYXItZGVzY2VuZGVycywgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJykpO1xuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZGlzdGFuY2UnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSB3aWR0aCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICAkUFg6IC4wNjI1ZW07XG5cbiAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoJGV4dGVuZCk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyhiYWNrZ3JvdW5kLWltYWdlKSBhbmQgZnVuY3Rpb24tZXhpc3RzKGxpbmVhci1ncmFkaWVudCkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBsaW5lYXItZ3JhZGllbnQoYm90dG9tLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpXG4gICAgKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKTtcbiAgfVxuICBiYWNrZ3JvdW5kLXNpemU6ICgyICogJFBYKSAoKDEgKyAkd2lkdGgpICogJFBYKTtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAoKCR3aWR0aCkgKiAkUFgpICsgJGRpc3RhbmNlO1xuXG4gIEBpZiAkY2xlYXItZGVzY2VuZGVycyB7XG4gICAgdGV4dC1zaGFkb3c6ICgxICogJFBYKSAoMSAqICRQWCkgMCAkYmFja2dyb3VuZCwgKC0xICogJFBYKSAwIDAgJGJhY2tncm91bmQ7XG4gIH1cbn1cblxuQG1peGluIHVuZGVybGluZS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3VuZGVybGluZScpIHtcbiAgICAgIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEFSVCFcbi8vIEluc3BpcmVkIGJ5IGh0dHA6Ly9lbHJ1bW9yZGVsYWx1ei5naXRodWIuaW8vUGl4ZWxhdG9yL1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gYXJ0KCRhcnQsICRweC1zaXplOiBudWxsLCAkY29sb3I6IG51bGwsICRyYWRpdXM6IG51bGwpIHtcbiAgJHB4LXNpemU6IGlmKCRweC1zaXplICE9IG51bGwsICRweC1zaXplLCB0b29sa2l0LWdldCgnYXJ0IHBpeGVsIHNpemUnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ2FydCBjb2xvcicpKTtcbiAgJHJhZGl1czogaWYoJHJhZGl1cyAhPSBudWxsLCAkcmFkaXVzLCB0b29sa2l0LWdldCgnYXJ0IGJvcmRlciByYWRpdXMnKSk7XG5cbiAgJGJ1aWxkOiAoKTtcbiAgJHk6ICRweC1zaXplO1xuICAkeDogMDtcblxuICBoZWlnaHQ6ICRweC1zaXplO1xuICB3aWR0aDogJHB4LXNpemU7XG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXM7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCBzdHJfbGVuZ3RoKCRhcnQpIHtcbiAgICAkY2hhcjogc3RyX3NsaWNlKCRhcnQsICRpLCAkaSk7XG4gICAgJHg6ICR4ICsgJHB4LXNpemU7XG5cbiAgICBAaWYgJGNoYXIgPT0gJ24nIHtcbiAgICAgICR5OiAkeSArICRweC1zaXplO1xuICAgICAgJHg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRjaGFyICE9ICcgJyB7XG4gICAgICAkYm9yZGVyOiAkeCAkeSAwICRjb2xvcjtcbiAgICAgICRidWlsZDogYXBwZW5kKCRidWlsZCwgJGJvcmRlciwgY29tbWEpO1xuICAgIH1cbiAgfVxuXG4gIGJveC1zaGFkb3c6ICRidWlsZDtcbn0iLCJAbWl4aW4gc2V0LW11bHRpcGxlKCR2YWx1ZSwgJHByb3BlcnRpZXMuLi4pIHtcbiAgJHByb3BlcnR5LWxlbmd0aDogbGVuZ3RoKCRwcm9wZXJ0aWVzKTtcbiAgJGVycm9yLW1zZzogXCJUaGUgYHNldC1tdWx0aXBsZWAgbWl4aW4gcmVxdWlyZXMgeW91IHRvIHBhc3MgaW4gYSBsaXN0IG9mIHByb3BlcnRpZXMgYXMgdGhlIHNlY29uZCBhcmd1bWVudFwiO1xuXG4gIEBpZiAkcHJvcGVydHktbGVuZ3RoIDwgMSB7XG4gICAgQGlmIGZlYXR1cmUtZXhpc3RzKGF0LWVycm9yKSB7XG4gICAgICBAZXJyb3IgJGVycm9yLW1zZztcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQHdhcm4gJGVycm9yLW1zZztcbiAgICB9XG4gIH1cblxuICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluIGlzIGEgd2hpdGUtc3BhY2VkIHNlcGFyYXRlZCBsaXN0LlxuICAkcHJvcGVydGllczogaWYoJHByb3BlcnR5LWxlbmd0aCA9PSAxLCBudGgoJHByb3BlcnRpZXMsIDEpLCAkcHJvcGVydGllcyk7XG5cbiAgQGVhY2ggJHByb3BlcnR5IGluICRwcm9wZXJ0aWVzIHtcbiAgICAjeyRwcm9wZXJ0eX06ICR2YWx1ZVxuICB9XG59XG4iLCIvLyAgTW9kdWxlIFNjYWxlIGFuZCBiYXNlIGZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4kYmFzZS1mb250LXNpemU6ICAgMTRweDtcbiRpZGVhbC1mb250LXNpemU6ICAyMnB4O1xuLy8gJGJhc2UtbGluZS1oZWlnaHQ6IG1zKDEsICRiYXNlLWZvbnQtc2l6ZSk7XG5cbiRyaHl0aG0tdW5pdDogXCJyZW1cIjtcbiRyaHl0aG0tZ2FwOiA4cHg7XG4kcmVtLXdpdGgtcHgtZmFsbGJhY2s6IGZhbHNlO1xuXG4kc2N1dC1yZW0tYmFzZTogc2N1dC1zdHJpcC11bml0KCRiYXNlLWZvbnQtc2l6ZSk7XG5cblxuLy8ge3sgQ29tcG9uZW50IHNpemUgfX1cbiRnbG9iYWwtcmFkaXVzOiAzcHg7XG4iLCIvLyAgR3JpZCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cblxuJGxheW91dC1iYXNlOiAoXG4gIGd1dHRlcnM6IDEvNSxcbiAgY29sdW1uLXdpZHRoOiA4MHB4LFxuICAvLyBndXR0ZXItcG9zaXRpb246IGluc2lkZS1zdGF0aWMsXG4gIGRlYnVnOiAoXG4gICAgLy8gaW1hZ2U6IHNob3csXG4gICksXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogdHJ1ZSxcbiAgICByZW06IGZhbHNlLFxuICApLFxuKTtcbiRzdXN5OiBsYXlvdXQoNSAkbGF5b3V0LWJhc2UpO1xuXG4vLyB7eyBFbGVtZW50IHR3aWNrIHBvaW50cyB9fVxuXG4vLyB7eyBEZXZpY2UgbGF5b3V0cyB9fVxuJHN1c3ktbWVkaWE6IChcbiAgJ21vYmlsZSc6ICcobWF4LXdpZHRoOiA0MTRweCknLFxuICAndGFibGV0LXBvcnRyYWl0JzogJyhtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZSc6ICcobWF4LXdpZHRoOiAxMDI0cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAndGFibGV0JzogJyhtaW4td2lkdGg6IDc2OHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdCknLFxuICAndGFibGV0LWxhbmRzY2FwZS1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IGxhbmRzY2FwZSknLFxuICAnZGVza3RvcCc6ICcobWluLXdpZHRoOiAxMjAwcHgpJyxcbiAgJ2NhdGVnb3J5LW1lbnUnOiAnKG1pbi13aWR0aDogMTAyNHB4KSdcbik7XG4kdGFibGV0OiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCB0YWJsZXQpLFxuICBsYXlvdXQ6IDkgLjVcbik7XG4kdGFibGV0LWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJHRhYmxldCwgbGF5b3V0KSk7XG4kZGVza3RvcDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgZGVza3RvcCksXG4gIGxheW91dDogMTIgMS41IHNwbGl0XG4pO1xuJGRlc2t0b3AtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkZGVza3RvcCwgbGF5b3V0KSk7XG4kZGVza3RvcC1ncmlkLXBhZGRpbmc6IHNjdXQtcmVtKDE1KTtcblxuLy8gIHt7IExheWVycyAtLS0tLS0gfX1cbiRsYXllcnM6IChcbiAgYmFzZSxcbiAgaGVhZGVyLW1lbnUsXG4gIGRyYXdlcixcbiAgZHJhd2VyLXNoYWRvdyxcbiAgZHJhd2VyLW5hdixcbik7IiwiLy8gIFNldHRpbmdzXG4vLyAgPT09PT09PT1cblxuJGNvbG9yLWxpZ2h0LXNhdHVyYXRpb246IDkzJTtcblxuLy8gIENvbG9yc1xuLy8gID09PT09PVxuXG4kZ3JheS1iYXNlOiAgICAgIzAwMCAhZGVmYXVsdDtcbiRncmF5LWRhcmtlcjogICB0aW50KCRncmF5LWJhc2UsIDEzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWRhcms6ICAgICB0aW50KCRncmF5LWJhc2UsIDIwJSkgICAhZGVmYXVsdDtcbiRncmF5OiAgICAgICAgICB0aW50KCRncmF5LWJhc2UsIDMzLjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0OiAgICB0aW50KCRncmF5LWJhc2UsIDQ2LjUlKSAhZGVmYXVsdDtcbiRncmF5LWxpZ2h0ZXI6ICB0aW50KCRncmF5LWJhc2UsIDkzLjUlKSAhZGVmYXVsdDtcblxuLy8gIFRleHRzXG4vLyAgLS0tLS1cblxuJHRleHQtY29sb3I6ICRncmF5LWRhcms7XG5cbi8vICBQYWxsZXRlXG4vLyAgLS0tLS0tLS0tLS1cblxuJGJsdWU6ICMyZDZlYzY7XG4kYmx1ZS1kYXJrOiByZ2IoMCwgNjksIDE2NCk7XG4kYmx1ZS1saWdodDogI2Q4ZTlmZjtcbiR5ZWxsb3c6ICNmYzk2MDA7XG4keWVsbG93LWRhcms6ICNiODZlMDA7XG4keWVsbG93LWxpbms6ICNmZmQ4MDA7XG4kb3JhbmdlOiAjZmM0NzAwO1xuJG9yYW5nZS1kYXJrOiAjYjg2ZTAwO1xuJHJlZDogcmdiKDIwNiwgNjgsIDYyKTtcbiRncmVlbjogcmdiKDI4LCAxNDksIDIyKTtcbiRwaW5rOiByZ2IoMTk3LCAzMSwgMTI0KTtcblxuJHByaW1hcnk6IHNoYWRlKCM0MjhiY2EsIDYuNSUpO1xuJHN1Y2Nlc3M6ICM1Y2I4NWM7XG4kaW5mbzogICAgIzViYzBkYztcbiR3YXJuaW5nOiAjZjBhZDRlO1xuJGRhbmdlcjogICNkOTUzNGY7XG5cbiRpbnB1dC1ib3JkZXI6ICNlNGU0ZTQ7XG4kYm9yZGVyLWdyYXk6ICM5MTkxOTE7XG4kYmFja2dyb3VuZC1ncmF5OiAjZTllOWU5O1xuXG4vLyAgTGlua3Ncbi8vICAtLS0tLVxuXG4kbGluay1jb2xvcjogICAgICAgICAgICMwMDAgIWRlZmF1bHQ7XG4kbGluay1ob3Zlci1jb2xvcjogICAgIHNoYWRlKCRsaW5rLWNvbG9yLCAxNSUpICFkZWZhdWx0O1xuJGxpbmstZm9jdXMtY29sb3I6ICAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstYWN0aXZlLWNvbG9yOiAgICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuJGxpbmstdmlzaXRlZC1jb2xvcjogICAkZ3JheS1kYXJrICFkZWZhdWx0O1xuXG4vLyAgTlByb2dyZXNzXG4vLyAgLS0tLS0tLS0tXG4kbnByb2dyZXNzLWNvbG9yOiAgICAkcHJpbWFyeTtcbiIsIi8vICBGb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuJGhpZGUtdGV4dC1kaXJlY3Rpb246ICAgcmlnaHQ7XG5cbi8vIOWDhemHneWwjeiLseaWh1xuLy8gQGZvbnQtZmFjZSB7XG4vLyAgIGZvbnQtZmFtaWx5OiBFbmdsaXNoO1xuLy8gICB1bmljb2RlLXJhbmdlOiBVKzAwLTAyNEY7XG4vLyAgIHNyYzogbG9jYWwoSGVsdmV0aWNhKTtcbi8vIH1cblxuJHNhbnM6ICAgIEhlbHZldGljYU5ldWUtTGlnaHRcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSBMaWdodCdcbiAgICAgICAsICdIZWx2ZXRpY2EgTmV1ZSdcbiAgICAgICAsICBIZWx2ZXRpY2FcbiAgICAgICAsICdIZWl0aSBUQydcbiAgICAgICAsICdMaUhlaSBQcm8nXG4gICAgICAgLCAnTWljcm9zb2Z0IEpoZW5nSGVpJ1xuICAgICAgICwgJ+W+rui7n+ato+m7kemrlCdcbiAgICAgICAsICBBcmlhbFxuICAgICAgICwgIHNhbnMtc2VyaWY7XG5cbiRzZXJpZjogICdQVCBTZXJpZidcbiAgICAgICAsIEdlb3JnaWFcbiAgICAgICAsIFRpbWVzXG4gICAgICAgLCAnVGltZXMgTmV3IFJvbWFuJ1xuICAgICAgICwgJ1Nvbmd0aSBUQydcbiAgICAgICAsICdIaXJhZ2lubyBNaW5jaG8gUHJvTidcbiAgICAgICAsIHNlcmlmO1xuXG4kYmFzZS1mb250LWZhbWlseTogJHNhbnM7Il0sIm1hcHBpbmdzIjoiQThDQUE7Ozs7O0VBS0U7QTlDZ0NGLEE4Q0hBLFU5Q0dVLEM4Q0hVO0VBVmxCLGVBQWUsRUFBRSxJQUFLO0VBQ3RCLFlBQVksRUFBRSxDQUFFO0VBR2QsVUFBVSxFQUFFLENBQUU7RUFDZCxhQUFhLEVBQUUsQ0FBRSxHQU9wQjs7QTlDekJ1QixBQUFBLGVBQWUsQ0FBQztFQUN0QyxjQUFjLEVDVGlCLEdBQVc7RURVMUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENrRTRCWCxPQUFPLEdsRXZCckI7RTZDZ0NHLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtJN0N2Q0UsQUFBQSxlQUFlLENBQUM7TUFJcEMsT0FBTyxFQUFFLElBQUs7TUFDZCxlQUFlLEVBQUUsYUFBYyxHQUVsQzs7QTZDZ0NHLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtFN0MvQnRCLEFBQUEsd0JBQXdCLENBQUM7SUFFckIsT0FBTyxFQUFFLElBQUs7SUFDZCxTQUFTLEVBQUUsYUFBYztJQUN6QixJQUFJLEVBQUUsQ0FBRSxHQUlYO0lBUkQsQUFNSSx3QkFOb0IsQ0FNcEIsYUFBYSxDQUFDO01BQUUsSUFBSSxFQUFFLENBQUUsR0FBSTs7QUFHaEMsQUFBQSx5QkFBeUIsQ0FBQztFQUN4QixPQUFPLEVBQUUsSUFBSyxHQU1mO0U2Q2VHLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtJN0N0QnRCLEFBQUEseUJBQXlCLENBQUM7TUFHdEIsT0FBTyxFQUFFLEtBQU07TUFDZixXQUFXLEVDN0JrQixHQUFXO01EOEJ4QyxLQUFLLEVBQUUsS0FBTSxHQUVoQjs7QTZDZUcsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO0U3Q2J0QixBQUdJLFVBSE0sQ0FHTix1QkFBdUIsQ0FBQztJQUN0QixPQUFPLEVBQUUsWUFBYTtJQUN0QixZQUFZLEVDdkNlLElBQVcsR0R3Q3ZDO0VBTkwsQUFPSSxVQVBNLENBT04sMkJBQTJCLENBQUM7SUFDMUIsT0FBTyxFQUFFLFlBQWE7SUFDdEIsS0FBSyxFQUFFLEVBQUcsR0FDWDtFQVZMLEFBV0ksVUFYTSxDQVdOLG9CQUFvQixDQUFDO0lBQ25CLE9BQU8sRUFBRSxZQUFhO0lBQ3RCLEtBQUssRUFBRSxFQUFHLEdBQ1g7O0FBR0wsQUFBQSxnQkFBZ0IsQ0FBQztFQUNmLE9BQU8sRUNwRHdCLEdBQVcsQ0RvRDVCLENBQUMsR0FFaEI7RUFIRCxBQUFBLGdCQUFnQixHQUFoQixnQkFBZ0IsQ0FFUjtJQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsS0FBSyxDa0VmaEIsT0FBTyxHbEVlMkIiLCJuYW1lcyI6W119 */
/*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.news-toolbar {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

.news-toolbar {
  display: none; }

@media (min-width: 1200px) {
  .news-toolbar {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: distribute;
    justify-content: space-around;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    width: 700px;
    font-style: normal;
    font-size: 14px;
    color: #fff; } }
.news-toolbar__cell .link {
  color: #fff; }

.news-toolbar__cell .square-button {
  width: 20px; }

.news-toolbar__cell .square-button.active,
.news-toolbar__cell .square-button:hover {
  color: #000;
  background-color: #fff; }

.news-toolbar__cell .square-button + .square-button {
  margin-left: 8px; }

.news-toolbar__cell .prev {
  margin-right: 8px;
  color: #fff; }

.news-toolbar__cell .prev::before {
  margin-right: 4px;
  content: "\25C0"; }

.news-toolbar__cell .next {
  margin-left: 8px;
  color: #fff; }

.news-toolbar__cell .next::after {
  margin-left: 4px;
  content: "\25B6"; }

.news-helpers {
  margin-bottom: 8px;
  padding: 8px 0;
  border: 1px dotted #919191;
  border-width: 1px 0; }

@media (min-width: 1200px) {
  .news-helpers {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center; } }
.news-helpers__sns {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: end;
  -ms-flex-pack: end;
  justify-content: flex-end;
  margin-bottom: 8px; }

.news-helpers__sns:only-child {
  margin-bottom: 0; }

@media (min-width: 1200px) {
  .news-helpers__sns {
    -webkit-box-pack: start;
    -ms-flex-pack: start;
    justify-content: flex-start;
    margin-bottom: 0;
    width: 50%; }

  .news-helpers__sns:only-child {
    -webkit-box-pack: end;
    -ms-flex-pack: end;
    justify-content: flex-end;
    width: 100%; }

  .news-helpers__sns:only-child .button {
    margin-right: auto; } }
.news-helpers__sns .button {
  margin-right: auto; }

@media (min-width: 1200px) {
  .news-helpers__sns .button {
    margin-right: 0; } }
.news-helpers__sns .sns-button + .sns-button {
  margin-left: 8px; }

.news-helpers__sns .icon {
  width: 40px;
  height: 40px; }

.news-helpers__tool {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-pack: justify;
  -ms-flex-pack: justify;
  justify-content: space-between;
  margin-top:-48px; }

@media (min-width: 1200px) {
  .news-helpers__tool {
    -webkit-box-pack: end;
    -ms-flex-pack: end;
    justify-content: flex-end;
    width: 50%;
    margin-top: 0; }
  .news-helpers__tool .button + .button {
    margin-left: 8px; } }

@media (max-width: 767px) {
  .post-preview__title { height: 81px; }
  .news-helpers__tool { display: none; } }

@media (min-width: 1200px) {
  .relative-article-list {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between; } }
.relative-article-list__cell {
  margin-bottom: 8px; }

@media (min-width: 1200px) {
  .relative-article-list__cell {
    width: calc(50% - 4px); } }
.relative-article-list__cell .hot-news__list-cell br {
  display: none; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3BhZ2VzL19uZXdzLnNjc3MiLCJzb3VyY2VzIjpbIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9wYWdlcy9fbmV3cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL19taXhpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fY2xhc3Nlcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL19zdXN5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvX3N1LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX3V0aWxpdGllcy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvc3UvX2dyaWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX2Zsb2F0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zaGFyZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fc3VwcG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19wcmVmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3JlbS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19jbGVhcmZpeC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2luc3BlY3Quc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19vdXRwdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19kaXJlY3Rpb24uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fbWFyZ2lucy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX3BhZGRpbmcuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fZW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L192YWxpZGF0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3JpZHMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19ib3gtc2l6aW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ3V0dGVycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2lzb2xhdGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19nYWxsZXJ5LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcm93cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYmxlZWQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19icmVha3BvaW50LXBsdWdpbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3NjdXQvZGlzdC9fc2N1dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy9fdG9vbGtpdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXR0aW5ncy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wbGFjZWhvbGRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fY29sb3JzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ZvbnRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2ludHJpbnNpYy1yYXRpby5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19uZXN0ZWQtY29udGV4dC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19wYXJhbGxheC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19ydGwuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdGFyZ2V0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RyaWFuZ2xlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NlbnRlci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L192aWV3cG9ydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L191bmRlcmxpbmUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fYXJ0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3NldC1tdWx0aXBsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19zY2FsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19mb250LnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gLS0tLSB2ZW5kb3IgbWl4aW4gbGlicmFyaWVzIC0tLS1cbkBpbXBvcnQgXCJtaXhpbnNcIixcbiAgICAgICAgXCJjbGFzc2VzXCIsXG4gICAgICAgIFwifnN1c3lcIixcbiAgICAgICAgXCJ+c2N1dFwiLFxuICAgICAgICBcIn5zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdFwiO1xuXG4vLyAtLS0tIHZhcmlhYmxlcyBhbmQgY29uZmlnIC0tLS1cbkBpbXBvcnQgXCJzZXR0aW5ncy9zY2FsZVwiLFxuICAgICAgICBcInNldHRpbmdzL2dyaWRcIixcbiAgICAgICAgXCJzZXR0aW5ncy9jb2xvcnNcIixcbiAgICAgICAgXCJzZXR0aW5ncy9mb250XCI7Lm5ld3MtdG9vbGJhciB7XG4gIEBleHRlbmQgJXNjdXQtbGlzdC11bnN0eWxlZDtcbiAgZGlzcGxheTogbm9uZTtcbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB3aWR0aDogNzAwcHg7XG4gICAgdGV4dDogbm9ybWFsIDE0cHggI2ZmZjsgICAgXG4gIH1cbn1cbi5uZXdzLXRvb2xiYXJfX2NlbGwge1xuICAubGluayB7IGNvbG9yOiAjZmZmOyB9XG5cbiAgLnNxdWFyZS1idXR0b24ge1xuICAgIHdpZHRoOiByKDIuNSk7XG4gICAgJi5hY3RpdmUsXG4gICAgJjpob3ZlciB7IGNvbG9yOiAjMDAwICNmZmY7IH1cbiAgICArIC5zcXVhcmUtYnV0dG9uIHsgbWFyZ2luLWxlZnQ6IHIoMSk7IH1cbiAgfVxuXG4gIC5wcmV2IHtcbiAgICBtYXJnaW4tcmlnaHQ6IHIoMSk7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIG1hcmdpbi1yaWdodDogciguNSk7XG4gICAgICBjb250ZW50OiAkc2N1dC1sdHJpO1xuICAgIH1cbiAgfVxuXG4gIC5uZXh0IHtcbiAgICBtYXJnaW4tbGVmdDogcigxKTtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICAmOjphZnRlciB7XG4gICAgICBtYXJnaW4tbGVmdDogciguNSk7XG4gICAgICBjb250ZW50OiAkc2N1dC1ydHJpO1xuICAgIH1cbiAgfVxufVxuXG4ubmV3cy1oZWxwZXJzIHtcbiAgbWFyZ2luLWJvdHRvbTogcigxKTtcbiAgcGFkZGluZzogcigxKSAwO1xuICBib3JkZXI6IDFweCBkb3R0ZWQgJGJvcmRlci1ncmF5O1xuICBib3JkZXItd2lkdGg6IDFweCAwIDFweCAwO1xuICBAaW5jbHVkZSBzdXN5KCRkZXNrdG9wKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuLm5ld3MtaGVscGVyc19fc25zIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgbWFyZ2luLWJvdHRvbTogcigxKTtcbiAgJjpvbmx5LWNoaWxkIHsgbWFyZ2luLWJvdHRvbTogMDsgfVxuICBAaW5jbHVkZSBzdXN5KCRkZXNrdG9wKSB7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgd2lkdGg6IDUwJTtcbiAgICAmOm9ubHktY2hpbGQge1xuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgLmJ1dHRvbiB7IG1hcmdpbi1yaWdodDogYXV0bzsgfVxuICAgIH1cbiAgfVxuICBcbiAgLmJ1dHRvbiB7XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHsgbWFyZ2luLXJpZ2h0OiAwOyB9XG4gIH1cbiAgLnNucy1idXR0b24gKyAuc25zLWJ1dHRvbiB7IG1hcmdpbi1sZWZ0OiByKDEpOyB9XG4gIC5pY29uIHsgc2l6ZTogcig1KTsgfVxufVxuLm5ld3MtaGVscGVyc19fdG9vbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgd2lkdGg6IDUwJTtcblxuICAgIC5idXR0b24gKyAuYnV0dG9uIHsgbWFyZ2luLWxlZnQ6IHIoMSk7IH1cbiAgfVxufVxuXG4ucmVsYXRpdmUtYXJ0aWNsZS1saXN0IHtcbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG59XG4ucmVsYXRpdmUtYXJ0aWNsZS1saXN0X19jZWxsIHtcbiAgbWFyZ2luLWJvdHRvbTogcigxKTtcbiAgQGluY2x1ZGUgc3VzeSgkZGVza3RvcCkge1xuICAgIHdpZHRoOiBjYWxjKDUwJSAtICN7ciguNSl9KTtcbiAgfVxuXG4gIC5ob3QtbmV3c19fbGlzdC1jZWxsIGJyIHtkaXNwbGF5OiBub25lO31cbn0iLCIvLyB7e1Nhc3MgbWl4aW5zIC0tLS0tLS0tfX1cbkBmdW5jdGlvbiBuKCkgeyBAcmV0dXJuIHVucXVvdGUoXCIqXCIpOyB9XG5cbkBmdW5jdGlvbiByKCR0aW1lczogMSkgeyBAcmV0dXJuICRyaHl0aG0tZ2FwICogJHRpbWVzOyB9XG5cbkBtaXhpbiBzdXN5KCRtYXApIHtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJG1hcCwgcXVlcnkpLCBtYXAtZ2V0KCRtYXAsIGxheW91dCkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gcmV2ZXJzZS1oaWRlLXZpc3VhbGx5KCkge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG59XG5cbkBtaXhpbiBzaGFyZS1icmVha3BvaW50cygkbWFwLCAkY3NzcHJvcDogY29udGVudCkge1xuICAkZGVzY3JpcHRpb246ICcnO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRtYXAge1xuICAgIEBpZiAkZGVzY3JpcHRpb24gIT0gICcnIHtcbiAgICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJyB8ICc7XG4gICAgfVxuICAgIFxuICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJHByb3BlcnR5ICsnOiAnKyBpbnNwZWN0KCR2YWx1ZSk7XG4gIH1cblxuICBkaXNwbGF5OiBub25lO1xuICAjeyRjc3Nwcm9wfTogICRkZXNjcmlwdGlvbjtcbn1cblxuQG1peGluIHRvZ2dsZS1mYWRlKCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICB9XG59XG5cbkBtaXhpbiB0b2dnbGUtc2hvdygpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAwO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgfSAgXG59XG5cbkBtaXhpbiBzaG93KCkge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgaGVpZ2h0OiBhdXRvOyAgXG59XG5cbkBtaXhpbiBpbnB1dC1wbGFjZWhvbGRlcigpIHtcbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgXG4gICY6Oi1tb3otcGxhY2Vob2xkZXIsXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbn1cblxuQG1peGluIGRlYnVnKCRjb2xvcjogI2ZmZiByZ2JhKHRvbWF0bywgLjMpKSB7XG4gIGNvbG9yOiAkY29sb3Jcbn1cblxuQG1peGluIGxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpO1xuICA+IGxpICsgbGk6YmVmb3JlIHsgbWFyZ2luLWxlZnQ6ICRzcGFjZSArIDRweDsgfVxufVxuIiwiQG1peGluIEhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG5AbWl4aW4gU2VsZWN0IHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgcGFkZGluZzogMCByKDIpIDAgcigxKTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgLy8gaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICAvLyBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAvLyBiYWNrZ3JvdW5kOiB1cmwoXCJpbWFnZXMvYXJyb3ctZG93bi5zdmdcIilcbiAgLy8gICAgICAgICAgIDkyJSA1MCUgLyA4cHggMTBweFxuICAvLyAgICAgICAgICAgbm8tcmVwZWF0XG4gIC8vICAgICAgICAgICB0cmFuc3BhcmVudDtcbiAgLm5vLWNzcy1hcHBlYXJhbmNlICYge1xuICAgIEBpbmNsdWRlIHNjdXQtcGFkZGluZyhuIDApO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIE5vcm1hbGl6ZSgpIHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lIHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwO1xufSIsIi8vIFN1c3lcbi8vID09PT1cblxuQGltcG9ydCAnc3VzeS9sYW5ndWFnZS9zdXN5JztcbiIsIi8vIFN1c3kgTmV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuJHN1c3ktdmVyc2lvbjogMi4xO1xuXG5AaW1wb3J0IFwiLi4vc3VcIjtcbkBpbXBvcnQgXCIuLi9vdXRwdXQvZmxvYXRcIjtcblxuQGltcG9ydCBcInN1c3kvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdXN5L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdXN5L2dyaWRzXCI7XG5AaW1wb3J0IFwic3VzeS9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VzeS9jb250ZXh0XCI7XG5AaW1wb3J0IFwic3VzeS9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VzeS9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzdXN5L3NwYW5cIjtcbkBpbXBvcnQgXCJzdXN5L2d1dHRlcnNcIjtcbkBpbXBvcnQgXCJzdXN5L2lzb2xhdGVcIjtcbkBpbXBvcnQgXCJzdXN5L2dhbGxlcnlcIjtcbkBpbXBvcnQgXCJzdXN5L3Jvd3NcIjtcbkBpbXBvcnQgXCJzdXN5L21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzdXN5L3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2JsZWVkXCI7XG5AaW1wb3J0IFwic3VzeS9icmVha3BvaW50LXBsdWdpblwiO1xuIiwiLy8gU3Vcbi8vID09XG5cbkBpbXBvcnQgXCJzdS91dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJzdS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdS9ncmlkXCI7XG4iLCIvLyBNYXAgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gVHJ1bmNhdGUgTGlzdFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSBsaXN0LCB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBsZW5ndGhcbkBmdW5jdGlvbiBfc3VzeS10cnVuY2F0ZS1saXN0KFxuICAkbGlzdCxcbiAgJGxlbmd0aFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGlzdCkge1xuICAgICRfcmV0dXJuOiBpZigkaSA8PSAkbGVuZ3RoLCBhcHBlbmQoJF9yZXR1cm4sIG50aCgkbGlzdCwgJGkpKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIEdldFxuLy8gLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtZ2V0KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiAkbWFwO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiB0eXBlLW9mKCRfcmV0dXJuKSA9PSBtYXAge1xuICAgICAgJF9yZXR1cm46IG1hcC1nZXQoJF9yZXR1cm4sICRrZXkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBTZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFNldCBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLXNldChcbiAgJG1hcCxcbiAgJGtleXMtdmFsdWUuLi5cbikge1xuICAkX3ZhbHVlOiBudGgoJGtleXMtdmFsdWUsIC0xKTtcbiAgJF9rZXlzOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRrZXlzLXZhbHVlLCBsZW5ndGgoJGtleXMtdmFsdWUpIC0gMSk7XG4gICRfbGVuZ3RoOiBsZW5ndGgoJF9rZXlzKTtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJF9sZW5ndGgge1xuICAgICRfbjogMCAtICRpO1xuICAgICRfbGV2ZWw6IF9zdXN5LXRydW5jYXRlLWxpc3QoJF9rZXlzLCAkX2xlbmd0aCArICRfbik7XG4gICAgJF9sZXZlbDogX3N1c3ktZGVlcC1nZXQoJG1hcCwgJF9sZXZlbC4uLik7XG4gICAgJF9tZXJnZTogbnRoKCRfa2V5cywgJF9uKTtcbiAgICAkX21lcmdlOiAoJF9tZXJnZTogJF92YWx1ZSk7XG4gICAgJF9yZXR1cm46IGlmKCRfbGV2ZWwsIG1hcC1tZXJnZSgkX2xldmVsLCAkX21lcmdlKSwgJF9tZXJnZSk7XG4gICAgJF92YWx1ZTogJF9yZXR1cm47XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgTWVyZ2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiAyIG9iamVjdHMgb2YgYW55IGRlcHRoLCBtZXJnZWRcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLW1lcmdlKFxuICAkbWFwMSxcbiAgJG1hcDJcbikge1xuXG4gIEBpZiB0eXBlLW9mKCRtYXAxKSAhPSBtYXAgb3IgdHlwZS1vZigkbWFwMikgIT0gbWFwIHtcbiAgICAkbWFwMTogJG1hcDI7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwMiB7XG4gICAgICAkX25ldzogKCRrZXk6IF9zdXN5X2RlZXAtbWVyZ2UobWFwLWdldCgkbWFwMSwgJGtleSksICR2YWx1ZSkpO1xuICAgICAgJG1hcDE6IG1hcC1tZXJnZSgkbWFwMSwgJF9uZXcpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG1hcDE7XG59XG5cblxuLy8gRGVlcCBIYXMtS2V5XG4vLyAtLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIHRydWUgaWYgYSBkZWVwIGtleSBleGlzdHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWhhcy1rZXkoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46IG51bGw7XG4gICRfc3RvcDogZmFsc2U7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIG5vdCgkX3N0b3ApIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KTtcbiAgICB9XG5cbiAgICBAaWYgJF9yZXR1cm4ge1xuICAgICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfc3RvcDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU2V0dGluZ3Ncbi8vID09PT09PT09XG5cbi8vIFZlcnNpb25cbi8vIC0tLS0tLS1cbiRzdS12ZXJzaW9uOiAxLjE7XG5cblxuLy8gRGVmYXVsdCBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVGhlIGJhc2ljIHNldHRpbmdzXG4kc3VzeS1kZWZhdWx0czogKFxuICBjb2x1bW5zOiA0LFxuICBndXR0ZXJzOiAuMjUsXG4pO1xuXG5cbi8vIFVzZXIgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gRGVmaW5lIHRoZSAkc3VzeSB2YXJpYWJsZSB3aXRoIGEgbWFwIG9mIHlvdXIgb3duIHNldHRpbmdzLlxuLy8gLSBTZXQgRUlUSEVSICRjb2x1bW4td2lkdGggT1IgJGNvbnRhaW5lclxuLy8gLSBVc2UgJGNvbHVtbi13aWR0aCBmb3Igc3RhdGljIGxheW91dHNcbiRzdXN5OiAoKSAhZGVmYXVsdDtcblxuXG4vLyBTdXN5IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBBZGQgZGVmYXVsdHMgdG8gU3VzeVxuQG1peGluIHN1c3ktZGVmYXVsdHMoXG4gICRkZWZhdWx0c1xuKSB7XG4gICRzdXN5LWRlZmF1bHRzOiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRkZWZhdWx0cykgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IFNldFxuLy8gLS0tLS0tLS1cbi8vIENoYW5nZSBvbmUgc2V0dGluZ1xuLy8gLSAka2V5ICAgOiBzZXR0aW5nIG5hbWVcbi8vIC0gJHZhbHVlIDogc2V0dGluZyB2YWx1ZVxuQG1peGluIHN1c3ktc2V0KFxuICAka2V5LXZhbHVlLi4uXG4pIHtcbiAgJHN1c3k6IF9zdXN5LWRlZXAtc2V0KCRzdXN5LCAka2V5LXZhbHVlLi4uKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgR2V0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJuIG9uZSBzZXR0aW5nIGZyb20gYSBncmlkXG4vLyAtICRrZXkgICAgIDogPGtleXdvcmQ+XG4vLyAtICRsYXlvdXQgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIHN1c3ktZ2V0KFxuICAka2V5LFxuICAkbGF5b3V0OiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRzdXN5KVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfb3B0aW9uczogJGxheW91dCAkc3VzeSAkc3VzeS1kZWZhdWx0cztcbiAgJF9icmVhazogZmFsc2U7XG4gICRfcmV0dXJuOiBudWxsO1xuXG4gIEBlYWNoICRvcHQgaW4gJF9vcHRpb25zIHtcbiAgICBAaWYgdHlwZS1vZigkb3B0KSA9PSBtYXAgYW5kIG5vdCgkX2JyZWFrKSB7XG4gICAgICAkX2tleXNldDogX3N1c3ktZGVlcC1oYXMta2V5KCRvcHQsICRrZXkuLi4pO1xuICAgICAgQGlmICRfa2V5c2V0IHtcbiAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtZ2V0KCRvcHQsICRrZXkuLi4pO1xuICAgICAgICAkX2JyZWFrOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBNYXRoIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PVxuXG5cbi8vIFZhbGlkIENvbHVtbnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBjb2x1bW4gc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW5zKFxuICAkY29sdW1ucyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkY29sdW1ucyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGNvbHVtbnMpIHtcbiAgICAkcmV0dXJuOiAkY29sdW1ucztcbiAgfSBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAkZmFpbDogbnVsbDtcbiAgICBAZWFjaCAkY29sIGluICRjb2x1bW5zIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRjb2wpID09IG51bWJlciB7XG4gICAgICAgICRmYWlsOiAkZmFpbCBvciBpZih1bml0bGVzcygkY29sKSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGZhaWw6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgICRyZXR1cm46IGlmKCRmYWlsLCAkcmV0dXJuLCAkY29sdW1ucyk7XG4gIH1cblxuICBAaWYgJHJldHVybiAhPSAkY29sdW1ucyBhbmQgbm90KCRzaWxlbnQpIHtcbiAgICAkcmV0dXJuOiBudWxsO1xuICAgICR3YXJuOiAnJGNvbHVtbnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlciBvciBsaXN0IG9mIHVuaXRsZXNzIG51bWJlcnMuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRjb2x1bW5zfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cblxuLy8gVmFsaWQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGd1dHRlciBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWd1dHRlcnMoXG4gICRndXR0ZXJzLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRndXR0ZXJzKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkZ3V0dGVycykge1xuICAgICRyZXR1cm46ICRndXR0ZXJzO1xuICB9IEBlbHNlIGlmIG5vdCgkc2lsZW50KSB7XG4gICAgJHdhcm46ICckZ3V0dGVycyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skZ3V0dGVyc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQ29sdW1uIG1hdGhcbi8vID09PT09PT09PT09XG5cblxuLy8gSXMgU3ltbWV0cmljYWxcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgYSBncmlkIGlzIHN5bW1ldHJpY2FsLlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIGlzLXN5bW1ldHJpY2FsKFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaWYodHlwZS1vZigkY29sdW1ucykgPT0gbnVtYmVyLCAkY29sdW1ucywgbnVsbCk7XG59XG5cblxuLy8gU3VzeSBDb3VudFxuLy8gLS0tLS0tLS0tLVxuLy8gRmluZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gYSBnaXZlbiBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LWNvdW50KFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpIG9yIGxlbmd0aCgkY29sdW1ucyk7XG59XG5cblxuLy8gU3VzeSBTdW1cbi8vIC0tLS0tLS0tXG4vLyBGaW5kIHRoZSB0b3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeS1zdW0oXG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcblxuICAkc3ByZWFkOiBpZigkc3ByZWFkID09IHdpZGUsIDAsIGlmKCRzcHJlYWQgPT0gd2lkZXIsIDEsIC0xKSk7XG4gICRndXR0ZXItc3VtOiAoc3VzeS1jb3VudCgkY29sdW1ucykgKyAkc3ByZWFkKSAqICRndXR0ZXJzO1xuICAkY29sdW1uLXN1bTogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gIEBpZiBub3QoJGNvbHVtbi1zdW0pIHtcbiAgICBAZWFjaCAkY29sdW1uIGluICRjb2x1bW5zIHtcbiAgICAgICRjb2x1bW4tc3VtOiAoJGNvbHVtbi1zdW0gb3IgMCkgKyAkY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi1zdW0gKyAkZ3V0dGVyLXN1bTtcbn1cblxuXG4vLyBTdXN5IFNsaWNlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgb2YgY29sdW1ucyBhdCBhIGdpdmVuIGxvY2F0aW9uLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktc2xpY2UoXG4gICRzcGFuLFxuICAkbG9jYXRpb24sXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJHN1Yi1jb2x1bW5zOiAkc3BhbjtcblxuICBAaWYgbm90KGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSkge1xuICAgICRsb2NhdGlvbjogJGxvY2F0aW9uIG9yIDE7XG4gICAgJHN1Yi1jb2x1bW5zOiAoKTtcbiAgICBAZm9yICRpIGZyb20gJGxvY2F0aW9uIHRvICgkbG9jYXRpb24gKyAkc3Bhbikge1xuICAgICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRpKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3ViLWNvbHVtbnM7XG59XG5cblxuLy8gU3VzeVxuLy8gLS0tLVxuLy8gRmluZCB0aGUgc3VtIG9mIGEgY29sdW1uLXNwYW4uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbiAgICAgOiBmYWxzZSxcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgICAgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICAgICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAkc3Bhbjogc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG5cbiAgQHJldHVybiBzdXN5LXN1bSgkc3BhbiwgJGd1dHRlcnMsICRzcHJlYWQpO1xufVxuIiwiLy8gRmxvYXQgQVBJXG4vLyA9PT09PT09PT1cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5AaW1wb3J0IFwiZmxvYXQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiZmxvYXQvc3BhblwiO1xuQGltcG9ydCBcImZsb2F0L2VuZFwiO1xuQGltcG9ydCBcImZsb2F0L2lzb2xhdGVcIjtcbiIsIi8vIFNoYXJlZCBBUElcbi8vID09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnRcIjtcblxuQGltcG9ydCBcInNoYXJlZC9pbnNwZWN0XCI7XG5AaW1wb3J0IFwic2hhcmVkL291dHB1dFwiO1xuQGltcG9ydCBcInNoYXJlZC9kaXJlY3Rpb25cIjtcbkBpbXBvcnQgXCJzaGFyZWQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInNoYXJlZC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzaGFyZWQvbWFyZ2luc1wiO1xuQGltcG9ydCBcInNoYXJlZC9wYWRkaW5nXCI7XG5cblxuXG4iLCIvLyBTdXN5IEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnQvc3VwcG9ydFwiO1xuQGltcG9ydCBcInN1cHBvcnQvcHJlZml4XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9yZW1cIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2NsZWFyZml4XCI7XG4iLCIvLyBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IFN1cHBvcnQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogZmFsc2UsXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kLW9wdGlvbnM6IGZhbHNlLFxuICAgIGJyZWFrcG9pbnQ6IHRydWUsXG4gICAgYm94LXNpemluZzogdHJ1ZSxcbiAgICByZW06IHRydWUsXG4gICksXG4pKTtcblxuXG4vLyBTdXN5IFN1cHBvcnQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlbmQgcHJvcGVydHktdmFsdWUgcGFpcnMgdG8gdGhlIHByb3BlciBzdXBwb3J0IG1vZHVsZXMuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1zdXBwb3J0KFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gIC8vIEJhY2tncm91bmQgU3VwcG9ydFxuICBAaWYgJHByb3AgPT0gYmFja2dyb3VuZC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWltYWdlKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtc2l6ZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLXNpemUoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1vcmlnaW4ge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1jbGlwIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtY2xpcCgkdmFsKTtcbiAgfVxuXG4gIC8vIEJveC1TaXppbmcgU3VwcG9ydFxuICBAZWxzZSBpZiAkcHJvcCA9PSBib3gtc2l6aW5nIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJveC1zaXppbmcoJHZhbCk7XG4gIH1cblxuICAvLyBSZW0gU3VwcG9ydFxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJHByb3AsICR2YWwpO1xuICB9XG59XG5cblxuLy8gU3VzeSBTdXBwb3J0IFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3Igc3VwcG9ydCBvZiBhIGZlYXR1cmUuXG4vLyAtICRmZWF0dXJlICAgICAgIDogPHN0cmluZz5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyBcInJlbVwiIG9yIFwiYm94LXNpemluZ1wiXG4vLyAtICRyZXF1aXJlbWVudHMgIDogPG1hcD5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyAodmFyaWFibGU6IHJlbS13aXRoLXB4LWZhbGxiYWNrLCBtaXhpbjogcmVtKVxuLy8gLSAkd2FybiAgICAgICAgICA6IDxib29sPlxuQGZ1bmN0aW9uIHN1c3ktc3VwcG9ydChcbiAgJGZlYXR1cmUsXG4gICRyZXF1aXJlbWVudHM6ICgpLFxuICAkd2FybjogdHJ1ZVxuKSB7XG4gICRfc3VwcG9ydDogc3VzeS1nZXQodXNlLWN1c3RvbSAkZmVhdHVyZSk7XG5cbiAgQGlmICRfc3VwcG9ydCB7XG4gICAgJF9mYWlsOiBmYWxzZTtcblxuICAgIEBlYWNoICRfdHlwZSwgJF9yZXEgaW4gJHJlcXVpcmVtZW50cyB7XG4gICAgICBAZWFjaCAkX2kgaW4gJF9yZXEge1xuICAgICAgICAkX3Bhc3M6IGNhbGwodW5xdW90ZShcIiN7JF90eXBlfS1leGlzdHNcIiksICRfaSk7XG5cbiAgICAgICAgQGlmIG5vdCgkX3Bhc3MpIHtcbiAgICAgICAgICAkX2ZhaWw6IHRydWU7XG4gICAgICAgICAgQGlmICR3YXJuIHtcbiAgICAgICAgICAgIEB3YXJuIFwiWW91IHJlcXVlc3RlZCBjdXN0b20gc3VwcG9ydCBvZiAjeyRmZWF0dXJlfSwgYnV0IHRoZSAjeyRfaX0gI3skX3R5cGV9IGlzIG5vdCBhdmFpbGFibGUuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zdXBwb3J0OiBpZigkX2ZhaWwsIGZhbHNlLCAkX3N1cHBvcnQpO1xuICB9XG5cbiAgQHJldHVybiAkX3N1cHBvcnQ7XG59XG4iLCIvLyBTdXN5IFByZWZpeFxuLy8gPT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBzaW1wbGUgcHJlZml4ZWQgcHJvcGVydGllcy5cbi8vIC0gJHByb3AgICAgICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICAgICAgOiA8Y3NzIHZhbHVlPlxuLy8gLSBbJHByZWZpeF0gIDogPGJyb3dzZXIgcHJlZml4IGxpc3Q+XG5AbWl4aW4gc3VzeS1wcmVmaXgoXG4gICRwcm9wLFxuICAkdmFsLFxuICAkcHJlZml4OiBvZmZpY2lhbFxuKSB7XG4gIEBlYWNoICRmaXggaW4gJHByZWZpeCB7XG4gICAgJGZpeDogaWYoJGZpeCA9PSBvZmZpY2lhbCBvciBub3QoJGZpeCksICRwcm9wLCAnLSN7JGZpeH0tI3skcHJvcH0nKTtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkZml4LCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gQmFja2dyb3VuZCBQcm9wZXJ0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIEltYWdlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWltYWdlPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLWltYWdlLCAobWl4aW46IGJhY2tncm91bmQtaW1hZ2UpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS4uLik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgU2l6ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1zaXplPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1zaXplKFxuICAkc2l6ZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtc2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoJHNpemUpO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBPcmlnaW5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLW9yaWdpbj5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtb3JpZ2luKFxuICAkb3JpZ2luXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1vcmlnaW4pKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1vcmlnaW4oJG9yaWdpbik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkb3JpZ2luO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBDbGlwXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtY2xpcD5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtY2xpcChcbiAgJGNsaXBcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLWNsaXApKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1jbGlwKCRjbGlwKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcDtcbiAgfVxufVxuIiwiLy8gQm94IFNpemluZ1xuLy8gPT09PT09PT09PVxuXG4vLyBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJG1vZGVsOiA8Ym94LXNpemluZz5cbkBtaXhpbiBzdXN5LWJveC1zaXppbmcoXG4gICRtb2RlbDogY29udGVudC1ib3hcbikge1xuICBAaWYgJG1vZGVsIHtcbiAgICBAaWYgc3VzeS1zdXBwb3J0KGJveC1zaXppbmcsIChtaXhpbjogYm94LXNpemluZyksICR3YXJuOiBmYWxzZSkge1xuICAgICAgQGluY2x1ZGUgYm94LXNpemluZygkbW9kZWwpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByZWZpeDogKG1veiwgd2Via2l0LCBvZmZpY2lhbCk7XG4gICAgICBAaW5jbHVkZSBzdXN5LXByZWZpeChib3gtc2l6aW5nLCAkbW9kZWwsICRwcmVmaXgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRGVidWdnaW5nXG4vLyA9PT09PT09PT1cblxuLy8gU3VzeSBJbnNwZWN0XG4vLyAtLS0tLS0tLS0tLS1cbi8vIE91dHB1dCBhcmd1bWVudHMgcGFzc2VkIHRvIGEgaW5zcGVjdC5cbi8vIC0gJG1peGluICA6IDxzdXN5IG1peGluPlxuLy8gLSAkaW5zcGVjICAgOiA8bWl4aW4gYXJndW1lbnRzPlxuXG5AbWl4aW4gc3VzeS1pbnNwZWN0KFxuICAkbWl4aW4sXG4gICRpbnNwZWN0XG4pIHtcbiAgJHNob3c6IGZhbHNlO1xuXG4gIEBlYWNoICRpdGVtIGluICRpbnNwZWN0IHtcbiAgICBAaWYgaW5kZXgoJGl0ZW0sIGluc3BlY3QpIHtcbiAgICAgICRzaG93OiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2hvdyBvciBzdXN5LWdldChkZWJ1ZyBpbnNwZWN0KSB7XG4gICAgLXN1c3ktI3skbWl4aW59OiBpbnNwZWN0KCRpbnNwZWN0KTtcbiAgfVxufVxuIiwiLy8gT3V0cHV0XG4vLyA9PT09PT1cblxuLy8gT3V0cHV0XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBDU1Mgd2l0aCBwcm9wZXIgYnJvd3NlciBzdXBwb3J0LlxuLy8gLSAkc3R5bGVzICA6IDxtYXAgb2YgY3NzIHByb3BlcnR5LXZhbHVlIHBhaXJzPlxuQG1peGluIG91dHB1dChcbiAgJHN0eWxlc1xuKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsIGluICRzdHlsZXMge1xuICAgIEBpbmNsdWRlIHN1c3ktc3VwcG9ydCgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIERpcmVjdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEZsb3cgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgZmxvdzogbHRyLFxuKSk7XG5cbi8vIEdldCBEaXJlY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIG9yICd0bycgZGlyZWN0aW9uIG9mIGEgbHRyIG9yIHJ0bCBmbG93LlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuLy8gLSBbJGtleV0gICA6IGZyb20gfCB0b1xuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGtleTogZnJvbVxuKSB7XG4gICRyZXR1cm46IGlmKCRmbG93ID09IHJ0bCwgKGZyb206IHJpZ2h0LCB0bzogbGVmdCksIChmcm9tOiBsZWZ0LCB0bzogcmlnaHQpKTtcbiAgQHJldHVybiBtYXAtZ2V0KCRyZXR1cm4sICRrZXkpO1xufVxuXG4vLyBUb1xuLy8gLS1cbi8vIFJldHVybiB0aGUgJ3RvJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gdG8oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgdG8pO1xufVxuXG4vLyBGcm9tXG4vLyAtLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gZnJvbShcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCBmcm9tKTtcbn1cbiIsIi8vIEdyaWQgQmFja2dyb3VuZCBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cbi8vIC0gU3ViLXBpeGVsIHJvdW5kaW5nIGNhbiBsZWFkIHRvIHNldmVyYWwgcGl4ZWxzIHZhcmlhdGlvbiBiZXR3ZWVuIGJyb3dzZXJzLlxuXG4vLyBHcmlkIEJhY2tncm91bmQgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRpbWFnZTogYmFja2dyb3VuZC1pbWFnZVxuLy8gLSAkc2l6ZTogYmFja2dyb3VuZC1zaXplXG4vLyAtICRjbGlwOiBiYWNrZ3JvdW5kLWNsaXBcbi8vIC0gWyRmbG93XTogbHRyIHwgcnRsXG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkLW91dHB1dCAoXG4gICRpbWFnZSxcbiAgJHNpemU6IG51bGwsXG4gICRjbGlwOiBudWxsLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlLFxuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemUsXG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRjbGlwLFxuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogZnJvbSgkZmxvdykgdG9wLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFNoYXJlZCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICAgICAgICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGNvbnRhaW5lci1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICAkb3V0cHV0OiAoXG4gICAgI3skcHJvcGVydHl9OiAkd2lkdGggb3IgMTAwJSxcbiAgICBtYXJnaW4tbGVmdDogbnRoKCRqdXN0aWZ5LCAxKSxcbiAgICBtYXJnaW4tcmlnaHQ6IG50aCgkanVzdGlmeSwgMiksXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gTWFyZ2lucyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIE1hcmdpbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gbWFyZ2luLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3skZnJvbX06ICRiZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFBhZGRpbmcgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBQYWRkaW5nIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gcGFkZGluZy1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgQ29udGFpbmVyXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBmbG9hdC1jb250YWluZXIoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICBAaW5jbHVkZSBzdXN5LWNsZWFyZml4O1xuICBAaW5jbHVkZSBjb250YWluZXItb3V0cHV0KCR3aWR0aCwgJGp1c3RpZnksICRwcm9wZXJ0eSk7XG59XG4iLCIvLyBGbG9hdCBTcGFuIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgU3BhbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICR3aWR0aCAgICAgICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvYXRdICAgICAgICAgICA6IGZyb20gfCB0b1xuLy8gLSBbJG1hcmdpbi1iZWZvcmVdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJG1hcmdpbi1hZnRlcl0gICAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYmVmb3JlXSAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYWZ0ZXJdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICAgICAgICAgICAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1zcGFuLW91dHB1dChcbiAgJHdpZHRoLFxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb20sXG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbCxcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsLFxuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGwsXG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbCxcbiAgJGZsb3cgICAgICAgICAgICAgOiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0byAgICAgOiB0bygkZmxvdyk7XG4gICRmcm9tICAgOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGg6ICR3aWR0aCxcbiAgICBmbG9hdDogaWYoJGZsb2F0ID09IHRvLCAkdG8sIG51bGwpIG9yIGlmKCRmbG9hdCA9PSBmcm9tLCAkZnJvbSwgbnVsbCksXG4gICAgbWFyZ2luLSN7JGZyb219OiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJHBhZGRpbmctYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgRW5kcyBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRW5kIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgbGFzdC1mbG93OiB0byxcbikpO1xuXG4vLyBGbG9hdCBMYXN0XG4vLyAtLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtbGFzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAkbGFzdC1mbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBsYXN0LWZsb3cpLFxuICAkbWFyZ2luOiAwXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiBpZigkbGFzdC1mbG93ID09IHRvLCAkdG8sIG51bGwpLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4sXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG4vLyBGbG9hdCBGaXJzdFxuLy8gLS0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1maXJzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0je2Zyb20oJGZsb3cpfTogMCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBJc29sYXRpb24gQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIElzb2xhdGUgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkcHVzaCAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gaXNvbGF0ZS1vdXRwdXQoXG4gICRwdXNoLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogJGZyb20sXG4gICAgbWFyZ2luLSN7JGZyb219OiAkcHVzaCxcbiAgICBtYXJnaW4tI3skdG99OiAtMTAwJSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTdXN5IFNldHRpbmdzXG4vLyA9PT09PT09PT09PT09XG5cbi8vIFN1c3kgTGFuZ3VhZ2UgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogZmx1aWQsXG4gIG91dHB1dDogZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogY2VudGVyLFxuICBndXR0ZXItcG9zaXRpb246IGFmdGVyLFxuICBnbG9iYWwtYm94LXNpemluZzogY29udGVudC1ib3gsXG4gIGRlYnVnOiAoXG4gICAgaW1hZ2U6IGhpZGUsXG4gICAgY29sb3I6IHJnYmEoIzY2ZiwgLjI1KSxcbiAgICBvdXRwdXQ6IGJhY2tncm91bmQsXG4gICAgdG9nZ2xlOiB0b3AgcmlnaHQsXG4gICksXG4pKTtcblxuXG4vLyBWYWxpZCBLZXl3b3JkIFZhbHVlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURTogRE9OVCdUIFRPVUNIXG4kc3VzeS1rZXl3b3JkczogKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IHN0YXRpYyBmbHVpZCxcbiAgb3V0cHV0OiBpc29sYXRlIGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGxlZnQgY2VudGVyIHJpZ2h0LFxuICBmbG93OiBsdHIgcnRsLFxuICBndXR0ZXItcG9zaXRpb246IGJlZm9yZSBhZnRlciBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYyxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveCBjb250ZW50LWJveCxcbiAgc3BhbjogZnVsbCxcbiAgZWRnZTogZmlyc3QgYWxwaGEgbGFzdCBvbWVnYSBmdWxsLFxuICBzcHJlYWQ6IG5hcnJvdyB3aWRlIHdpZGVyLFxuICBndXR0ZXItb3ZlcnJpZGU6IG5vLWd1dHRlcnMgbm8tZ3V0dGVyLFxuICByb2xlOiBuZXN0LFxuICBjbGVhcjogYnJlYWsgbm9icmVhayxcbiAgZGVidWcgaW1hZ2U6IHNob3cgaGlkZSBzaG93LWNvbHVtbnMgc2hvdy1iYXNlbGluZSxcbiAgZGVidWcgb3V0cHV0OiBiYWNrZ3JvdW5kIG92ZXJsYXksXG4pO1xuXG5cbi8vIFBhcnNlIFN1c3kgS2V5d29yZHMgYW5kIE1hcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zZXR0aW5ncyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBzdHJpbmcge1xuICAgICAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHN1c3kta2V5d29yZHMge1xuICAgICAgICAgIEBpZiBpbmRleCgkdmFsdWUsICRpdGVtKSB7XG4gICAgICAgICAgICAkX2tleS12YWx1ZTogYXBwZW5kKCRrZXksICRpdGVtKTtcbiAgICAgICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLXNldCgkX3JldHVybiwgJF9rZXktdmFsdWUuLi4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgLy8gbWFwc1xuICAgICAgfSBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBtYXAge1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBDb2x1bW5zICYgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1sYXlvdXQoXG4gICRzaG9ydFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcbiAgJF9jb2x1bW5zOiAoKTtcbiAgJF9ndXR0ZXJzOiBudWxsO1xuXG4gIEBpZiBub3QodW5pdGxlc3MobnRoKG50aCgkc2hvcnQsIDEpLCAxKSkpIHtcbiAgICAkX2d1dHRlcnM6IG50aCgkc2hvcnQsIDEpO1xuICB9IEBlbHNlIHtcbiAgICAkX2NvbHVtbnM6IChjb2x1bW5zOiBudGgoJHNob3J0LCAxKSk7XG4gICAgJF9ndXR0ZXJzOiBpZihsZW5ndGgoJHNob3J0KSA+IDEsIG50aCgkc2hvcnQsIDIpLCAkX2d1dHRlcnMpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJF9ndXR0ZXJzKSA9PSBsaXN0IGFuZCBsZW5ndGgoJF9ndXR0ZXJzKSA+IDAge1xuICAgICRfZ3V0dGVyczogKFxuICAgICAgZ3V0dGVyczogbnRoKCRfZ3V0dGVycywgMikgLyBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICAgIGNvbHVtbi13aWR0aDogbnRoKCRfZ3V0dGVycywgMSksXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9ndXR0ZXJzOiBpZigkX2d1dHRlcnMsIChndXR0ZXJzOiAkX2d1dHRlcnMpLCAoKSk7XG4gIH1cblxuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2NvbHVtbnMpO1xuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2d1dHRlcnMpO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3JpZC9Db250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ncmlkKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46IHBhcnNlLXNldHRpbmdzKCRzaG9ydCk7XG4gICRfbGF5b3V0OiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIG51bWJlciBvciBsaXN0XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIG9yIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qge1xuICAgICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCBvciB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAgICRfbGF5b3V0OiBhcHBlbmQoJF9sYXlvdXQsICRpdGVtKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNvbnRhaW5lcjogJGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfbGF5b3V0OiBpZihsZW5ndGgoJF9sYXlvdXQpID4gMCwgcGFyc2UtbGF5b3V0KCRfbGF5b3V0KSwgJF9sYXlvdXQpO1xuICB9XG5cbiAgQHJldHVybiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfbGF5b3V0KTtcbn1cblxuXG4vLyBQYXJzZSBTcGFuXG4vLyAtLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc3BhbihcbiAgJHNob3J0LFxuICAka2V5OiBzcGFuXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICAkX2F0OiBpbmRleCgkc2hvcnQsIGF0KTtcblxuICAgIEBpZiAkX2F0IHtcbiAgICAgICRfbG9jaTogJF9hdCArIDE7XG4gICAgICAkX2xvY2F0aW9uOiBudGgoJHNob3J0LCAkX2xvY2kpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGxvY2F0aW9uOiAkX2xvY2F0aW9uKSk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2F0LCBudWxsKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfbG9jaSwgbnVsbCk7XG4gICAgfVxuXG4gICAgJF9pOiAxO1xuICAgICRfc3BhbjogKCk7XG5cbiAgICBAd2hpbGUgJF9pIDw9IGxlbmd0aCgkc2hvcnQpIHtcbiAgICAgICRfdGhpczogbnRoKCRzaG9ydCwgJF9pKTtcblxuICAgICAgQGlmIHR5cGUtb2YoJF90aGlzKSA9PSBudW1iZXIge1xuICAgICAgICAkX3NwYW46IGFwcGVuZCgkX3NwYW4sICRfdGhpcyk7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICB9IEBlbHNlIGlmICRfdGhpcyA9PSBvZiB7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICAgICRfaTogbGVuZ3RoKCRzaG9ydCkgKyAxO1xuICAgICAgfVxuXG4gICAgICAkX2k6ICRfaSArIDE7XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkX3NwYW4pID4gMCB7XG4gICAgICAkX3NwYW46IGlmKGxlbmd0aCgkX3NwYW4pID09IDEsIG50aCgkX3NwYW4sIDEpLCAkX3NwYW4pO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRrZXk6ICRfc3BhbikpO1xuICAgIH1cblxuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIHBhcnNlLWdyaWQoJHNob3J0KSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ndXR0ZXJzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9ndXR0ZXJzOiBwYXJzZS1zcGFuKCRzaG9ydCwgZ3V0dGVyLW92ZXJyaWRlKTtcbiAgJF9zcGFuOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRfZ3V0dGVycyk7XG5cbiAgQGlmICRfc3BhbiBhbmQgbm90KG1hcC1nZXQoJF9ndXR0ZXJzLCBjb2x1bW5zKSkge1xuICAgICRfY29udGV4dDogKCk7XG4gICAgJF9uZXc6ICgpO1xuXG4gICAgQGVhY2ggJGl0ZW0gaW4gJF9zcGFuIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICRfY29udGV4dDogYXBwZW5kKCRfY29udGV4dCwgJGl0ZW0pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRfbmV3OiBhcHBlbmQoJF9uZXcsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2NvbnRleHQ6IHBhcnNlLWdyaWQoJF9jb250ZXh0KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAwLCBudWxsLCAkX25ldyk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMSwgbnRoKCRfbmV3LCAxKSwgJF9uZXcpO1xuICAgICRfbmV3OiAoZ3V0dGVyLW92ZXJyaWRlOiBpZigkX25ldyAhPSAkX3NwYW4sICRfbmV3LCAkX3NwYW4pKTtcblxuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9uZXcpO1xuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9jb250ZXh0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuIiwiLy8gVmFsaWRhdGlvblxuLy8gPT09PT09PT09PVxuXG5cbi8vIFZhbGlkYXRlIENvbHVtbiBNYXRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbi1tYXRoKFxuICAkbWF0aCxcbiAgJGNvbHVtbi13aWR0aFxuKSB7XG4gIEBpZiAkbWF0aCA9PSBzdGF0aWMgYW5kIG5vdCgkY29sdW1uLXdpZHRoKSB7XG4gICAgQGVycm9yICdTdGF0aWMgbWF0aCByZXF1aXJlcyBhIHZhbGlkIGNvbHVtbi13aWR0aCBzZXR0aW5nLic7XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4td2lkdGg7XG59XG4iLCIvLyBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gU2V0IGEgbmV3IGxheW91dCB1c2luZyBhIHNob3J0aGFuZFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIGxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGF5b3V0LCAkaW5zcGVjdCk7XG59XG5cblxuLy8gVXNlIEdyaWRcbi8vIC0tLS0tLS0tXG4vLyBVc2UgYW4gYXJiaXRyYXJ5IGxheW91dCBmb3IgYSBzZWN0aW9uIG9mIGNvZGVcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiB3aXRoLWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRvbGQgICAgICA6ICRzdXN5O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHdpdGgtbGF5b3V0LCAkaW5zcGVjdCk7XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3k6ICRvbGQgIWdsb2JhbDtcbn1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIGEgcGFyc2VkIGxheW91dCBtYXAgYmFzZWQgb24gc2hvcnRoYW5kIHN5bnRheFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gbGF5b3V0KFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbn1cblxuXG4vLyBHZXQgTGF5b3V0XG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuZXcgbGF5b3V0IGJhc2VkIG9uIGN1cnJlbnQgYW5kIGdpdmVuIHNldHRpbmdzXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AZnVuY3Rpb24gX2dldC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkbGF5b3V0OiBsYXlvdXQoJGxheW91dCk7XG4gIEByZXR1cm4gaWYoJGNsZWFuLCAkbGF5b3V0LCBfc3VzeS1kZWVwLW1lcmdlKCRzdXN5LCAkbGF5b3V0KSk7XG59XG4iLCIvLyBTdXN5IEJveCBTaXppbmdcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgYm94IG1vZGVsIGdsb2JhbGx5IG9uIGFsbCBlbGVtZW50cy5cbi8vIC0gWyRib3hdOiBib3JkZXItYm94IHwgY29udGVudC1ib3hcbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gZ2xvYmFsLWJveC1zaXppbmcoXG4gICRib3g6IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSxcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3Q6ICRib3g7XG5cbiAgQGlmICRpbmhlcml0IHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgaHRtbCB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gICAgICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG4gICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdsb2JhbC1ib3gtc2l6aW5nLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHVwZGF0ZS1ib3gtbW9kZWwoJGJveCk7XG59XG5cbi8vIEJvcmRlciBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gQSBsZWdhY3kgc2hvcnRjdXQuLi5cbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gYm9yZGVyLWJveC1zaXppbmcoXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGdsb2JhbC1ib3gtc2l6aW5nKGJvcmRlci1ib3gsICRpbmhlcml0KTtcbn1cblxuLy8gVXBkYXRlIEJveCBNb2RlbFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVXBkYXRlcyBnbG9iYWwgYm94IG1vZGVsIHNldHRpbmdcbkBtaXhpbiB1cGRhdGUtYm94LW1vZGVsKFxuICAkYm94XG4pIHtcbiAgQGlmICRib3ggIT0gc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpIHtcbiAgQGluY2x1ZGUgc3VzeS1zZXQoZ2xvYmFsLWJveC1zaXppbmcsICRib3gpO1xuICB9XG59XG4iLCIvLyBDb250ZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gTmVzdGVkIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgZ3JpZCBmb3IgbmVzdGVkIGNvbnRleHQuXG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGNvbnRleHQgICAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJHNwYW4gICAgICAgOiBzdXN5LWdldChzcGFuLCAkY29udGV4dCk7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRjb250ZXh0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbn1cblxuLy8gTmVzdGVkIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBVc2UgYSBzdWJzZXQgZ3JpZCBmb3IgYSBuZXN0ZWQgY29udGV4dFxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG4vLyAtIEBjb250ZW50ICAgOiA8Y29udGVudD5cbkBtaXhpbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkb2xkICAgICAgOiBzdXN5LWdldChjb2x1bW5zKTtcbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogbmVzdGVkKCRjb250ZXh0KSkpICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KG5lc3RlZCwgJGluc3BlY3QpO1xuICBAY29udGVudDtcblxuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiAkb2xkKSkgIWdsb2JhbDtcbn1cbiIsIi8vIEJhY2tncm91bmQgR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiBmYWxzZTtcblxuXG4vLyBTaG93IEdyaWQvc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFNob3cgZ3JpZCBvbiBhbnkgZWxlbWVudCB1c2luZyBlaXRoZXIgYmFja2dyb3VuZCBvciBvdmVybGF5LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBzaG93LWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0OiAkZ3JpZDtcbiAgJF9vdXRwdXQ6IGRlYnVnLWdldChvdXRwdXQsICRncmlkKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc2hvdy1ncmlkLCAkaW5zcGVjdCk7XG4gIEBpZiAkX291dHB1dCA9PSBvdmVybGF5IGFuZCBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpICE9IGhpZGUge1xuICAgIEBpbmNsdWRlIG92ZXJsYXktZ3JpZCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gIH1cbn1cblxuQG1peGluIHNob3ctZ3JpZHMoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkZ3JpZCk7XG59XG5cbi8vIEJhY2tncm91bmQgR3JpZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTaG93IGEgZ3JpZCBiYWNrZ3JvdW5kIG9uIGFueSBlbGVtZW50LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRncmlkO1xuICAkX291dHB1dCAgOiBnZXQtYmFja2dyb3VuZCgkZ3JpZCk7XG5cbiAgQGlmIGxlbmd0aCgkX291dHB1dCkgPiAwIHtcbiAgICAkX2Zsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKTtcblxuICAgICRfaW1hZ2U6ICgpO1xuICAgIEBlYWNoICRuYW1lLCAkbGF5ZXIgaW4gbWFwLWdldCgkX291dHB1dCwgaW1hZ2UpIHtcbiAgICAgICRfZGlyZWN0aW9uOiBpZigkbmFtZSA9PSBiYXNlbGluZSwgdG8gYm90dG9tLCB0byB0bygkX2Zsb3cpKTtcbiAgICAgICRfaW1hZ2U6IGFwcGVuZCgkX2ltYWdlLCBsaW5lYXItZ3JhZGllbnQoJF9kaXJlY3Rpb24sICRsYXllciksIGNvbW1hKTtcbiAgICB9XG4gICAgJF9vdXRwdXQ6IG1hcC1tZXJnZSgkX291dHB1dCwgKGltYWdlOiAkX2ltYWdlKSk7XG5cbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmFja2dyb3VuZC1ncmlkLCAkaW5zcGVjdCk7XG4gIH1cbn1cblxuXG4vLyBPdmVybGF5IEdyaWRcbi8vIC0tLS0tLS0tLS0tLVxuLy8gR2VuZXJhdGUgYW4gaWNvbiB0byB0cmlnZ2VyIGdyaWQtb3ZlcmxheXMgb24gYW55IGdpdmVuIGVsZW1lbnRzLlxuLy8gJGdyaWRzLi4uICA6IDxzZWxlY3Rvcj4gWzxzZXR0aW5ncz5dIFssIDxzZWxlY3Rvcj5dKlxuQG1peGluIG92ZXJsYXktZ3JpZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpZiBub3QoJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzKSB7XG4gICAgQGF0LXJvb3QgaGVhZCB7IEBpbmNsdWRlIG92ZXJsYXktaGVhZCgkZ3JpZCk7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmJlZm9yZSB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlcjsgfVxuICAgIEBhdC1yb290IGhlYWQ6aG92ZXIgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXItaG92ZXI7IH1cbiAgICAkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIGhlYWQ6aG92ZXIgfiAmLFxuICBoZWFkOmhvdmVyIH4gYm9keSAmIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1vdmVybGF5LWJhc2U7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXIge1xuICBjb250ZW50OiBcInx8fFwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGZvbnQ6IHtcbiAgICBmYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgc2l6ZTogMTZweDtcbiAgICB3ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyIEhvdmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjUpO1xuICBjb2xvcjogcmVkO1xufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IEhlYWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDxoZWFkPiBzdHlsZXMgdG8gY3JlYXRlIGdyaWQgb3ZlcmxheSB0b2dnbGVcbkBtaXhpbiBvdmVybGF5LWhlYWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkX3RvZ2dsZTogZGVidWctZ2V0KHRvZ2dsZSwgJGdyaWQpO1xuICAkX2hvcno6IG51bGw7XG4gICRfdmVydDogbnVsbDtcblxuICBAZWFjaCAkc2lkZSBpbiAkX3RvZ2dsZSB7XG4gICAgJF9ob3J6OiBpZigkc2lkZSA9PSBsZWZ0IG9yICRzaWRlID09IHJpZ2h0LCAkc2lkZSwgJF9ob3J6KTtcbiAgICAkX3ZlcnQ6IGlmKCRzaWRlID09IHRvcCBvciAkc2lkZSA9PSBib3R0b20sICRzaWRlLCAkX3ZlcnQpO1xuICB9XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgI3skX2hvcnp9OiAxMHB4O1xuICAjeyRfdmVydH06IDEwcHg7XG4gIHotaW5kZXg6IDk5OTtcbiAgY29sb3I6ICMzMzM7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC4yNSk7XG59XG5cblxuLy8gW1ByaXZhdGVdIEdyaWQgT3ZlcmxheSBCYXNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJhc2Ugc3R5bGVzIGZvciBnZW5lcmF0aW5nIGEgZ3JpZCBvdmVybGF5XG5AbWl4aW4gZ3JpZC1vdmVybGF5LWJhc2UoKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBjb250ZW50OiBcIiBcIjtcbiAgei1pbmRleDogOTk4O1xufVxuXG5cbi8vIEdldCBTeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1zeW0oXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgICAgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfZ3V0dGVycyAgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRncmlkKTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkZ3JpZCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRncmlkKTtcblxuICAkX2NvbG9yICAgICAgICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX3RyYW5zICAgICAgICAgOiB0cmFuc3BhcmVudDtcbiAgJF9saWdodCAgICAgICAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuXG4gICRfZW5kICAgICAgICAgICA6IDEgKyAkX2d1dHRlcnM7XG4gICRfYWZ0ZXIgICAgICAgICA6IHBlcmNlbnRhZ2UoMS8kX2VuZCk7XG4gICRfc3RvcHMgICAgICAgICA6ICgpO1xuICAkX3NpemUgICAgICAgICAgOiBzcGFuKDEgJGdyaWQgd2lkZSk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQ7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3NwbGl0OiAkX2d1dHRlcnMvMjtcbiAgICAkX2JlZm9yZTogcGVyY2VudGFnZSgkX3NwbGl0LyRfZW5kKTtcbiAgICAkX2FmdGVyOiBwZXJjZW50YWdlKCgxICsgJF9zcGxpdCkvJF9lbmQpO1xuICAgICRfc3RvcHM6ICRfdHJhbnMgJF9iZWZvcmUsICRfY29sb3IgJF9iZWZvcmUsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfVxuXG4gIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAkX3NpemU6IHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpICogJF9lbmQ7XG4gIH1cblxuICAkX291dHB1dDogKFxuICAgIGltYWdlOiAoY29sdW1uczogJF9zdG9wcyksXG4gICAgc2l6ZTogJF9zaXplLFxuICApO1xuXG4gIEByZXR1cm4gJF9vdXRwdXQ7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBJbnNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0taW5zaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIFNwbGl0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tc3BsaXQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkc3RhcnQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcblxuICAgICRfZW5kOiAkc3RhcnQgKyBzcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkX2VuZCwgY29tbWEpO1xuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBPdXRzaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1vdXRzaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3RyYW5zICAgOiB0cmFuc3BhcmVudDtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRndXR0ZXI6IGdldC1zcGFuLXdpZHRoKGZpcnN0ICRsb2NhdGlvbiAkZ3JpZCk7XG5cbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcblxuICAgICAgJGd1dHRlcjogJF9saWdodCAkZ3V0dGVyLCAkX3RyYW5zICRndXR0ZXIsICRfdHJhbnMgJF9lbmQ7XG4gICAgICAkdGhpcy1zdG9wOiBqb2luKCR0aGlzLXN0b3AsICRndXR0ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLWFzeW0oXG4gICRncmlkXG4pIHtcbiAgJF9zdG9wczogKCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLWluc2lkZSgkZ3JpZCk7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1zcGxpdCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLW91dHNpZGUoJGdyaWQpO1xuICB9XG5cbiAgQHJldHVybiAoaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSk7XG59XG5cblxuLy8gR2V0IEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfc2hvdyAgICA6IHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCk7XG4gICRfcmV0dXJuICA6ICgpO1xuXG4gIEBpZiAkX3Nob3cgYW5kICRfc2hvdyAhPSAnaGlkZScge1xuICAgICRfY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgJF9zeW06IGlzLXN5bW1ldHJpY2FsKCRfY29sdW1ucyk7XG4gICAgICAkX3JldHVybjogaWYoJF9zeW0sIGdldC1iYWNrZ3JvdW5kLXN5bSgkZ3JpZCksIGdldC1iYWNrZ3JvdW5kLWFzeW0oJGdyaWQpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBjb250ZW50LWJveCkpO1xuICAgIH1cblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctY29sdW1ucydcbiAgICAgIGFuZCBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKGJhc2UtbGluZS1oZWlnaHQpXG4gICAgICBhbmQgdHlwZS1vZigkYmFzZS1saW5lLWhlaWdodCkgPT0gJ251bWJlcidcbiAgICAgIGFuZCBub3QgdW5pdGxlc3MoJGJhc2UtbGluZS1oZWlnaHQpIHtcbiAgICAgICRfY29sb3I6IHZhcmlhYmxlLWV4aXN0cygnZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yJyk7XG4gICAgICAkX2NvbG9yOiBpZigkX2NvbG9yLCAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yLCAjMDAwKTtcblxuICAgICAgJF9pbWFnZTogbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpO1xuICAgICAgJF9zaXplOiBtYXAtZ2V0KCRfcmV0dXJuLCBzaXplKTtcbiAgICAgICRfYmFzZWxpbmU6IChiYXNlbGluZTogKCRfY29sb3IgMXB4LCB0cmFuc3BhcmVudCAxcHgpKTtcbiAgICAgICRfYmFzZWxpbmUtc2l6ZTogMTAwJSAkYmFzZS1saW5lLWhlaWdodDtcblxuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKFxuICAgICAgICBpbWFnZTogaWYoJF9pbWFnZSwgbWFwLW1lcmdlKCRfaW1hZ2UsICRfYmFzZWxpbmUpLCAkX2Jhc2VsaW5lKSxcbiAgICAgICAgc2l6ZTogaWYoJF9zaXplLCAoJF9zaXplLCAkX2Jhc2VsaW5lLXNpemUpLCAkX2Jhc2VsaW5lLXNpemUpLFxuICAgICAgKSk7XG5cbiAgICAgIEBpZiAkX3Nob3cgPT0gJ3Nob3cnIHtcbiAgICAgICAgJF9jbGlwOiBtYXAtZ2V0KCRfcmV0dXJuLCBjbGlwKTtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGpvaW4oJF9jbGlwLCBib3JkZXItYm94LCBjb21tYSkpKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRfc2hvdyA9PSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgQHdhcm4gJ1BsZWFzZSBwcm92aWRlIGEgJGJhc2UtbGluZS1oZWlnaHQgd2l0aCB0aGUgZGVzaXJlZCBoZWlnaHQgYW5kIHVuaXRzJztcbiAgICB9XG4gIH1cblxuICBAaWYgbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIEdldCBEZWJ1Z1xuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgZGVidWcgc2V0dGluZ1xuLy8gLSAka2V5OiA8c2V0dGluZz5cbkBmdW5jdGlvbiBkZWJ1Zy1nZXQoXG4gICRrZXksXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRrZXk6IGpvaW4oZGVidWcsICRrZXksIHNwYWNlKTtcbiAgQHJldHVybiBzdXN5LWdldCgka2V5LCAkZ3JpZCk7XG59XG4iLCIvLyBDb250YWluZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgY29udGFpbmVyIGVsZW1lbnRcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgICAgOiAkbGF5b3V0O1xuICAkbGF5b3V0ICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG5cbiAgJF93aWR0aCAgICAgOiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xuICAkX2p1c3RpZnkgICA6IHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihzdXN5LWdldChjb250YWluZXItcG9zaXRpb24sICRsYXlvdXQpKTtcbiAgJF9wcm9wZXJ0eSAgOiBpZihzdXN5LWdldChtYXRoLCAkbGF5b3V0KSA9PSBzdGF0aWMsIHdpZHRoLCBtYXgtd2lkdGgpO1xuXG4gICRfYm94ICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJGxheW91dCk7XG5cbiAgQGlmICRfYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRfYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoY29udGFpbmVyLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGZsb2F0LWNvbnRhaW5lcigkX3dpZHRoLCAkX2p1c3RpZnksICRfcHJvcGVydHkpO1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGxheW91dCk7XG59XG5cbi8vIENvbnRhaW5lciBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICBAcmV0dXJuIGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG59XG5cbi8vIEdldCBDb250YWluZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSB0aGUgY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XTogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1jb250YWluZXItd2lkdGgoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dCAgICAgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF93aWR0aCAgICAgICAgIDogc3VzeS1nZXQoY29udGFpbmVyLCAkbGF5b3V0KTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkbGF5b3V0KTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGxheW91dCk7XG5cbiAgQGlmIG5vdCgkX3dpZHRoKSBvciAkX3dpZHRoID09IGF1dG8ge1xuICAgIEBpZiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSB7XG4gICAgICAkX2NvbHVtbnMgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRsYXlvdXQpO1xuICAgICAgJF9ndXR0ZXJzICAgOiBzdXN5LWdldChndXR0ZXJzLCAkbGF5b3V0KTtcbiAgICAgICRfc3ByZWFkICAgIDogaWYoaXMtc3BsaXQoJGxheW91dCksIHdpZGUsIG5hcnJvdyk7XG4gICAgICAkX3dpZHRoICAgICA6IHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkgKiAkX2NvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3dpZHRoO1xufVxuXG4vLyBQYXJzZSBDb250YWluZXIgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyc2UgdGhlICRjb250YWluZXItcG9zaXRpb24gaW50byBtYXJnaW4gdmFsdWVzLlxuLy8gLSBbJGp1c3RpZnldICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCA8bGVuZ3RoPiBbPGxlbmd0aD5dXG5AZnVuY3Rpb24gcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKFxuICAkanVzdGlmeTogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgY29udGFpbmVyLXBvc2l0aW9uKVxuKSB7XG4gICRfcmV0dXJuOiBpZigkanVzdGlmeSA9PSBsZWZ0LCAwLCBhdXRvKSBpZigkanVzdGlmeSA9PSByaWdodCwgMCwgYXV0byk7XG5cbiAgQGlmIG5vdChpbmRleChsZWZ0IHJpZ2h0IGNlbnRlciwgJGp1c3RpZnkpKSB7XG4gICAgJF9yZXR1cm46IG50aCgkanVzdGlmeSwgMSk7XG4gICAgJF9yZXR1cm46ICRfcmV0dXJuIGlmKGxlbmd0aCgkanVzdGlmeSkgPiAxLCBudGgoJGp1c3RpZnksIDIpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU3BhbiBTeW50YXhcbi8vID09PT09PT09PT09XG5cbi8vIFNwYW4gW21peGluXVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBzcGFubmluZyBlbGVtZW50IHVzaW5nIHNob3J0aGFuZCBzeW50YXguXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbjogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRvdXRwdXQ6IHNwYW4tbWF0aCgkc3Bhbik7XG4gICRuZXN0aW5nOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjbGVhcjogc3VzeS1nZXQoY2xlYXIsICRzcGFuKTtcblxuICAkYm94OiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRjb250ZW50LWJveDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuICAkYm94OiAkYm94IG9yIGlmKGlzLWluc2lkZSgkc3BhbikgYW5kICRjb250ZW50LWJveCwgYm9yZGVyLWJveCwgbnVsbCk7XG5cbiAgQGlmICRjbGVhciA9PSBicmVhayB7XG4gICAgQGluY2x1ZGUgYnJlYWs7XG4gIH0gQGVsc2UgaWYgJGNsZWFyID09IG5vYnJlYWsge1xuICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3BhbiwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTtcbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgQGlmIHZhbGlkLWNvbHVtbnMoJG5lc3RpbmcsIHNpbGVudCkge1xuICAgIEBpbmNsdWRlIG5lc3RlZCgkc3BhbikgeyBAY29udGVudDsgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTcGFuIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIHNwYW4uXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQGZ1bmN0aW9uIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgQHJldHVybiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG59XG5cbi8vIFNwYW4gTWF0aFxuLy8gLS0tLS0tLS0tXG4vLyBHZXQgYWxsIHRoZSBzcGFuIHJlc3VsdHMuXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIHNwYW4tbWF0aChcbiAgJHNwYW5cbikge1xuICAkbmVzdCAgICAgICAgICAgICA6IGlmKHN1c3ktZ2V0KHJvbGUsICRzcGFuKSA9PSBuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRzcGxpdC1uZXN0ICAgICAgIDogaWYoaXMtc3BsaXQoJHNwYW4pIGFuZCAkbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZWRnZSAgICAgICAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgICAgICAgOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbTtcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsO1xuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGw7XG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbDtcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aWR0aHNcbiAgJHNwcmVhZDogaW5kZXgobWFwLXZhbHVlcygkc3BhbiksIHNwcmVhZCk7XG4gICRzcGFuOiBpZigkc3BsaXQtbmVzdCBhbmQgbm90KCRzcHJlYWQpLCBtYXAtbWVyZ2UoJHNwYW4sIChzcHJlYWQ6IHdpZGUpKSwgJHNwYW4pO1xuICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbiAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAvLyBhcHBseSBndXR0ZXJzXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaWYgbm90KHN1c3ktZ2V0KHJvbGUsICRzcGFuKSkge1xuICAgICAgJHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBub3QoJHNwbGl0LW5lc3QpIHtcbiAgICAgICRtYXJnaW4tYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJG1hcmdpbi1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNwZWNpYWwgbWFyZ2luIGhhbmRsaW5nXG4gIEBpZiBzdXN5LWdldChvdXRwdXQsICRzcGFuKSA9PSBpc29sYXRlIGFuZCAkbG9jYXRpb24ge1xuICAgICRtYXJnaW4tYmVmb3JlOiBnZXQtaXNvbGF0aW9uKCRzcGFuKTtcbiAgICAkbWFyZ2luLWFmdGVyOiAtMTAwJTtcbiAgfSBAZWxzZSBpZiAkZWRnZSB7XG4gICAgJGlzLXNwbGl0OiBpcy1zcGxpdCgkc3Bhbik7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG5cbiAgICBAaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkZmxvYXQ6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJHNwYW4pO1xuICAgIH1cblxuICAgIEBpZiBub3QoJGlzLXNwbGl0KSB7XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gZmlyc3QgYW5kICRwb3MgPT0gYmVmb3JlKSB7XG4gICAgICAgICRtYXJnaW4tYmVmb3JlOiAwO1xuICAgICAgfVxuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGxhc3QgYW5kICRwb3MgPT0gYWZ0ZXIpIHtcbiAgICAgICAgJG1hcmdpbi1hZnRlcjogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gKFxuICAgIHdpZHRoICAgICAgICAgICA6ICR3aWR0aCxcbiAgICBmbG9hdCAgICAgICAgICAgOiAkZmxvYXQsXG4gICAgbWFyZ2luLWJlZm9yZSAgIDogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLWFmdGVyICAgIDogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLWJlZm9yZSAgOiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy1hZnRlciAgIDogJHBhZGRpbmctYWZ0ZXIsXG4gICAgZmxvdyAgICAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xufVxuXG4vLyBHZXQgU3BhbiBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBzcGFuIHdpZHRoLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBnZXQtc3Bhbi13aWR0aChcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcblxuICAkbiAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRsb2NhdGlvbiA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycywgJHNwYW4pO1xuICAkc3ByZWFkICAgOiBzdXN5LWdldChzcHJlYWQsICRzcGFuKTtcblxuICAkY29udGV4dCAgOiBudWxsO1xuICAkc3Bhbi1zdW0gOiBudWxsO1xuICAkd2lkdGggICAgOiBudWxsO1xuXG4gIEBpZiAkbiA9PSAnZnVsbCcge1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuICAgICRyb2xlOiBzdXN5LWdldChyb2xlLCAkc3Bhbik7XG4gICAgJG46IGlmKCRwb3MgPT0gc3BsaXQgYW5kICRyb2xlICE9IG5lc3QsIHN1c3ktY291bnQoJGNvbHVtbnMpLCAxMDAlKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRuKSAhPSBudW1iZXIge1xuICAgIEB3YXJuIFwiKCN7dHlwZS1vZigkbil9KSAjeyRufSBpcyBub3QgYSB2YWxpZCBzcGFuLlwiO1xuICB9IEBlbHNlIGlmIHVuaXRsZXNzKCRuKSB7XG4gICAgJGNvbnRleHQ6IHN1c3ktc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgaWYoaXMtc3BsaXQoJHNwYW4pLCB3aWRlLCBuYXJyb3cpKTtcbiAgICAkc3ByZWFkOiBpZihpcy1pbnNpZGUoJHNwYW4pLCAkc3ByZWFkIG9yIHdpZGUsICRzcHJlYWQpO1xuICAgICRzcGFuLXN1bTogc3VzeSgkbiwgJGxvY2F0aW9uLCAkY29sdW1ucywgJGd1dHRlcnMsICRzcHJlYWQpO1xuXG4gICAgJF9tYXRoOiBzdXN5LWdldChtYXRoLCAkc3Bhbik7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJHNwYW4pO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICR3aWR0aDogJHNwYW4tc3VtICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJHNwYW4tc3VtIC8gJGNvbnRleHQpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHdpZHRoOiAkbjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuIiwiLy8gR3V0dGVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIEd1dHRlcnNcbi8vIC0tLS0tLS1cbi8vIFNldCBndXR0ZXJzIG9uIGFuIGVsZW1lbnQuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVycyA6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX291dHB1dDogKFxuICAgIGJlZm9yZTogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSksXG4gICAgYWZ0ZXI6IG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlciksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChndXR0ZXJzLCAkaW5zcGVjdCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH1cbn1cblxuQG1peGluIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZ3V0dGVycygkc3Bhbik7XG59XG5cblxuLy8gR3V0dGVyXG4vLyAtLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBndXR0ZXIuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRzcGFuOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX2d1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSBvciBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuXG5AZnVuY3Rpb24gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQHJldHVybiBndXR0ZXIoJHNwYW4pO1xufVxuXG5cbi8vIEdldCBHdXR0ZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBndXR0ZXIgd2lkdGguXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXItd2lkdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVycyA6IHN1c3ktZ2V0KGd1dHRlcnMsICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgIDogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkY29udGV4dCk7XG5cbiAgQGlmICRfZ3V0dGVycyBhbmQgKCRfZ3V0dGVycyA+IDApIGFuZCBub3QoJF9ndXR0ZXIpIHtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkY29udGV4dCk7XG4gICAgJF9tYXRoOiBndXR0ZXItbWF0aCgkY29udGV4dCk7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJF9ndXR0ZXI6ICRfZ3V0dGVycyAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuICAgICAgJF9zcHJlYWQgIDogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCB3aWRlLCBzdXN5LWdldChzcHJlYWQsICRjb250ZXh0KSk7XG4gICAgICAkX2d1dHRlciAgOiBwZXJjZW50YWdlKCRfZ3V0dGVycyAvIHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkpO1xuICAgIH1cbiAgfVxuXG4gICRfZ3V0dGVyOiBpZigkX2d1dHRlciA9PSAnbm8tZ3V0dGVycycgb3IgJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcicsIG51bGwsICRfZ3V0dGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVyO1xufVxuXG5cbi8vIEdldCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGJlZm9yZSBhbmQgYWZ0ZXIgZ3V0dGVyIHZhbHVlcy5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlcnMoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICAgICAgICAgICAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlci1wb3NpdGlvbiAgIDogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICAgICAgICAgICAgOiBnZXQtZ3V0dGVyLXdpZHRoKCRjb250ZXh0KTtcblxuICAkX3JldHVybiAgICAgICAgICAgIDogKGJlZm9yZTogbnVsbCwgYWZ0ZXI6IG51bGwpO1xuXG4gIEBpZiBpcy1zcGxpdCgkY29udGV4dCkgYW5kICRfZ3V0dGVyIHtcbiAgICAkX2d1dHRlcjogJF9ndXR0ZXIgLyAyO1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChiZWZvcmU6ICRfZ3V0dGVyLCBhZnRlcjogJF9ndXR0ZXIpKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRfZ3V0dGVyLXBvc2l0aW9uOiAkX2d1dHRlcikpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBJcyBJbnNpZGVcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIGluc2lkZS5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1pbnNpZGUoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9pbnNpZGU6IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX2luc2lkZSwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gSXMgU3BsaXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgc3BsaXQuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtc3BsaXQoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9zcGxpdDogc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfc3BsaXQsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIEd1dHRlciBNYXRoXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBtYXRoIHRvIHVzZSBmb3IgZ3V0dGVyIGNhbGN1bGF0aW9uc1xuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGd1dHRlci1tYXRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkX3JldHVybiAgOiBzdXN5LWdldChtYXRoLCAkY29udGV4dCk7XG4gICRfcmV0dXJuICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpID09IGluc2lkZS1zdGF0aWMsIHN0YXRpYywgJF9yZXR1cm4pO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBJc29sYXRpb24gU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cblxuLy8gSXNvbGF0ZSBbTWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBpc29sYXRpb24gYXMgYW4gb3ZlcnJpZGUuXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AbWl4aW4gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaW5zcGVjdDogJGlzb2xhdGU7XG5cbiAgJG91dHB1dDogKFxuICAgIHB1c2g6IGlzb2xhdGUoJGlzb2xhdGUpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRpc29sYXRlKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoaXNvbGF0ZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBpc29sYXRlLW91dHB1dCgkb3V0cHV0Li4uKTtcbn1cblxuXG4vLyBJc29sYXRlIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGFuIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGguXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AZnVuY3Rpb24gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaXNvbGF0ZTogcGFyc2Utc3BhbigkaXNvbGF0ZSk7XG4gICRpc29sYXRpb246IHN1c3ktZ2V0KHNwYW4sICRpc29sYXRlKTtcblxuICBAaWYgJGlzb2xhdGlvbiBhbmQgbm90KGdldC1sb2NhdGlvbigkaXNvbGF0ZSkpIHtcbiAgICAkbmV3OiAoXG4gICAgICBzcGFuOiBudWxsLFxuICAgICAgbG9jYXRpb246ICRpc29sYXRpb24sXG4gICAgKTtcbiAgICAkaXNvbGF0ZTogbWFwLW1lcmdlKCRpc29sYXRlLCAkbmV3KTtcbiAgfVxuXG4gIEByZXR1cm4gZ2V0LWlzb2xhdGlvbigkaXNvbGF0ZSk7XG59XG5cblxuLy8gR2V0IElzb2xhdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBpc29sYXRpb24gb2Zmc2V0IHdpZHRoXG4vLyAtICRpbnB1dDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtaXNvbGF0aW9uKFxuICAkaW5wdXRcbikge1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkaW5wdXQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRpbnB1dCk7XG4gICR3aWR0aCAgICAgIDogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciBhbmQgbm90KHVuaXRsZXNzKCRsb2NhdGlvbikpIHtcbiAgICAkd2lkdGg6ICRsb2NhdGlvbjtcbiAgfSBAZWxzZSBpZiAkbG9jYXRpb24ge1xuICAgICRwdXNoOiAkbG9jYXRpb24gLSAxO1xuICAgIEBpZiAkcHVzaCA+IDAge1xuICAgICAgJHB1c2g6IG1hcC1tZXJnZSgkaW5wdXQsIChcbiAgICAgICAgc3BhbjogJHB1c2gsXG4gICAgICAgIGxvY2F0aW9uOiAxLFxuICAgICAgICBzcHJlYWQ6IHdpZGUsXG4gICAgICApKTtcbiAgICAgICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHB1c2gpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRpbnB1dCkgPT0gc3BsaXRcbiAgICAgIGFuZCBzdXN5LWdldChndXR0ZXJzLCAkaW5wdXQpID4gMCB7XG4gICAgJHdpZHRoOiBpZigkd2lkdGggPT0gbnVsbCwgZ3V0dGVycygkaW5wdXQpLCAkd2lkdGggKyBndXR0ZXJzKCRpbnB1dCkpO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGggb3IgMDtcbn1cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJvdyBTdGFydCAmIEVuZFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIEJyZWFrXG4vLyAtLS0tLVxuLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCBzaG91bGQgZm9yY2UgYSBsaW5lIGJyZWFrLlxuQG1peGluIGJyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogYm90aCkpO1xufVxuXG5cbi8vIE5vQnJlYWtcbi8vIC0tLS0tLS1cbi8vIENhbmNlbCB0aGUgYnJlYWsoKSBlZmZlY3QsIGUuZy4gd2hlbiB1c2luZyBtZWRpYSBxdWVyaWVzLlxuQG1peGluIG5vYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBub25lKSk7XG59XG5cblxuLy8gRnVsbFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8bGF5b3V0IHNob3J0aGFuZD5cbkBtaXhpbiBmdWxsKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCA6ICRjb250ZXh0O1xuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZnVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBzcGFuKGZ1bGwgb2YgcGFyc2UtZ3JpZCgkY29udGV4dCkgYnJlYWspO1xufVxuXG5cbi8vIEZpcnN0XG4vLyAtLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gZmlyc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmaXJzdCwgJGluc3BlY3QpO1xuICBAaWYgbm90KGlzLXNwbGl0KCRjb250ZXh0KSkge1xuICAgIEBpbmNsdWRlIGZsb2F0LWZpcnN0KCRmbG93KTtcbiAgfVxufVxuXG5AbWl4aW4gYWxwaGEoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGZpcnN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBMYXN0XG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBsYXN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxhc3QsICRpbnNwZWN0KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpLFxuICAgIGxhc3QtZmxvdzogc3VzeS1nZXQobGFzdC1mbG93LCAkY29udGV4dCksXG4gICAgbWFyZ2luOiBpZihpcy1zcGxpdCgkY29udGV4dCksIG51bGwsIDApLFxuICApO1xuXG4gIEBpbmNsdWRlIGZsb2F0LWxhc3QoJG91dHB1dC4uLik7XG59XG5cbkBtaXhpbiBvbWVnYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgbGFzdCgkY29udGV4dCk7XG59XG5cblxuLy8gR2V0IEVkZ2Vcbi8vIC0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgZWRnZSB2YWx1ZSBiYXNlZCBvbiBsb2NhdGlvbiwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtZWRnZShcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IHN1c3ktZ2V0KGVkZ2UsICRzcGFuKTtcblxuICBAaWYgbm90KCRlZGdlKSB7XG4gICAgJGNvdW50OiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSk7XG4gICAgJGxvY2F0aW9uOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAgICRuOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgICAkbnVtYmVyOiBpZih0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyLCB0cnVlLCBmYWxzZSk7XG4gICAgJGluZGV4OiBpZigkbnVtYmVyIGFuZCB1bml0bGVzcygkbG9jYXRpb24pLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJG4gPT0gJGNvdW50IHtcbiAgICAgICRlZGdlOiBmdWxsO1xuICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uIGFuZCAkbiBhbmQgJGluZGV4IHtcbiAgICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAgICRlZGdlOiBpZigkbiA9PSAkY291bnQsIGZ1bGwsIGZpcnN0KTtcbiAgICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uICsgJG4gLSAxID09ICRjb3VudCB7XG4gICAgICAgICRlZGdlOiBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkZWRnZSA9PSBhbHBoYSBvciAkZWRnZSA9PSBvbWVnYSB7XG4gICAgJGVkZ2U6IGlmKCRlZGdlID09IGFscGhhLCBmaXJzdCwgbGFzdCk7XG4gIH1cblxuICBAcmV0dXJuICRlZGdlO1xufVxuXG5cbi8vIEdldCBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgbG9jYXRpb24gdmFsdWUgYmFzZWQgb24gZWRnZSwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtbG9jYXRpb24oXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJG4gICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgQGlmICRlZGdlIGFuZCBub3QoJGxvY2F0aW9uKSBhbmQgdHlwZS1vZigkbikgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkbikge1xuICAgIEBpZiAkZWRnZSA9PSBmaXJzdCB7XG4gICAgICAkbG9jYXRpb246IDE7XG4gICAgfSBAZWxzZSBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRsb2NhdGlvbjogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpIC0gJG4gKyAxO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxvY2F0aW9uXG59XG4iLCIvLyBNYXJnaW4gU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cbi8vIFByZVxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW4gICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJGd1dHRlciA6IGd1dHRlcigkc3Bhbik7XG4gICRzcGFuICAgOiBzcGFuKCRzcGFuKTtcbiAgJHdpZHRoICA6IGlmKCRzcGxpdCBhbmQgJGd1dHRlciwgJHNwYW4gKyAkZ3V0dGVyLCAkc3Bhbik7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBQb3N0XG4vLyAtLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwb3N0KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwb3N0LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFB1c2hcbi8vIC0tLS1cbi8vIFNpbXBsZSBzeW5vbnltbiBmb3IgcHJlLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdXNoKFxuICAkc3BhblxuKSB7XG4gIEBpbmNsdWRlIHByZSgkc3Bhbik7XG59XG5cbi8vIFB1bGxcbi8vIC0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdWxsKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIDAgLSBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIDAgLSBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHB1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3F1aXNoXG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBzcXVpc2goXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICAgICAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcXVpc2gsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlKCRwcmUpO1xuICBAaW5jbHVkZSBwb3N0KCRwb3N0KTtcbn1cbiIsIi8vIFBhZGRpbmcgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZWZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTdWZmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3VmZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzdWZmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFBhZFxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gcGFkKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBhZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmVmaXgoJHByZSk7XG4gIEBpbmNsdWRlIHN1ZmZpeCgkcG9zdCk7XG5cbn1cbiIsIi8vIEJsZWVkIFN5bnRheFxuLy8gPT09PT09PT09PT09XG5cbi8vIEJsZWVkXG4vLyAtLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIG1hcmdpbnMsIGFuZCBlcXVhbCBwb3NpdGl2ZSBwYWRkaW5nIHRvIGNyZWF0ZSBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkKFxuICAkYmxlZWQ6IDAgZ3V0dGVyKClcbikge1xuICAkaW5zcGVjdCAgOiAkYmxlZWQ7XG4gICRvdXRwdXQgICA6IGdldC1ibGVlZCgkYmxlZWQpO1xuXG4gIEBpZiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gY29udGVudC1ib3gge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgoYm94LXNpemluZzogY29udGVudC1ib3gpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChibGVlZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cblxuLy8gQmxlZWQteFxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIGhvcml6b250YWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC14KFxuICAkYmxlZWQ6IGd1dHRlcigpXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMikgMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC14IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBCbGVlZC15XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgdmVydGljYWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC15KFxuICAkYmxlZWQ6IGlmKGZ1bmN0aW9uLWV4aXN0cyhyaHl0aG0pLCByaHl0aG0oMSksIDFlbSlcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDApKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCBudGgoJHRyYmwsIDIpIDApKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXkgb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEdldCBCbGVlZFxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmxlZWQgb3V0cHV0IHZhbHVlc1xuLy8gLSAkYmxlZWQ6IDxzcGFuPlxuQGZ1bmN0aW9uIGdldC1ibGVlZChcbiAgJGJsZWVkXG4pIHtcbiAgJGJsZWVkICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRibGVlZCkpO1xuICAkdHJibCAgICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuICAkc2hvcnQgICAgOiBudWxsO1xuICAkb3V0cHV0ICAgOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkdHJibCkge1xuICAgICR0aGlzOiBudGgoJHRyYmwsICRpKTtcbiAgICAkbmV3OiAoKTtcbiAgICAkbWFyZ2luOiBudWxsO1xuICAgICRwYWRkaW5nOiBudWxsO1xuICAgICRwYWRkaW5nLXg6IG51bGw7XG5cbiAgICBAaWYgJHRoaXMgPiAwIHtcbiAgICAgICR0aGlzOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogJHRoaXMpKTtcbiAgICAgICRtYXJnaW46IHNwYW4oJHRoaXMpO1xuICAgICAgJHBhZGRpbmc6ICRtYXJnaW47XG4gICAgICAkcGFkZGluZy14OiAkcGFkZGluZztcbiAgICB9XG5cbiAgICBAaWYgJG1hcmdpbiBhbmQgJG1hcmdpbiA+IDAge1xuICAgICAgJG1hcmdpbjogLSAkbWFyZ2luO1xuXG4gICAgICBAaWYgaXMtaW5zaWRlKCR0aGlzKSB7XG4gICAgICAgICRndXR0ZXI6IGd1dHRlcigkdGhpcyk7XG4gICAgICAgICRqb2luOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCRwYWRkaW5nLCAkZ3V0dGVyKSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAkcGFkZGluZy14OiBpZigkam9pbiBhbmQgJHBhZGRpbmcgPiAwLCAkcGFkZGluZyArICRndXR0ZXIsICRwYWRkaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMiB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAzIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDQge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgJG5ldyk7XG4gIH1cblxuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRvdXRwdXQge1xuICAgICRvdXRwdXQ6IGlmKCR2YWx1ZSA9PSAwLCBtYXAtbWVyZ2UoJG91dHB1dCwgKCRwcm9wOiBudWxsKSksICRvdXRwdXQpO1xuICB9XG5cbiAgQHJldHVybiBibGVlZC1zaG9ydGhhbmQoJG91dHB1dCk7XG59XG5cbi8vIEJsZWVkIFNob3J0aGFuZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDb252ZXJ0IGJsZWVkIG91dHB1dCBpbnRvIHNob3J0aGFuZCB3aGVuIHBvc3NpYmxlLlxuLy8gLSAkYmxlZWQ6IDxvdXRwdXQgbWFwPlxuQGZ1bmN0aW9uIGJsZWVkLXNob3J0aGFuZChcbiAgJGJsZWVkXG4pIHtcbiAgJG1hcmdpbjogKCk7XG4gICRwYWRkaW5nOiAoKTtcbiAgJHJldHVybjogKCk7XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRibGVlZCB7XG4gICAgQGlmIHN0ci1pbmRleCgka2V5LCBtYXJnaW4pIHtcbiAgICAgICRtYXJnaW46IG1hcC1tZXJnZSgkbWFyZ2luLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfSBAZWxzZSBpZiBzdHItaW5kZXgoJGtleSwgcGFkZGluZykgPiAwIHtcbiAgICAgICRwYWRkaW5nOiBtYXAtbWVyZ2UoJHBhZGRpbmcsICgka2V5OiAkdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAkcHJvcHM6IChcbiAgICBtYXJnaW46ICRtYXJnaW4sXG4gICAgcGFkZGluZzogJHBhZGRpbmcsXG4gICk7XG5cbiAgQGVhY2ggJG5hbWUsICRtYXAgaW4gJHByb3BzIHtcbiAgICAkZm91cjogaWYobGVuZ3RoKG1hcC1rZXlzKCRtYXApKSA9PSA0LCB0cnVlLCBmYWxzZSk7XG4gICAgJG51bGw6IGlmKGluZGV4KG1hcC12YWx1ZXMoJG1hcCksIG51bGwpLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJGZvdXIgYW5kIG5vdCgkbnVsbCkge1xuICAgICAgJHRvcDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tdG9wJyk7XG4gICAgICAkcmlnaHQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXJpZ2h0Jyk7XG4gICAgICAkYm90dG9tOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1ib3R0b20nKTtcbiAgICAgICRsZWZ0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1sZWZ0Jyk7XG5cbiAgICAgICR0YjogaWYoJHRvcCA9PSAkYm90dG9tLCAkdG9wLCBudWxsKTtcbiAgICAgICRybDogaWYoJHJpZ2h0ID09ICRsZWZ0LCAkcmlnaHQsIG51bGwpO1xuICAgICAgJGFsbDogaWYoJHRiID09ICRybCwgJHRiLCBudWxsKTtcblxuICAgICAgJG5ldzogaWYoJGFsbCwgJGFsbCwgbnVsbCk7XG5cbiAgICAgIEBpZiBub3QoJG5ldykge1xuICAgICAgICBAaWYgJHRiIGFuZCAkcmwge1xuICAgICAgICAgICRuZXc6ICR0YiAkcmw7XG4gICAgICAgIH0gQGVsc2UgaWYgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRybCAkYm90dG9tO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRyaWdodCAkYm90dG9tICRsZWZ0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJG5hbWU6ICRuZXcpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAkbWFwKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBCcmVha3BvaW50IEludGVncmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW1lZGlhOiAoKSAhZGVmYXVsdDtcbiRzdXN5LW1lZGlhLWZhbGxiYWNrOiBmYWxzZSAhZGVmYXVsdDtcblxuJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICgpO1xuXG5cbi8vIFN1c3kgQnJlYWtwb2ludFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGFuZ2UgZ3JpZHMgYXQgZGlmZmVyZW50IG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRzLlxuLy8gLSAkcXVlcnkgICAgIDogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPiB8IDxtYXA+XG4vLyAtICRsYXlvdXQgICAgOiA8c2V0dGluZ3M+XG4vLyAtICRuby1xdWVyeSAgOiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1icmVha3BvaW50KFxuICAkcXVlcnksXG4gICRsYXlvdXQ6IGZhbHNlLFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1yb3V0ZXIoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAaWYgJGxheW91dCB7XG4gICAgICBAaW5jbHVkZSB3aXRoLWxheW91dCgkbGF5b3V0KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gU3VzeSBNZWRpYVxuLy8gLS0tLS0tLS0tLVxuLy8gLSAkcXVlcnk6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT5cbi8vIC0gJG5vLXF1ZXJ5OiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1tZWRpYShcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgJG9sZC1jb250ZXh0OiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgJG5hbWU6IGlmKG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkcXVlcnkpLCAkcXVlcnksIG51bGwpO1xuICAkcXVlcnk6IHN1c3ktZ2V0LW1lZGlhKCRxdWVyeSk7XG4gICRxdWVyeTogc3VzeS1wYXJzZS1tZWRpYSgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkcXVlcnksICRuYW1lKTtcblxuICBAaWYgJG5vLXF1ZXJ5IGFuZCB0eXBlLW9mKCRuby1xdWVyeSkgIT0gc3RyaW5nIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSB7XG4gICAgQG1lZGlhICN7c3VzeS1yZW5kZXItbWVkaWEoJHF1ZXJ5KX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJG5vLXF1ZXJ5KSA9PSBzdHJpbmcge1xuICAgICAgI3skbm8tcXVlcnl9ICYge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJG9sZC1jb250ZXh0LCAkY2xlYW46IHRydWUpO1xufVxuXG5cbi8vIE1lZGlhIFJvdXRlclxuLy8gLS0tLS0tLS0tLS0tXG4vLyBSb3V0IG1lZGlhIGFyZ3VtZW50cyB0byB0aGUgY29ycmVjdCBtaXhpbi5cbkBtaXhpbiBzdXN5LW1lZGlhLXJvdXRlcihcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChicmVha3BvaW50LCAobWl4aW46IGJyZWFrcG9pbnQpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktbWVkaWEoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFVwZGF0ZSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBTZXQgdGhlIG5ldyBtZWRpYSBjb250ZXh0XG5AbWl4aW4gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcXVlcnksXG4gICRuYW1lOiBudWxsLFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJHF1ZXJ5OiBtYXAtbWVyZ2UoKG5hbWU6ICRuYW1lKSwgJHF1ZXJ5KTtcblxuICBAaWYgJGNsZWFuIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogJHF1ZXJ5ICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiBtYXAtbWVyZ2UoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRxdWVyeSkgIWdsb2JhbDtcbiAgfVxufVxuXG5cbi8vIE1lZGlhIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgZnVsbCBtZWRpYSBjb250ZXh0LCBvciBhIHNpbmdsZSBtZWRpYSBwcm9wZXJ0eSAoZS5nLiBtaW4td2lkdGgpXG5AZnVuY3Rpb24gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcHJvcGVydHk6IGZhbHNlXG4pIHtcbiAgQGlmICRwcm9wZXJ0eSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcHJvcGVydHkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICB9XG59XG5cblxuLy8gR2V0IE1lZGlhXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBhIG5hbWVkIG1lZGlhLXF1ZXJ5IGZyb20gJHN1c3ktbWVkaWEuXG4vLyAtICRuYW1lOiA8a2V5PlxuQGZ1bmN0aW9uIHN1c3ktZ2V0LW1lZGlhKFxuICAkbmFtZVxuKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJG5hbWUpIHtcbiAgICAkbWFwLXZhbHVlOiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCAkbmFtZSk7XG4gICAgQGlmICgkbmFtZSA9PSAkbWFwLXZhbHVlKSB7XG4gICAgICAkbmFtZTogJG1hcC12YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRuYW1lOiBzdXN5LWdldC1tZWRpYSgkbWFwLXZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuYW1lO1xufVxuXG5cbi8vIFJlbmRlciBNZWRpYVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBCdWlsZCBhIG1lZGlhLXF1ZXJ5IHN0cmluZyBmcm9tIHZhcmlvdXMgbWVkaWEgc2V0dGluZ3NcbkBmdW5jdGlvbiBzdXN5LXJlbmRlci1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG91dHB1dDogbnVsbDtcbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHF1ZXJ5IHtcbiAgICAkc3RyaW5nOiBudWxsO1xuXG4gICAgQGlmICRwcm9wZXJ0eSA9PSBtZWRpYSB7XG4gICAgICAkc3RyaW5nOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RyaW5nOiAnKCN7JHByb3BlcnR5fTogI3skdmFsdWV9KSc7XG4gICAgfVxuXG4gICAgJG91dHB1dDogaWYoJG91dHB1dCwgJyN7JG91dHB1dH0gYW5kICN7JHN0cmluZ30nLCAkc3RyaW5nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuXG4vLyBQYXJzZSBNZWRpYVxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBwYXJzZWQgbWVkaWEtcXVlcnkgc2V0dGluZ3MgYmFzZWQgb24gc2hvcnRoYW5kXG5AZnVuY3Rpb24gc3VzeS1wYXJzZS1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG1xOiBudWxsO1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09IG1hcCB7XG4gICAgJG1xOiAkcXVlcnk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IG51bWJlciB7XG4gICAgJG1xOiAobWluLXdpZHRoOiAkcXVlcnkpO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBsaXN0IGFuZCBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gbnVtYmVyIHtcbiAgICAgICRtcTogKFxuICAgICAgICBtaW4td2lkdGg6IG1pbigkcXVlcnkuLi4pLFxuICAgICAgICBtYXgtd2lkdGg6IG1heCgkcXVlcnkuLi4pLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtcTogKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkbXE6IChtZWRpYTogJyN7JHF1ZXJ5fScpO1xuICB9XG5cbiAgQHJldHVybiAkbXE7XG59XG4iLCIvKlxuKiBTY3V0LCBhIGNvbGxlY3Rpb24gb2YgU2FzcyB1dGlsaXRpZXNcbiogdG8gZWFzZSBhbmQgaW1wcm92ZSBvdXIgaW1wbGVtZW50YXRpb25zIG9mIGNvbW1vbiBzdHlsZS1jb2RlIHBhdHRlcm5zLlxuKiB2MS40LjBcbiogRG9jcyBhdCBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dFxuKi9cblxuQG1peGluIHNjdXQtY2xlYXJmaXgge1xuXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jbGVhcmZpeCB7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG59XG5AbWl4aW4gc2N1dC1saXN0LXVuc3R5bGVkKFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZmxvYXRlZCAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRkaXI6IGxlZnQsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcblxuICAmID4gbGkge1xuICAgIGZsb2F0OiAkZGlyO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLSN7JGRpcn06ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWZsb2F0ZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZDtcbn1cblxuQGZ1bmN0aW9uIHNjdXQtYXV0b09yVmFsdWUgKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gYSBvciAkdmFsID09IGF1dG8ge1xuICAgIEByZXR1cm4gYXV0bztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LWNvb3JkcyAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgJHRvcDogbnRoKCRjb29yZGluYXRlcywgMSk7XG4gICRyaWdodDogbnRoKCRjb29yZGluYXRlcywgMik7XG4gICRib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpO1xuICAkbGVmdDogbnRoKCRjb29yZGluYXRlcywgNCk7XG5cbiAgQGlmICR0b3AgIT0gbiB7XG4gICAgdG9wOiBzY3V0LWF1dG9PclZhbHVlKCR0b3ApO1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbiB7XG4gICAgcmlnaHQ6IHNjdXQtYXV0b09yVmFsdWUoJHJpZ2h0KTtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBuIHtcbiAgICBib3R0b206IHNjdXQtYXV0b09yVmFsdWUoJGJvdHRvbSk7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG4ge1xuICAgIGxlZnQ6IHNjdXQtYXV0b09yVmFsdWUoJGxlZnQpO1xuICB9XG5cbn1cbkBmdW5jdGlvbiBzY3V0LXN0cmlwLXVuaXQgKFxuICAkbnVtXG4pIHtcblxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LWVtIChcbiAgJHBpeGVscyxcbiAgJGJhc2U6ICRzY3V0LWVtLWJhc2Vcbikge1xuXG4gIC8vICRiYXNlIGNvdWxkIGJlIGluIGVtIG9yIHB4IChubyB1bml0ID0gcHgpLlxuICAvLyBBZGp1c3QgYWNjb3JkaW5nbHkgdG8gY3JlYXRlIGEgJGRpdmlzb3IgdGhhdFxuICAvLyBzZXJ2ZXMgYXMgY29udGV4dCBmb3IgJHBpeGVscy5cbiAgJG11bHRpcGxpZXI6IGlmKHVuaXQoJGJhc2UpID09IGVtLCAxNiwgMSk7XG4gICRkaXZpc29yOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UpICogJG11bHRpcGxpZXI7XG5cbiAgJGVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tZW1zOiAoc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJGRpdmlzb3IpICogMWVtO1xuICAgICRlbS12YWxzOiBhcHBlbmQoJGVtLXZhbHMsICR2YWwtaW4tZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJGVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJGVtLXZhbHM7XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtcmVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1yZW0gKFxuICAkcGl4ZWxzXG4pIHtcblxuICAkcmVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcmVtczogc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJHNjdXQtcmVtLWJhc2UgKiAxcmVtO1xuICAgICRyZW0tdmFsczogYXBwZW5kKCRyZW0tdmFscywgJHZhbC1pbi1yZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHJlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJHJlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcmVtLXZhbHM7XG4gIH1cblxufVxuQG1peGluIHNjdXQtYm9yZGVyIChcbiAgJHN0eWxlLFxuICAkc2lkZXM6IG4geVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2lkZXMpID09IDIge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkc2lkZXMpID09IDQge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAzKSAhPSBuIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDQpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJTY3V0LWJvcmRlciByZXF1aXJlcyBhICRzaWRlcyBhcmd1bWVudCBvZiAyIG9yIDQgdmFsdWVzLlwiXG4gIH1cblxufVxuQG1peGluIHNjdXQtY2lyY2xlIChcbiAgJHNpemUsXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgQGlmICRjb2xvciA9PSBpbmhlcml0IHtcbiAgICAvLyBJZiB1c2VyIHdhbnRzIHRvIGluaGVyaXQgdGhlIGNvbG9yLFxuICAgIC8vIHRha2UgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgYm9yZGVyXG4gICAgLy8gY29sb3IgZGVmYXVsdHMgdG8gdGhlIHRleHQgY29sb3Igb2YgdGhlIGVsZW1lbnQuXG4gICAgYm9yZGVyLXdpZHRoOiAkc2l6ZSAvIDI7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgd2lkdGg6IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwganVzdCB1c2UgYmFja2dyb3VuZC1jb2xvci5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICB3aWR0aDogJHNpemU7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY29sb3Itc3dhcCAoXG4gICRvZmYsXG4gICRvbixcbiAgJGR1cmF0aW9uOiAwLFxuICAkYmc6IGZhbHNlXG4pIHtcblxuICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBudWxsO1xuICAkb2ZmLWlzLWxpc3Q6IHR5cGUtb2YoJG9mZikgPT0gbGlzdDtcbiAgJG9uLWlzLWxpc3Q6IHR5cGUtb2YoJG9uKSA9PSBsaXN0O1xuXG4gIC8vIElmICRvZmYgSVMgYSBsaXN0LFxuICAvLyBhc3NpZ24gY29sb3IgYW5kIGJhY2tncm91bmQtY29sb3IuXG4gIEBpZiAkb2ZmLWlzLWxpc3Qge1xuICAgIGNvbG9yOiBudGgoJG9mZiwgMSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvZmYsIDIpO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3IsIGNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgVFJVRSxcbiAgLy8gYXNzaWduIGJhY2tncm91bmQtY29sb3IuXG4gIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvZmYtaXMtbGlzdCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIEZBTFNFLFxuICAvLyBhc3NpZ24gY29sb3IuXG4gIEBlbHNlIHtcbiAgICBjb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBjb2xvcjtcbiAgfVxuXG4gIC8vIE9ubHkgc2V0LXVwIHRyYW5zaXRpb24gaWYgJGR1cmF0aW9uICE9IDAuXG4gIEBpZiAkZHVyYXRpb24gIT0gMCB7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogJHRyYW5zaXRpb24tcHJvcGVydGllcztcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAkZHVyYXRpb247XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcblxuICAgIC8vICRvbiBpcyB0cmVhdGVkIHRoZSBzYW1lIGFzICRvZmYsIGFib3ZlLlxuICAgIEBpZiAkb24taXMtbGlzdCB7XG4gICAgICBjb2xvcjogbnRoKCRvbiwgMSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9uLCAyKTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb24taXMtbGlzdCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9uO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkb247XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWhkLWJwIChcbiAgJHJhdGlvOiAxLjNcbikge1xuXG4gIEBtZWRpYSAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogKCRyYXRpbyAvIDEpKSxcbiAgICAgICAgICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gICAgICAgICAobWluLXJlc29sdXRpb246IChyb3VuZCg5NiAqICRyYXRpbykgKiAxZHBpKSkge1xuICAgIEBjb250ZW50O1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGlkZS12aXN1YWxseSB7XG5cbiAgYm9yZGVyOiAwO1xuICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG5cbn1cblxuJXNjdXQtaGlkZS12aXN1YWxseSB7XG4gIEBpbmNsdWRlIHNjdXQtaGlkZS12aXN1YWxseTtcbn1cbkBtaXhpbiBzY3V0LWltYWdlLXJlcGxhY2Uge1xuXG4gIHRleHQtaW5kZW50OiAxMDIlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuXG59XG5cbiVzY3V0LWltYWdlLXJlcGxhY2Uge1xuICBAaW5jbHVkZSBzY3V0LWltYWdlLXJlcGxhY2U7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1yZW0gYW5kIHNjdXQtc3RyaXAtdW5pdFxuXG5AbWl4aW4gc2N1dC1yZW0tZmFsbGJhY2sgKFxuICAkcGl4ZWxzLFxuICAkcHJvcGVydHk6IGZvbnQtc2l6ZVxuKSB7XG5cbiAgJHB4LXZhbHM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1weDogc2N1dC1zdHJpcC11bml0KCR2YWwpICogMXB4O1xuICAgICRweC12YWxzOiBhcHBlbmQoJHB4LXZhbHMsICR2YWwtaW4tcHgpO1xuICB9XG4gICRyZW0tdmFsczogc2N1dC1yZW0oJHBpeGVscyk7XG5cbiAgI3skcHJvcGVydHl9OiAkcHgtdmFscztcbiAgI3skcHJvcGVydHl9OiAkcmVtLXZhbHM7XG5cbn1cbkBtaXhpbiBzY3V0LXJlc2V0LWJvcmRlci1ib3gge1xuICAvLyBNYWtlIGV2ZXJ5dGhpbmcgYSBib3JkZXItYm94LCBiZWNhdXNlIHdoeSBub3Q/XG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYW50aWFsaWFzIHtcbiAgLy8gQW50aWFsaWFzIVxuICBib2R5IHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1zZW1hbnRpY2l6ZSB7XG4gIC8vIE1ha2UgaGVhZGVycyBhbmQgPGI+IHNlbWFudGljLCBub3QgcHJlc2VudGF0aW9uYWwuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcG9pbnRlciB7XG4gIC8vIENsaWNrYWJsZSBmb3JtIGVsZW1lbnRzIHNob3VsZCBoYXZlIGEgcG9pbnRlci5cbiAgbGFiZWwsXG4gIHNlbGVjdCxcbiAgb3B0aW9uLFxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1mb3JtIHtcbiAgZmllbGRzZXQge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1idXR0b24ge1xuICAvLyBSZXNldCBkZWZhdWx0IGJ1dHRvbiBzdHlsZXMsIHdoaWNoIGFyZSBuZXZlciB1c2VkLlxuICBidXR0b24sXG4gIFt0eXBlPVwiYnV0dG9uXCJdLFxuICBbdHlwZT1cInN1Ym1pdFwiXSxcbiAgW3R5cGU9XCJyZXNldFwiXSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wYXJhZ3JhcGgge1xuICAvLyBTb21lIHBhcmFncmFwaCBtYXJnaW5zIGp1c3QgZ2V0IGluIHRoZSB3YXkuXG4gIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICBwOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1tZWRpYSB7XG4gIC8vIFlvdSB3YW50IHRoZXNlIGVsZW1lbnRzIGZsdWlkLCBwcm9iYWJseS5cbiAgaW1nLFxuICB2aWRlbyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1maWd1cmUge1xuICAvLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zLlxuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG4vLyBDYWxsIHRoZW0gYWxsLCBtaW51cyBleGNsdXNpb25zIVxuQG1peGluIHNjdXQtcmVzZXQgKCRleGNsdWRlOiBmYWxzZSkge1xuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBib3JkZXItYm94KSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYm9yZGVyLWJveDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBhbnRpYWxpYXMpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1hbnRpYWxpYXM7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgc2VtYW50aWNpemUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1zZW1hbnRpY2l6ZTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwb2ludGVyKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcG9pbnRlcjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmb3JtKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZm9ybTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBidXR0b24pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1idXR0b247XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcGFyYWdyYXBoKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcGFyYWdyYXBoO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIG1lZGlhKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtbWVkaWE7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZmlndXJlKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZmlndXJlO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXNlbGVjdGVkIChcbiAgJGFjdGl2ZTogZmFsc2Vcbikge1xuXG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXRyaWFuZ2xlIChcbiAgJGRpcmVjdGlvbjogcmlnaHQsXG4gICRzaXplOiAwLjc1ZW0sXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuICAvLyBGb3IgaW1wcm92ZWQgYXBwZWFyYW5jZSBpbiBzb21lIFdlYmtpdCBicm93c2Vyc1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG5cbiAgLy8gU2V0IHVwIHNvbWUgdmFyaWFibGVzXG4gICR3aWR0aDogbnVsbDtcbiAgJGhlaWdodDogbnVsbDtcbiAgJGJvcmRlci13aWR0aHM6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJHNpemUpID09IGxpc3Qge1xuICAgICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgICAkaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkd2lkdGg6ICRzaXplO1xuICAgICRoZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgLy8gRm9yIHVwIGFuZCBkb3duLCB3aWR0aCBnZXRzIHR3byBib3JkZXJzIGJ1dCBoZWlnaHQgb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIHNlY29uZCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAkaGVpZ2h0ICgkd2lkdGggLyAyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIC8vIEZvciByaWdodCBhbmQgbGVmdCwgaGVpZ2h0IGdldHMgdHdvIGJvcmRlcnMgYnV0IHdpZHRoIG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBmaXJzdCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICR3aWR0aDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gRm9yIHJpZ2h0IHRyaWFuZ2xlcyAodGhlIHJlc3QpLCBib3RoIHNpZGVzIGdldCB0d28gYm9yZGVycyxcbiAgICAvLyBzbyBkaXZpZGUgYm90aCBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgKCR3aWR0aCAvIDIpO1xuICB9XG5cbiAgYm9yZGVyLXdpZHRoOiAkYm9yZGVyLXdpZHRocztcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcblxuXG4gIC8vIFNUQU5EQVJEIFRSSUFOR0xFU1xuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gQ09STkVSIFRSSUFOR0xFU1xuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHRvcC1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gdG9wLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHRvcC1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXRyaWFuZ2xlIHtcbiAgQGluY2x1ZGUgc2N1dC10cmlhbmdsZTtcbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1hYnNvbHV0ZWx5IChcbiAgJGRpbWVuc2lvbnNcbikge1xuXG4gICR3aWR0aDogbnRoKCRkaW1lbnNpb25zLCAxKTtcbiAgJGhlaWdodDogbnRoKCRkaW1lbnNpb25zLCAyKTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICR3aWR0aCAhPSBuIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogKC0kd2lkdGggLyAyKTtcbiAgfVxuXG4gIEBpZiAkaGVpZ2h0ICE9IG4ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAoLSRoZWlnaHQgLyAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYmxvY2sgKFxuICAkbWF4LXdpZHRoOiBmYWxzZVxuKSB7XG5cbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgQGlmICRtYXgtd2lkdGgge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNlbnRlci1ibG9jayB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLWJsb2NrO1xufVxuXG5AbWl4aW4gc2N1dC1jZW50ZXItdHJhbnNmb3JtIChcbiAgJGF4aXM6IGZhbHNlIC8vIG9yIHggb3IgeVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkYXhpcyAhPSB4IHtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gIH1cblxuICBAaWYgJGF4aXMgIT0geSB7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxuXG4gICR0cmFuc2xhdGUtdmFsOiBudWxsO1xuXG4gIEBpZiBub3QoJGF4aXMpIHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHgge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHkge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG5cbiAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICAtbXMtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS14IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHgpO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbkBtaXhpbiBzY3V0LWZpbGwgKFxuICAkd2lkdGgtaGVpZ2h0OiBmYWxzZVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIEBpZiAkd2lkdGgtaGVpZ2h0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWZpbGwge1xuICBAaW5jbHVkZSBzY3V0LWZpbGw7XG59XG5AbWl4aW4gc2N1dC1saXN0LWN1c3RvbSAoXG4gICRjb250ZW50OiBcIlxcMjAyMlwiLFxuICAkbWFya2VyLXdpZHRoOiAwLjc1ZW0sXG4gICRwYWQ6IDAsXG4gICRuby1tYXJnaW46IGZhbHNlXG4pIHtcblxuICAkY29udGVudC12YWw6IG51bGw7XG4gICRjb3VudGVyOiBpbmRleCgkY29udGVudCwgY291bnQpO1xuICBAaWYgJGNvdW50ZXIge1xuICAgIEBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDMge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciwgbnRoKCRjb250ZW50LCAzKSludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIGlmIGxlbmd0aCgkY29udGVudCkgPT0gMiB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlcik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkY29udGVudC12YWw6ICRjb250ZW50O1xuICB9XG5cbiAgcGFkZGluZy1sZWZ0OiAkbWFya2VyLXdpZHRoICsgJHBhZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmID4gbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgJGNvdW50ZXIge1xuICAgICAgY291bnRlci1pbmNyZW1lbnQ6IHNjdXRsaXN0Y291bnRlcjtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJGNvbnRlbnQtdmFsO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAtJG1hcmtlci13aWR0aDtcbiAgICAgIHdpZHRoOiAkbWFya2VyLXdpZHRoO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtZmxvYXRlZGAsIHdoaWNoIGRlcGVuZHMgaW4gdHVybiBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZGl2aWRlZCAoXG4gICRkaXZpZGVyOiBcInxcIixcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGRpcjogbGVmdCxcbiAgJGhlaWdodDogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkKCRkaXI6ICRkaXIsICRuby1tYXJnaW46ICRuby1tYXJnaW4pO1xuXG4gICRwc2V1ZG86IGlmKCRkaXIgPT0gbGVmdCwgJ2JlZm9yZScsICdhZnRlcicpO1xuXG4gIC8vIElmIGFuIGV4cGxpY2l0IGhlaWdodCBpcyBwYXNzZWQsXG4gIC8vIHRoaW5ncyBhcmUgZGlmZmVyZW50OiBBbGwgPGxpPnNcbiAgLy8gbmVlZCB0aGUgcHNldWRvLWVsZW1lbnQgKHRvIGZvcmNlIGhlaWdodCksXG4gIC8vIGJ1dCB0aGUgZmlyc3QncyBtdXN0IGJlIGhpZGRlbi5cblxuICBAaWYgJGhlaWdodCB7XG4gICAgJiA+IGxpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gICAgJiA+IGxpOiN7JHBzZXVkb30ge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgICYgPiBsaTpmaXJzdC1jaGlsZDojeyRwc2V1ZG99IHtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAmID4gbGkgKyBsaTojeyRwc2V1ZG99IHtcbiAgICBAaWYgbm90KCRoZWlnaHQpIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2U7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWJhciB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkO1xufVxuXG4lc2N1dC1saXN0LWJyZWFkY3J1bWIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZChcIi9cIik7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1pbmxpbmUgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtaW5saW5lIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWlubGluZTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LXB1bmN0dWF0ZWQgKFxuICAkZGl2aWRlcjogXCIsIFwiLFxuICAkZGlzcGxheTogaW5saW5lLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiAkZGlzcGxheTtcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1jb21tYSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1wdW5jdHVhdGVkO1xufVxuQG1peGluIHNjdXQtbWFyZ2luIChcbiAgJG1hcmdpblxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAxIGFuZCAkbWFyZ2luICE9IG4ge1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW47XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDIge1xuICAgICRtYXJnaW4teTogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgIEBpZiAkbWFyZ2luLXkgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXk7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAzIHtcbiAgICAkbWFyZ2luLXktdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi15LWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgIEBpZiAkbWFyZ2luLXktdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15LXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teS1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gNCB7XG4gICAgJG1hcmdpbi10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXJpZ2h0OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICAkbWFyZ2luLWxlZnQ6IG50aCgkbWFyZ2luLCA0KTtcbiAgICBAaWYgJG1hcmdpbi10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tcmlnaHQgIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4tcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1sZWZ0ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4tbGVmdDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtcGFkZGluZyAoXG4gICRwYWRkaW5nXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAxIGFuZCAkcGFkZGluZyAhPSBuIHtcbiAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAyIHtcbiAgICAkcGFkZGluZy15OiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgQGlmICRwYWRkaW5nLXkgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMyB7XG4gICAgJHBhZGRpbmcteS10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy15LWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICBAaWYgJHBhZGRpbmcteS10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteS10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXktYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDQge1xuICAgICRwYWRkaW5nLXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy1yaWdodDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgJHBhZGRpbmctbGVmdDogbnRoKCRwYWRkaW5nLCA0KTtcbiAgICBAaWYgJHBhZGRpbmctdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXJpZ2h0ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmctcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmctYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctbGVmdCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmctbGVmdDtcbiAgICB9XG4gIH1cbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtYWJzb2x1dGUgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1hYnNvbHV0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtYWJzb2x1dGU7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWZpeGVkIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogZml4ZWQ7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtZml4ZWQge1xuICBAaW5jbHVkZSBzY3V0LWZpeGVkO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1yZWxhdGl2ZSAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5AbWl4aW4gc2N1dC1yYXRpby1ib3ggKFxuICAkcmF0aW86IDEvMVxuKSB7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFRoZSBjb250YWluZXIncyBoZWlnaHQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVcbiAgLy8gY29udGFpbmVyJ3Mgd2lkdGgsIGlzIHNldCBieSBhc3NpZ25pbmdcbiAgLy8gcGFkZGluZy10b3AgdG8gYSBwc2V1ZG8tZWxlbWVudC5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHBhZGRpbmctdG9wOiAoMSAvICRyYXRpbykgKiAxMDAlO1xuICB9XG5cbn1cblxuJXNjdXQtcmF0aW8tYm94IHtcbiAgQGluY2x1ZGUgc2N1dC1yYXRpby1ib3g7XG59XG5AbWl4aW4gc2N1dC1zaXplKFxuICAkc2l6ZVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2l6ZSkgPT0gMSB7XG4gICAgd2lkdGg6ICAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkc2l6ZSkgPT0gMiB7XG4gICAgd2lkdGg6ICBudGgoJHNpemUsIDEpO1xuICAgIGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogLSRoZWlnaHQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgI3skd3JhcHBlcn06YWZ0ZXIsXG4gICN7JGZvb3Rlcn0ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxuXG59XG5cbi8vIGRlcHJlY2F0ZWRcbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXIgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pe1xuICBAaW5jbHVkZSBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQoJGhlaWdodCwgJHdyYXBwZXIsICRmb290ZXIpO1xufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1mbHVpZCAoXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAjeyRmb290ZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgaGVpZ2h0OiAxcHg7XG4gIH1cblxufVxuQG1peGluIHNjdXQtdmNlbnRlci1pYiAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgLy8gVGhlIGlubmVyIGVsZW1lbnQgaXMgdmVydGljYWxseSBjZW50ZXJlZFxuICAvLyBieSBtaWRkbGUtYWxpZ25pbmcgaXQgd2l0aCBhbiBpbmxpbmUgcHNldWRvLWVsZW1lbnRcbiAgLy8gd2hvc2UgaGVpZ2h0IGlzIDEwMCUuXG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIC8vIEEgc21hbGwgbmVnYXRpdmUgcmlnaHQgbWFyZ2luIGlzIHNldFxuICAgIC8vIHRvIGFjY291bnQgZm9yIHRoZSBkZWZhdWx0XG4gICAgLy8gd29yZC1zcGFjaW5nIG9mIGlubGluZS1ibG9jay5cbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1ZW07XG4gIH1cblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdmNlbnRlci1pYiB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci1pYjtcbn1cblxuQG1peGluIHNjdXQtdmNlbnRlci1saCAoXG4gICRoZWlnaHRcbikge1xuXG4gIGhlaWdodDogJGhlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWlnaHQ7XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItdGQgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIGRpc3BsYXk6IHRhYmxlO1xuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuXG4lc2N1dC12Y2VudGVyLXRkIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXRkO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtY2VudGVyLXRyYW5zZm9ybVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLXR0ICgpIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG4lc2N1dC12Y2VudGVyLXR0IHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXR0O1xufVxuLy8gc3BhY2VcbiRzY3V0LXNwYWNlOiBcIlxcMDAyMFwiO1xuLy8gbm9uLWJyZWFraW5nIHNwYWNlXG4kc2N1dC1uYnNwOiBcIlxcMDBhMFwiO1xuXG4vLyBxdW90YXRpb24gbWFya1xuJHNjdXQtcXVvdDogXCJcXDAwMjJcIjtcbi8vIGxlZnQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1sc3F1bzogXCJcXDIwMThcIjtcbi8vIHJpZ2h0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtcnNxdW86IFwiXFwyMDE5XCI7XG4vLyBsZWZ0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtbGRxdW86IFwiXFwyMDFDXCI7XG4vLyByaWdodCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LXJkcXVvOiBcIlxcMjAxRFwiO1xuLy8gbGVmdCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxzYXF1bzogXCJcXDIwMzlcIjtcbi8vIHJpZ2h0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcnNhcXVvOiBcIlxcMjAzQVwiO1xuLy8gbGVmdCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxhcXVvOiBcIlxcMDBhYlwiO1xuLy8gcmlnaHQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yYXF1bzogXCJcXDAwYmJcIjtcblxuLy8gZW0gZGFzaCAobXV0dG9uKVxuJHNjdXQtbWRhc2g6IFwiXFwyMDE0XCI7XG4vLyBlbiBkYXNoIChudXQpXG4kc2N1dC1uZGFzaDogXCJcXDIwMTNcIjtcbi8vIGh5cGhlblxuJHNjdXQtaHlwaGVuOiBcIlxcMjAxMFwiO1xuXG4vLyBhbXBlcnNhbmRcbiRzY3V0LWFtcDogXCJcXDAwMjZcIjtcbi8vIGdyZWF0ZXIgdGhhblxuJHNjdXQtZ3Q6IFwiXFwwMDNlXCI7XG4vLyBsZXNzIHRoYW5cbiRzY3V0LWx0OiBcIlxcMDAzY1wiO1xuLy8gdGltZXNcbiRzY3V0LXRpbWVzOiBcIlxcMDBEN1wiO1xuLy8gYmlnIHRpbWVzXG4kc2N1dC1iaWd0aW1lczogXCJcXDI3MTVcIjtcbi8vIGNoZWNrbWFya1xuJHNjdXQtY2hlY2ttYXJrOiBcIlxcMjcxM1wiO1xuXG4vLyBzZWN0aW9uIHNpZ24gKGRvdWJsZSBTLCBodXJyaWNhbmUsIHNlY3Rpb25hbCBzeW1ib2wsIHRoZSBsZWdhbCBkb3VnaG51dCwgc2lnbnVtIHNlY3Rpb25pcylcbiRzY3V0LXNlY3Q6IFwiXFwwMGE3XCI7XG4vLyBwYXJhZ3JhcGggc3ltYm9sIChwaWxjcm93KVxuJHNjdXQtcGFyYTogXCJcXDAwYjZcIjtcblxuLy8gbWlkZG90IChpbnRlcnB1bmN0LCBpbnRlcnBvaW50KVxuJHNjdXQtbWlkZG90OiBcIlxcMDBiN1wiO1xuLy8gby1zbGFzaCAoc2xhc2hlZCBvKVxuJHNjdXQtb3NsYXNoOiBcIlxcMDBmOFwiO1xuLy8gYnVsbGV0XG4kc2N1dC1idWxsOiBcIlxcMjAyMlwiO1xuLy8gd2hpdGUgYnVsbGV0XG4kc2N1dC13aGlidWxsOiBcIlxcMjVFNlwiO1xuLy8gaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtaGVsbGlwOiBcIlxcMjAyNlwiO1xuLy8gdmVydGljYWwgZWxsaXBzaXNcbiRzY3V0LXZlbGxpcDogXCJcXDIyRUVcIjtcbi8vIG1pZGxpbmUgaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtbWlkaGVsbGlwOiBcIlxcMjJFRlwiO1xuXG4vLyB1cC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtdXRyaTogXCJcXDI1YjJcIjtcbi8vIGRvd24tcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWR0cmk6IFwiXFwyNWJjXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1sdHJpOiBcIlxcMjVjMFwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXJ0cmk6IFwiXFwyNWI2XCI7XG4vLyB1cC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtdXN0cmk6IFwiXFwyNWI0XCI7XG4vLyBkb3duLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1kc3RyaTogXCJcXDI1YmVcIjtcbi8vIGxlZnQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWxzdHJpOiBcIlxcMjVjMlwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXJzdHJpOiBcIlxcMjViOFwiO1xuLy8gZGlhbW9uZFxuJHNjdXQtZGlhbW9uZDogXCJcXDI1YzZcIjtcbi8vIGZpc2hleWVcbiRzY3V0LWZpc2hleWU6IFwiXFwyNWM5XCI7XG4vLyBidWxsc2V5ZVxuJHNjdXQtYnVsbHNleWU6IFwiXFwyNWNlXCI7XG4vLyBjaXJjbGVcbiRzY3V0LWNpcmNsZTogXCJcXDI1Y2ZcIjtcbi8vIHdoaXRlIGNpcmNsZVxuJHNjdXQtd2hpdGVjaXJjbGU6IFwiXFwyNWNiXCI7XG4vLyBzcXVhcmVcbiRzY3V0LXNxdWFyZTogXCJcXDI1YTBcIjtcbi8vIHdoaXRlIHNxdWFyZVxuJHNjdXQtd2hpdGVzcXVhcmU6IFwiXFwyNWExXCI7XG4vLyBzbWFsbCBzcXVhcmVcbiRzY3V0LXNzcXVhcmU6IFwiXFwyNWFhXCI7XG4vLyBzbWFsbCB3aGl0ZSBzcXVhcmVcbiRzY3V0LXN3aGl0ZXNxdWFyZTogXCJcXDI1YWJcIjtcblxuLy8gZ2VuZXJhbCBjdXJyZW5jeVxuJHNjdXQtY3VycmVuY3k6IFwiXFwwMGE0XCI7XG4vLyBjZW50XG4kc2N1dC1jZW50OiBcIlxcMDBhMlwiO1xuLy8gZG9sbGFyXG4kc2N1dC1kb2xsYXI6IFwiXFwwMDI0XCI7XG4vLyBwb3VuZFxuJHNjdXQtcG91bmQ6IFwiXFwwMGEzXCI7XG4vLyBldXJvXG4kc2N1dC1ldXJvOiBcIlxcMjBhY1wiO1xuLy8geWVuXG4kc2N1dC15ZW46IFwiXFwwMGE1XCI7XG4vLyBydXBlZVxuJHNjdXQtcnVwZWU6IFwiXFwyMEI5XCI7XG5AZnVuY3Rpb24gbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSkge1xuICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgYHNyY2AgdmFsdWVzLCBpbiBvcmRlciwgdGhhdFxuICAvLyBhIGdvb2QgYEBmb250LWZhY2VgIHdpbGwgbmVlZCwgaW5jbHVkaW5nIG9ubHlcbiAgLy8gdGhvc2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gdGhlIGxpc3QgYCRmb3JtYXRzYC5cbiAgJHJlc3VsdDogKCk7XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgJGVvdC12YWw6IHVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkZW90LXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZjIpIHtcbiAgICAkd29mZjItdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmMi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYpIHtcbiAgICAkd29mZi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgdHRmKSB7XG4gICAgJHR0Zi12YWw6IHVybCgnI3skZmlsZS1wYXRofS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR0dGYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBzdmcpIHtcbiAgICAkc3ZnLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkc3ZnLXZhbCwgY29tbWEpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQG1peGluIHNjdXQtZm9udC1mYWNlIChcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Z1xuKSB7XG5cbiAgQGlmIGluZGV4KCdpdGFsaWMnICdvYmxpcXVlJywgJHdlaWdodCkge1xuICAgICRzdHlsZTogJHdlaWdodDtcbiAgICAkd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcblxuICAgIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgICBzcmM6IHVybCgnI3skZmlsZS1wYXRofS5lb3QnKTtcbiAgICB9XG4gICAgc3JjOiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KTtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhhbmdpbmctaW5kZW50IChcbiAgJGluZGVudDogMWVtXG4pIHtcblxuICAvLyBwYWRkaW5nLWxlZnQgY3JlYXRlcyB0aGUgaW5kZW50LFxuICAvLyB3aGlsZSB0ZXh0LWluZGVudCBwdWxscyB0aGUgZmlyc3QgbGluZVxuICAvLyBiYWNrIHRvIHRoZSBlZGdlLlxuXG4gIHBhZGRpbmctbGVmdDogJGluZGVudDtcbiAgdGV4dC1pbmRlbnQ6IC0kaW5kZW50O1xuXG59XG5cbiVzY3V0LWhhbmdpbmctaW5kZW50IHtcbiAgQGluY2x1ZGUgc2N1dC1oYW5naW5nLWluZGVudDtcbn1cbkBtaXhpbiBzY3V0LWluZGVudGVkLXBzIChcbiAgJGluZGVudDogMS41ZW0sXG4gICRuby1maXJzdC1pbmRlbnQ6IHRydWVcbikge1xuXG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LWluZGVudDogJGluZGVudDtcbiAgfVxuXG4gIEBpZiAkbm8tZmlyc3QtaW5kZW50IHtcbiAgICBwOmZpcnN0LW9mLXR5cGUge1xuICAgICAgdGV4dC1pbmRlbnQ6IDA7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtaW5kZW50ZWQtcHMge1xuICBAaW5jbHVkZSBzY3V0LWluZGVudGVkLXBzO1xufVxuQG1peGluIHNjdXQta2V5LXZhbCAoXG4gICRkaXZpZGVyOiBcIjpcIixcbiAgJHBhZDogMC4yNWVtLFxuICAkaW5kZW50OiAxZW0sXG4gICRzcGFjaW5nOiAwLFxuICAkcGFkLWxlZnQ6IDBcbikge1xuXG4gICYgPiBkdCB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogJHBhZDtcbiAgICAgIEBpZiAkcGFkLWxlZnQgIT0gMCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkcGFkLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJiA+IGRkIHtcbiAgICBtYXJnaW4tbGVmdDogJGluZGVudDtcbiAgICBAaWYgJHNwYWNpbmcgIT0gMCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1rZXktdmFsIHtcbiAgQGluY2x1ZGUgc2N1dC1rZXktdmFsO1xufVxuQG1peGluIHNjdXQtbGluay1iYiAoXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHdpZHRoOiAxcHhcbikge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBib3JkZXItYm90dG9tLXdpZHRoOiAkd2lkdGg7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gIH1cblxufVxuXG4lc2N1dC1saW5rLWJiIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLWJiO1xufVxuLy8gU0NVVCBMSU5LIFVOU1RZTEVEXG4vLyBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dC8jbGluay11bnN0eWxlZFxuXG5AbWl4aW4gc2N1dC1saW5rLXVuc3R5bGVkKCkge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGluaGVyaXQ7XG5cbn1cblxuJXNjdXQtbGluay11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay11bnN0eWxlZCgpO1xufVxuXG5AbWl4aW4gc2N1dC1yZXZlcnNlLWl0YWxpY3MgKFxuICAkZWxlbWVudHM6IG51bGxcbikge1xuXG4gICRlbGVtZW50LWxpc3Q6IGVtLCBjaXRlLCBpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICN7am9pbigkZWxlbWVudC1saXN0LCAkZWxlbWVudHMpfSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICB9XG5cbn1cblxuJXNjdXQtcmV2ZXJzZS1pdGFsaWNzIHtcbiAgQGluY2x1ZGUgc2N1dC1yZXZlcnNlLWl0YWxpY3M7XG59XG5cbkBtaXhpbiBzY3V0LXNpZGUtbGluZWQgKFxuICAkaGVpZ2h0OiAxcHgsXG4gICRzcGFjZTogMC41ZW0sXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHYtYWRqdXN0OiBmYWxzZSxcbiAgJGRvdWJsZTogZmFsc2Vcbikge1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA1MCU7XG5cbiAgICBib3JkZXItdG9wLXN0eWxlOiAkc3R5bGU7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogJGhlaWdodDtcblxuICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICR2LWFkanVzdCAhPSBmYWxzZSB7XG4gICAgICBib3R0b206ICR2LWFkanVzdDtcbiAgICB9XG5cbiAgICBAaWYgJGRvdWJsZSAhPSBmYWxzZSB7XG4gICAgICBoZWlnaHQ6ICRkb3VibGU7XG4gICAgICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAkaGVpZ2h0O1xuICAgICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICY6YmVmb3JlIHtcbiAgICByaWdodDogJHNwYWNlO1xuICAgIG1hcmdpbi1sZWZ0OiAtNTAlO1xuICB9XG4gICY6YWZ0ZXIge1xuICAgIGxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6IC01MCU7XG4gIH1cblxufVxuXG4lc2N1dC1zaWRlLWxpbmVkIHtcbiAgQGluY2x1ZGUgc2N1dC1zaWRlLWxpbmVkO1xufVxuQG1peGluIHNjdXQtdHJ1bmNhdGUge1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG59XG5cbiVzY3V0LXRydW5jYXRlIHtcbiAgQGluY2x1ZGUgc2N1dC10cnVuY2F0ZTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BsYWNlaG9sZGVyc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NvbG9yc1wiO1xuQGltcG9ydCBcInRvb2xraXQvZm9udHNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ludHJpbnNpYy1yYXRpb1wiO1xuQGltcG9ydCBcInRvb2xraXQvbmVzdGVkLWNvbnRleHRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BhcmFsbGF4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9ydGxcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RhcmdldFwiO1xuQGltcG9ydCBcInRvb2xraXQvdHJpYW5nbGVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NlbnRlclwiO1xuQGltcG9ydCBcInRvb2xraXQvdmlld3BvcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3VuZGVybGluZVwiO1xuQGltcG9ydCBcInRvb2xraXQvYXJ0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9zZXQtbXVsdGlwbGVcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kVG9vbGtpdC1TZXR0aW5nczogKFxuICAnY2xlYXJmaXggZXh0ZW5kJzogZmFsc2UsXG4gICdjb2xvciBzdGFjayBhbW91bnRzJzogMjUlIDUwJSA3NSUgODUlIDkwJSxcbiAgJ3RpbnQgc2hhZGUgYW1vdW50cyc6IDc1JSA1MCUgMjUlLFxuICAndGludCBjb2xvcic6ICNmZmYsXG4gICdzaGFkZSBjb2xvcic6ICMwMDAsXG4gICdjb2xvciBzY2FsZSBzdGVwcyc6IDYsXG4gICdsaWdhdHVyZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2ZvbnQgZmFjZSB3ZWlnaHQnOiBub3JtYWwsXG4gICdmb250IGZhY2Ugc3R5bGUnOiBub3JtYWwsXG4gICdmb250IGZhY2UgaW5saW5lIHdvZmYnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBleHRlbmQnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBzcGVhayc6IGZhbHNlLFxuICAnZmFkZSBpbiBkdXJhdGlvbic6IDFzLFxuICAnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJzogJy53Zi1sb2FkaW5nJyxcbiAgJ2ZhZGUgaW4gZXh0ZW5kJzogZmFsc2UsXG4gICdpbnRyaW5zaWMgcmF0aW8nOiAxNi85LFxuICAnaW50cmluc2ljIHJhdGlvIHdpZHRoJzogMTAwJSxcbiAgJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cyc6ICc+IConLFxuICAnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJzogdG9wLFxuICAnaW50cmluc2ljIHJhdGlvIGV4dGVuZCc6IGZhbHNlLFxuICAnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnOiAxMDAlLFxuICAnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nOiBsZWZ0LFxuICAndHJpYW5nbGUgY29sb3InOiAjMDAwLFxuICAndHJpYW5nbGUgaGVpZ2h0JzogMWVtLFxuICAndHJpYW5nbGUgd2lkdGgnOiAxZW0sXG4gICd0cmlhbmdsZSBhbmdsZSc6IDAsXG4gICdwYXJhbGxheCBwZXJzcGVjdGl2ZSc6IDEsXG4gICdwYXJhbGxheCBlbGVtZW50JzogJ2JvZHknLFxuICAncGFyYWxsYXggaW9zJzogdHJ1ZSxcbiAgJ3BhcmFsbGF4IGRpc3RhbmNlJzogMCxcbiAgJ3ZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAndmVydGljYWwgZXh0ZW5kJzogZmFsc2UsXG4gICdob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JzogNTAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCc6IGZhbHNlLFxuICAndW5kZXJsaW5lIGJhY2tncm91bmQnOiAjZmZmLFxuICAndW5kZXJsaW5lIGNvbG9yJzogIzAwZSxcbiAgJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJzogdHJ1ZSxcbiAgJ3VuZGVybGluZSBkaXN0YW5jZSc6IDEsXG4gICd1bmRlcmxpbmUgd2lkdGgnOiAyLFxuICAndW5kZXJsaW5lIGV4dGVuZCc6IGZhbHNlLFxuICAnYXJ0IHBpeGVsIHNpemUnOiAxcHgsXG4gICdhcnQgY29sb3InOiBibGFjayxcbiAgJ2FydCBib3JkZXIgcmFkaXVzJzogMCVcbik7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTmV3IFNldHRpbmdzIG1vZHVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHbG9iYWxcbiRHbG9iYWxTZXR0aW5nczogJFRvb2xraXQtU2V0dGluZ3MgIWRlZmF1bHQ7XG4vLyBVc2VyXG4kVXNlclNldHRpbmdzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBVc2VyIFNldHRpbmcgRXhpc3RzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkVXNlclNldHRpbmdzLCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cy1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICRSZXR1cm47XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtaGFzKCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBHZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRHbG9iYWxTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWdldC1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHZhbHVlczogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJHZhbHVlczogbWFwLW1lcmdlKCR2YWx1ZXMsICgkc2V0dGluZzogc2V0dGluZy1nZXQoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWdldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctZ2V0KCRzZXR0aW5nKTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmdzIFNldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICRzZXR0aW5ncykgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQHJldHVybiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRSZXR1cm46ICgpO1xuXG4gIEBlYWNoICRLZXksICRWYWx1ZSBpbiAkVXNlclNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBpZigkc2V0dGluZyA9PSAkS2V5LCAkUmV0dXJuLCBtYXAtbWVyZ2UoJFJldHVybiwgKCRLZXk6ICRWYWx1ZSkpKTtcbiAgfVxuXG4gICRVc2VyU2V0dGluZ3M6ICRSZXR1cm4gIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkY2xlYXItdGhlLXNldHRpbmdzOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkVXNlclNldHRpbmdzOiAoKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1yZXNldCgpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1yZXNldCgpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgUGlja1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrKCRzZXR0aW5nLCAkaW5wdXQpIHtcbiAgQHJldHVybiBpZigkaW5wdXQgIT0gbnVsbCwgJGlucHV0LCBzZXR0aW5nLWdldCgkc2V0dGluZykpO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcsICRpbnB1dCBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHNldHRpbmctcGljaygkaW5wdXQsICRzZXR0aW5nKSkpO1xuICB9XG5cbiAgQHJldHVybiAkUmV0dXJuO1xufSIsIiRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQbGFjZWhvbGRlciBHZXQvU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpIHtcbiAgJHVuaXF1ZS1pZDogdW5pcXVlLWlkKCk7XG4gICRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiBtYXAtbWVyZ2UoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICgkaWQ6ICR1bmlxdWUtaWQpKSAhZ2xvYmFsO1xuICBAcmV0dXJuICR1bmlxdWUtaWQ7XG59XG5cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAkaWQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYXRlIFBsYWNlaG9sZGVyIENsYXNzIGFuZCBFeHRlbmRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCk7XG5cbiAgQGlmICRwbGFjZWhvbGRlci1pZCA9PSBudWxsIHtcbiAgICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCk7XG4gICAgQGF0LXJvb3QgJSN7JHBsYWNlaG9sZGVyLWlkfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGV4dGVuZCAlI3skcGxhY2Vob2xkZXItaWR9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFN0YXRpYyBNaXhpbiBIZWxwZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIG1peGluLWRyeWVyKCRpZCwgJGV4dGVuZDogdHJ1ZSkge1xuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTW9kZXJuIENsZWFyZml4IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjbGVhcmZpeCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2NsZWFyZml4IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY2xlYXJmaXgnKSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29tcGFzcyBFeHRlbnNpb24gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVGludCBhbmQgU2hhZGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTHVtYVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gbHVtYSgkY29sb3IpIHtcbiAgQHJldHVybiAocmVkKCRjb2xvcikgKiAuMjk5KSArIChncmVlbigkY29sb3IpICogLjU4NykgKyAoYmx1ZSgkY29sb3IpICogLjExNCk7XG59XG5cbkBmdW5jdGlvbiBsdW1hLWd0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpID49IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1sdGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA8PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtZGlmZigkY29sb3IxLCAkY29sb3IyKSB7XG4gIEByZXR1cm4gbHVtYSgkY29sb3IxKSAtIGx1bWEoJGNvbG9yMik7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU3RhY2tzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zdGFjaygkbWFpbiwgJHNlY29uZGFyeSwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCdjb2xvciBzdGFjayBhbW91bnRzJyk7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAxIHtcbiAgICAkYW1vdW50czogbnRoKCRhbW91bnRzLCAxKTtcbiAgfVxuXG4gICRzdGFjazogJG1haW47XG5cbiAgQGVhY2ggJGFtb3VudCBpbiAkYW1vdW50cyB7XG4gICAgJHN0YWNrOiBqb2luKCRzdGFjaywgbWl4KCRzZWNvbmRhcnksIG50aCgkc3RhY2ssIDEpLCAkYW1vdW50KSk7XG4gIH1cblxuICBAcmV0dXJuICRzdGFjaztcbn1cblxuLy8gVGludCBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBTaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBUaW50L1NoYWRlIFN0YWNrXG5AZnVuY3Rpb24gdGludC1zaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gICRjb2xvcnM6ICgpO1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ3RpbnQgc2hhZGUgYW1vdW50cycpO1xuICB9XG4gICRsZW5ndGg6IGxlbmd0aCgkYW1vdW50cyk7XG5cbiAgLy8gU2hhZGVzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHNoYWRlKCRjb2xvciwgbnRoKCRhbW91bnRzLCAkaSkpKTtcbiAgfVxuXG4gIC8vIEJhc2VcbiAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsICRjb2xvcik7XG5cbiAgLy8gVGludHNcbiAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkbGVuZ3RoIC0gMSB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHRpbnQoJGNvbG9yLCBudGgoJGFtb3VudHMsICRsZW5ndGggLSAkaSkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJGNvbG9ycztcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTY2FsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXNjYWxlKCRtYWluLCAkc2Vjb25kYXJ5LCAkc3RlcHM6IG51bGwpIHtcbiAgJHN0ZXBzOiBpZigkc3RlcHMgIT0gbnVsbCwgJHN0ZXBzLCB0b29sa2l0LWdldCgnY29sb3Igc2NhbGUgc3RlcHMnKSk7XG5cbiAgJGxpc3Q6ICRtYWluO1xuXG4gICRyZWQxOiByZWQoJG1haW4pO1xuICAkcmVkMjogcmVkKCRzZWNvbmRhcnkpO1xuICAkcmVkLWRpZmY6ICgoJHJlZDEgLSAkcmVkMikgLyAoKCRzdGVwcyAtIDEpKSk7XG5cbiAgJGh1ZTE6IGh1ZSgkbWFpbik7XG4gICRodWUyOiBodWUoJHNlY29uZGFyeSk7XG4gIEBpZiAoJGh1ZTIgKyAzNTkgLSAkaHVlMSkgPCBhYnMoJGh1ZTEgLSAkaHVlMikge1xuICAgICRodWUyOiAkaHVlMiArIDM1OTtcbiAgfVxuICAkaHVlLWRpZmY6ICgkaHVlMiAtICRodWUxKSAvICgkc3RlcHMgLSAxKTtcblxuICAkc2F0MTogc2F0dXJhdGlvbigkbWFpbik7XG4gICRzYXQyOiBzYXR1cmF0aW9uKCRzZWNvbmRhcnkpO1xuICAkc2F0LWRpZmY6IDA7XG4gIEBpZiAkc2F0MSA+ICRzYXQyIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MiAtICRzYXQxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDEgLSAkc2F0MikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkbHRlMTogbGlnaHRuZXNzKCRtYWluKTtcbiAgJGx0ZTI6IGxpZ2h0bmVzcygkc2Vjb25kYXJ5KTtcbiAgJGx0ZS1kaWZmOiAwO1xuICBAaWYgJGx0ZTEgPiAkbHRlMiB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTIgLSAkbHRlMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRsdGUtZGlmZjogKCRsdGUxIC0gJGx0ZTIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGFscDE6IGFscGhhKCRtYWluKTtcbiAgJGFscDI6IGFscGhhKCRzZWNvbmRhcnkpO1xuICAkYWxwLWRpZmY6IDA7XG4gIEBpZiAkYWxwMSA+ICRhbHAyIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMiAtICRhbHAxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGFscC1kaWZmOiAoJGFscDEgLSAkYWxwMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkaHVlLWhvbGQ6ICRodWUxO1xuICAkc2F0LWhvbGQ6ICRzYXQxO1xuICAkbHRlLWhvbGQ6ICRsdGUxO1xuICAkYWxwLWhvbGQ6ICRhbHAxO1xuICAkY29sb3ItaG9sZDogMDtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRzdGVwcyB7XG4gICAgJGh1ZS1ob2xkOiAkaHVlLWhvbGQgKyAkaHVlLWRpZmY7XG4gICAgJHNhdC1ob2xkOiAkc2F0LWhvbGQgKyAkc2F0LWRpZmY7XG4gICAgJGx0ZS1ob2xkOiAkbHRlLWhvbGQgKyAkbHRlLWRpZmY7XG4gICAgJGFscC1ob2xkOiAkYWxwLWhvbGQgKyAkYWxwLWRpZmY7XG5cbiAgICAkY29sb3ItaG9sZDogaHNsYSgkaHVlLWhvbGQsICRzYXQtaG9sZCwgJGx0ZS1ob2xkLCAkYWxwLWhvbGQpO1xuICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRjb2xvci1ob2xkKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRW5hYmxlIGxpZ2F0dXJlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2xpZ2F0dXJlIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2VuYWJsZSBsaWdhdHVyZXMnKSB7XG4gICAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhPTEsIGRsaWc9MVwiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tcy1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW8tZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJsaWdhXCIsXCJkbGlnXCI7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhY2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGZvbnQtZmFjZSgkbmFtZSwgJGZpbGVzLCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwsICRpbmxpbmUtd29mZjogbnVsbCkge1xuICAkd2VpZ2h0OiBpZigkd2VpZ2h0ICE9IG51bGwsICR3ZWlnaHQsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugd2VpZ2h0JykpO1xuICAkc3R5bGU6IGlmKCRzdHlsZSAhPSBudWxsLCAkc3R5bGUsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugc3R5bGUnKSk7XG4gICRpbmxpbmUtd29mZjogaWYoJGlubGluZS13b2ZmICE9IG51bGwsICRpbmxpbmUtd29mZiwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZicpKTtcblxuICAkZm9udC1zdGFjazogKCk7XG4gICRmb250LXNyYzogJyc7XG4gICRlb3Q6IGZhbHNlO1xuICAkZm9udC1leHRlbnNpb25zOiAoJ2VvdCc6ICdlbWJlZGRlZC1vcGVudHlwZScsICd3b2ZmMic6ICd3b2ZmMicsICd3b2ZmJzogJ3dvZmYnLCAndHRmJzogJ3RydWV0eXBlJywgJ3N2Zyc6ICdzdmcnKTtcblxuICBAZWFjaCAkZXh0LCAkZm9ybWF0IGluICRmb250LWV4dGVuc2lvbnMge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkZmlsZXMsICRleHQpIHtcbiAgICAgIEBpZiBmdW5jdGlvbi1leGlzdHMoaW5saW5lLWZvbnQtZmlsZXMpIGFuZCAkaW5saW5lLXdvZmYgPT0gdHJ1ZSBhbmQgKCRleHQgPT0gJ3dvZmYnIG9yICRleHQgPT0gJ3dvZmYyJykge1xuICAgICAgICAkZm9udC1zcmM6IGlubGluZS1mb250LWZpbGVzKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSk7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiBmdW5jdGlvbi1leGlzdHMoZm9udC11cmwpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGZvbnQtc3RhY2s6IGFwcGVuZCgkZm9udC1zdGFjaywgJGZvbnQtc3JjLCAnY29tbWEnKTtcbiAgICB9XG5cbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkbmFtZTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgQGlmICRlb3Qge1xuICAgICAgc3JjOiAkZW90O1xuICAgIH1cbiAgICBAaWYgbGVuZ3RoKCRmb250LXN0YWNrKSA+IDAge1xuICAgICAgc3JjOiAkZm9udC1zdGFjaztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJY29uIEZvbnRcbi8vIEZyb20gaHR0cDovL2ljb21vb24uaW9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGljb24tZm9udCgkZm9udC1zdGFjaywgJHNwZWFrOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRzcGVhazogaWYoJHNwZWFrICE9IG51bGwsICRzcGVhaywgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBzcGVhaycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBmb250LWZhbWlseTogJGZvbnQtc3RhY2s7XG4gIEBpZiAkc3BlYWsgPT0gZmFsc2Uge1xuICAgIHNwZWFrOiBub25lO1xuICB9XG4gIEBpbmNsdWRlIGljb24tZm9udC0tY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIGljb24tZm9udC0tY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaWNvbiBmb250IGNvcmUnKSB7XG4gICAgICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQpO1xuXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFkZSBJblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY29udGVudC1mYWRlLWluKCRkdXJhdGlvbjogbnVsbCwgJGxvYWRpbmc6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGR1cmF0aW9uOiBpZigkZHVyYXRpb24gIT0gbnVsbCwgJGR1cmF0aW9uLCB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpKTtcbiAgJGxvYWRpbmc6IGlmKCRsb2FkaW5nICE9IG51bGwsICRsb2FkaW5nLCB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIGFuZCAkZHVyYXRpb24gPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSBhbmQgJGxvYWRpbmcgPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY29udGVudCBmYWRlIGluJykge1xuICAgICAgQGluY2x1ZGUgY29udGVudC1mYWRlLWluKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGlmIG5vdCBtaXhpbi1leGlzdHMoJ3NpbmdsZS10cmFuc2l0aW9uJykge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBzaW5nbGUtdHJhbnNpdGlvbihvcGFjaXR5ICRkdXJhdGlvbik7XG4gICAgfVxuXG4gICAgI3skbG9hZGluZ30gJiB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGbHVpZCBFbWJlZHMgYW5kIHdoYXRldmVyIFdJVEggTk8gSkFWQVNDSVBUIVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gcGFyZW50Jykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIGNoaWxkJykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgdG9wOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuXG4gIHBhZGRpbmctI3skcG9zaXRpb259OiAoMSAvICRyYXRpbykgKiAkd2lkdGg7XG4gIHdpZHRoOiAkd2lkdGg7XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkZWxlbWVudHM6IGlmKCRlbGVtZW50cyAhPSBudWxsLCAkZWxlbWVudHMsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcblxuICBAZWFjaCAkZWxlbWVudCBpbiAkZWxlbWVudHMge1xuICAgICN7JGVsZW1lbnR9IHtcbiAgICBcdEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGlyKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRlbGVtZW50cywgJGV4dGVuZCwgJHBvc2l0aW9uKTtcbn1cblxuQG1peGluIGlyLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xufSIsIi8vIHNpbXBsZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb250ZXh0IG9mIGEgbmVzdGVkIHBlcmNlbnRhZ2UuXG5AZnVuY3Rpb24gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuXG4gIC8vIEZpcnN0IGxldmVsIGRlZXAgaXMgYWx3YXlzIDEwMCVcbiAgJHBlcmNlbnRhZ2U6IDEwMCU7XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggbGV2ZWxcbiAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAvLyBJbnZlcnQgdGhlIHBlcmNlbnRhZ2UgdG8gZmluZCBjb250ZXh0XG4gICAgJHBlcmNlbnRhZ2U6IHBlcmNlbnRhZ2UoJHBlcmNlbnRhZ2UgLyAkY29udGV4dCk7XG4gIH1cbiAgLy8gUmV0dXJuIGZpbmFsIHBlcmNlbnRhZ2VcbiAgQHJldHVybiAkcGVyY2VudGFnZTtcbn1cblxuLy8gbWl4aW4gdG8gbWFrZSB0aGluZ3MgZWFzaWVyXG5AbWl4aW4gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJykpO1xuXG4gIHdpZHRoOiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpO1xuICBAaWYgJHBvc2l0aW9uID09IFwiY2VudGVyXCIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtLjU7XG4gIH1cbiAgQGlmICRwb3NpdGlvbiA9PSBcInJpZ2h0XCIge1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLTEgKyAxMDAlO1xuICB9XG59IiwiLy8gTWFnaWMgcGFyYWxsYXggbWl4aW5zXG5AbWl4aW4gcGFyYWxsYXgtaW5pdCgkcGVyc3BlY3RpdmU6IG51bGwsICRlbGVtZW50OiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG5cbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRlbGVtZW50OiBpZigkZWxlbWVudCAhPSBudWxsLCAkZWxlbWVudCwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGVsZW1lbnQnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBAaWYgJGVsZW1lbnQgPT0gJ2JvZHknIHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBodG1sLCBib2R5IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuICAgICAgYm9keSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRlbGVtZW50ID09IHRoaXMge1xuICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBhdC1yb290ICN7JGVsZW1lbnR9IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlOiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgb3ZlcmZsb3c6IGF1dG87XG4gIEBpZiBtaXhpbi1leGlzdHMocGVyc3BlY3RpdmUpIHtcbiAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUgKiAxcHgpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gICAgcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgfVxuICAvLyBBbGxvd3MgZm9yIHNtb290aCBzY3JvbGxpbmcgYnV0IGRpc2FibGVzIHBhcmFsbGF4IGVmZmVjdHMuXG4gIEBpZiAkcGFyYWxsYXgtaW9zID09IGZhbHNlIHtcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cbiAgLy8gTWFrZSBzdXJlIDNEIHBlcnNwZWN0aXZlIGlzIHByZXNlcnZlZFxuICAmLCAmICoge1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtLXN0eWxlKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUocHJlc2VydmUtM2QpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgoJGRpc3RhbmNlOiBudWxsLCAkcGVyc3BlY3RpdmU6IG51bGwpIHtcblxuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBkaXN0YW5jZScpKTtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG5cbiAgJHRyYW5zZm9ybTogdHJhbnNsYXRlWigkZGlzdGFuY2UgKiAkcGVyc3BlY3RpdmUgKiAxcHgpIHNjYWxlKGFicygkZGlzdGFuY2UgLSAxKSk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zZm9ybSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICAgIHRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgfVxuXG4gIHotaW5kZXg6ICRkaXN0YW5jZSAqIDEwMDtcbn1cbiIsIkBtaXhpbiBydGwoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgJF9wcm9wZXJ0eTogJHByb3BlcnR5O1xuICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcblxuICBAaWYgbGVuZ3RoKCR2YWx1ZSkgPT0gNCB7XG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICN7JHByb3BlcnR5fTogbnRoKCR2YWx1ZSwgMSkgbnRoKCR2YWx1ZSwgNCkgbnRoKCR2YWx1ZSwgMykgbnRoKCR2YWx1ZSwgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSAtIDEpICsgJ3JpZ2h0JztcbiAgICB9XG4gICAgQGVsc2UgaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpIC0gMSkgKyAnbGVmdCc7XG4gICAgfVxuXG4gICAgQGlmICRwcm9wZXJ0eSAhPSAkX3Byb3BlcnR5IHtcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIkBtaXhpbiB0YXJnZXQoJHRhcmdldCkge1xuICBAYXQtcm9vdCB7XG4gICAgLyohIEB7dGFyZ2V0OiAjeyR0YXJnZXR9fSAqL1xuICAgICYge1xuICAgICAgQGNvbnRlbnQ7ICBcbiAgICB9XG4gICAgLyohIHt0YXJnZXQ6ICN7JHRhcmdldH19QCAqLyAgXG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERyYXcgdHJpYW5nbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIHRyaWFuZ2xlKCRjb2xvcjogbnVsbCwgJGhlaWdodDogbnVsbCwgJHdpZHRoOiBudWxsLCAkYW5nbGU6IG51bGwpIHtcblxuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBjb2xvcicpKTtcbiAgJGhlaWdodDogaWYoJGhlaWdodCAhPSBudWxsLCAkaGVpZ2h0LCB0b29sa2l0LWdldCgndHJpYW5nbGUgaGVpZ2h0JykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSB3aWR0aCcpKTtcbiAgJGFuZ2xlOiBpZigkYW5nbGUgIT0gbnVsbCwgJGFuZ2xlLCB0b29sa2l0LWdldCgndHJpYW5nbGUgYW5nbGUnKSk7XG5cbiAgQGlmIG50aCgkYW5nbGUsIDEpID09IFwidG9wXCIgb3IgbnRoKCRhbmdsZSwgMSkgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiBcIiN7JGFuZ2xlfVwiO1xuICB9XG5cbiAgQGlmICRhbmdsZSA9PSBcInRvcFwiIHtcbiAgICAkYW5nbGU6IDA7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwicmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDI7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMTtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogNDUgKiA0O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwibGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDU7XG4gIH1cblxuICBAaWYgdW5pdCgkaGVpZ2h0KSA9PSBcIlwiIG9yIHVuaXQoJGhlaWdodCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JGhlaWdodH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciBoZWlnaHQuXCJcbiAgfVxuXG4gIEBpZiB1bml0KCR3aWR0aCkgPT0gXCJcIiBvciB1bml0KCR3aWR0aCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JHdpZHRofSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIHdpZHRoLlwiXG4gIH1cblxuICAvLyBvZmZzZXQgNDVkZWcgdG8gbWFrZSBlYWNoIHNpZGUgc3RhcnQgYXQgMFxuICAkZGVnOiAkYW5nbGUgKyA0NTtcbiAgLy8gaWYgdW5pdHMsIHJlbW92ZSB1bml0c1xuICBAaWYgdW5pdCgkZGVnKSA9PSBkZWcge1xuICAgICRkZWc6ICRkZWcgLyAxZGVnO1xuICB9XG4gIC8vIHNoaWZ0IHRvIGJlIG9uIGEgc2NhbGUgZnJvbSAwIHRvIDkwLlxuICBAd2hpbGUgJGRlZyA+IDkwIHtcbiAgICAkZGVnOiAkZGVnIC0gOTA7XG4gIH1cbiAgQHdoaWxlICRkZWcgPCAwIHtcbiAgICAkZGVnOiAkZGVnICsgOTA7XG4gIH1cbiAgLy8gR2V0IGEgcmF0aW8gb2YgOTAgdG8gbXVsdGlwbHkgYnkuXG4gICRkZWc6ICRkZWcgLyA5MDtcblxuICAvLyBtYWtlIHN1cmUgbWV0cmljcyBhcmUgcmVzZXRcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAvLyBydW4gdGhyb3VnaCBzaWRlc1xuICBAaWYgJGFuZ2xlIDw9IDQ1IG9yICRhbmdsZSA+IDMxNSB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSkgJGhlaWdodCAoJHdpZHRoICogJGRlZyk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDQ1IGFuZCAkYW5nbGUgPD0gMTM1IHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiAkZGVnKSAwICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAxMzUgYW5kICRhbmdsZSA8PSAyMjUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpIDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAyMjUgYW5kICRhbmdsZSA8PSAzMTUge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGggKCRoZWlnaHQgKiAkZGVnKSAwO1xuICB9XG59IiwiLy8gVmVydGljYWxseSBjZW50ZXIgYW55dGhpbmcsIGxpdGVyYWxseSBhbnl0aGluZy5cbi8vIGh0dHA6Ly96ZXJvc2l4dGhyZWUuc2UvdmVydGljYWwtYWxpZ24tYW55dGhpbmctd2l0aC1qdXN0LTMtbGluZXMtb2YtY3NzL1xuQG1peGluIHZlcnRpY2FsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgndmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcblxuICB0b3A6ICRtaWRwb2ludDtcbiAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd2ZXJ0aWNhbCBjZW50ZXInKSB7XG4gICAgICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIb3Jpem9udGFsIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIEBpZiAkbWlkcG9pbnQgIT0gMCUge1xuICAgIGxlZnQ6ICRtaWRwb2ludDtcbiAgfVxuXG4gIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWJzb2x1dGUgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIoJHZlcnRpY2FsOiBudWxsLCAkaG9yaXpvbnRhbDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICR2ZXJ0aWNhbDogaWYoJHZlcnRpY2FsICE9IG51bGwsICR2ZXJ0aWNhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIHRvcDogJHZlcnRpY2FsO1xuICBAaWYgJGhvcml6b250YWwgIT0gMCUge1xuICAgIGxlZnQ6ICRob3Jpem9udGFsO1xuICB9XG5cbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIH1cbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxuXG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDU1MgbGV2ZWwgNCBWaWV3cG9ydFxuLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLWRldmljZS1hZGFwdC8jdGhlLWF0dmlld3BvcnQtcnVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gdmlld3BvcnQge1xuICBALXdlYmtpdC12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tb3otdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbXMtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEB2aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuIiwiQG1peGluIHVuZGVybGluZSgkYmFja2dyb3VuZDogbnVsbCwgJGNvbG9yOiBudWxsLCAkY2xlYXItZGVzY2VuZGVyczogbnVsbCwgJGRpc3RhbmNlOiBudWxsLCAkd2lkdGg6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGJhY2tncm91bmQ6IGlmKCRiYWNrZ3JvdW5kICE9IG51bGwsICRiYWNrZ3JvdW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGJhY2tncm91bmQnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjb2xvcicpKTtcbiAgJGNsZWFyLWRlc2NlbmRlcnM6IGlmKCRjbGVhci1kZXNjZW5kZXJzICE9IG51bGwsICRjbGVhci1kZXNjZW5kZXJzLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnKSk7XG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBkaXN0YW5jZScpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIHdpZHRoJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gICRQWDogLjA2MjVlbTtcblxuICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKGJhY2tncm91bmQtaW1hZ2UpIGFuZCBmdW5jdGlvbi1leGlzdHMobGluZWFyLWdyYWRpZW50KSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgIGxpbmVhci1ncmFkaWVudChib3R0b20sICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSlcbiAgICApO1xuICB9XG4gIEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpO1xuICB9XG4gIGJhY2tncm91bmQtc2l6ZTogKDIgKiAkUFgpICgoMSArICR3aWR0aCkgKiAkUFgpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwICgoJHdpZHRoKSAqICRQWCkgKyAkZGlzdGFuY2U7XG5cbiAgQGlmICRjbGVhci1kZXNjZW5kZXJzIHtcbiAgICB0ZXh0LXNoYWRvdzogKDEgKiAkUFgpICgxICogJFBYKSAwICRiYWNrZ3JvdW5kLCAoLTEgKiAkUFgpIDAgMCAkYmFja2dyb3VuZDtcbiAgfVxufVxuXG5AbWl4aW4gdW5kZXJsaW5lLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndW5kZXJsaW5lJykge1xuICAgICAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQVJUIVxuLy8gSW5zcGlyZWQgYnkgaHR0cDovL2VscnVtb3JkZWxhbHV6LmdpdGh1Yi5pby9QaXhlbGF0b3IvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhcnQoJGFydCwgJHB4LXNpemU6IG51bGwsICRjb2xvcjogbnVsbCwgJHJhZGl1czogbnVsbCkge1xuICAkcHgtc2l6ZTogaWYoJHB4LXNpemUgIT0gbnVsbCwgJHB4LXNpemUsIHRvb2xraXQtZ2V0KCdhcnQgcGl4ZWwgc2l6ZScpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgnYXJ0IGNvbG9yJykpO1xuICAkcmFkaXVzOiBpZigkcmFkaXVzICE9IG51bGwsICRyYWRpdXMsIHRvb2xraXQtZ2V0KCdhcnQgYm9yZGVyIHJhZGl1cycpKTtcblxuICAkYnVpbGQ6ICgpO1xuICAkeTogJHB4LXNpemU7XG4gICR4OiAwO1xuXG4gIGhlaWdodDogJHB4LXNpemU7XG4gIHdpZHRoOiAkcHgtc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0cl9sZW5ndGgoJGFydCkge1xuICAgICRjaGFyOiBzdHJfc2xpY2UoJGFydCwgJGksICRpKTtcbiAgICAkeDogJHggKyAkcHgtc2l6ZTtcblxuICAgIEBpZiAkY2hhciA9PSAnbicge1xuICAgICAgJHk6ICR5ICsgJHB4LXNpemU7XG4gICAgICAkeDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGNoYXIgIT0gJyAnIHtcbiAgICAgICRib3JkZXI6ICR4ICR5IDAgJGNvbG9yO1xuICAgICAgJGJ1aWxkOiBhcHBlbmQoJGJ1aWxkLCAkYm9yZGVyLCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgYm94LXNoYWRvdzogJGJ1aWxkO1xufSIsIkBtaXhpbiBzZXQtbXVsdGlwbGUoJHZhbHVlLCAkcHJvcGVydGllcy4uLikge1xuICAkcHJvcGVydHktbGVuZ3RoOiBsZW5ndGgoJHByb3BlcnRpZXMpO1xuICAkZXJyb3ItbXNnOiBcIlRoZSBgc2V0LW11bHRpcGxlYCBtaXhpbiByZXF1aXJlcyB5b3UgdG8gcGFzcyBpbiBhIGxpc3Qgb2YgcHJvcGVydGllcyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50XCI7XG5cbiAgQGlmICRwcm9wZXJ0eS1sZW5ndGggPCAxIHtcbiAgICBAaWYgZmVhdHVyZS1leGlzdHMoYXQtZXJyb3IpIHtcbiAgICAgIEBlcnJvciAkZXJyb3ItbXNnO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAkZXJyb3ItbXNnO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgaW4gaXMgYSB3aGl0ZS1zcGFjZWQgc2VwYXJhdGVkIGxpc3QuXG4gICRwcm9wZXJ0aWVzOiBpZigkcHJvcGVydHktbGVuZ3RoID09IDEsIG50aCgkcHJvcGVydGllcywgMSksICRwcm9wZXJ0aWVzKTtcblxuICBAZWFjaCAkcHJvcGVydHkgaW4gJHByb3BlcnRpZXMge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlXG4gIH1cbn1cbiIsIi8vICBNb2R1bGUgU2NhbGUgYW5kIGJhc2UgZm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiRiYXNlLWZvbnQtc2l6ZTogICAxNHB4O1xuJGlkZWFsLWZvbnQtc2l6ZTogIDIycHg7XG4vLyAkYmFzZS1saW5lLWhlaWdodDogbXMoMSwgJGJhc2UtZm9udC1zaXplKTtcblxuJHJoeXRobS11bml0OiBcInJlbVwiO1xuJHJoeXRobS1nYXA6IDhweDtcbiRyZW0td2l0aC1weC1mYWxsYmFjazogZmFsc2U7XG5cbiRzY3V0LXJlbS1iYXNlOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UtZm9udC1zaXplKTtcblxuXG4vLyB7eyBDb21wb25lbnQgc2l6ZSB9fVxuJGdsb2JhbC1yYWRpdXM6IDNweDtcbiIsIi8vICBHcmlkIHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuXG4kbGF5b3V0LWJhc2U6IChcbiAgZ3V0dGVyczogMS81LFxuICBjb2x1bW4td2lkdGg6IDgwcHgsXG4gIC8vIGd1dHRlci1wb3NpdGlvbjogaW5zaWRlLXN0YXRpYyxcbiAgZGVidWc6IChcbiAgICAvLyBpbWFnZTogc2hvdyxcbiAgKSxcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiB0cnVlLFxuICAgIHJlbTogZmFsc2UsXG4gICksXG4pO1xuJHN1c3k6IGxheW91dCg1ICRsYXlvdXQtYmFzZSk7XG5cbi8vIHt7IEVsZW1lbnQgdHdpY2sgcG9pbnRzIH19XG5cbi8vIHt7IERldmljZSBsYXlvdXRzIH19XG4kc3VzeS1tZWRpYTogKFxuICAnbW9iaWxlJzogJyhtYXgtd2lkdGg6IDQxNHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiAnKG1heC13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogJyhtYXgtd2lkdGg6IDEwMjRweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICd0YWJsZXQnOiAnKG1pbi13aWR0aDogNzY4cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdC1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlLW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdkZXNrdG9wJzogJyhtaW4td2lkdGg6IDEyMDBweCknLFxuICAnY2F0ZWdvcnktbWVudSc6ICcobWluLXdpZHRoOiAxMDI0cHgpJ1xuKTtcbiR0YWJsZXQ6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIHRhYmxldCksXG4gIGxheW91dDogOSAuNVxuKTtcbiR0YWJsZXQtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkdGFibGV0LCBsYXlvdXQpKTtcbiRkZXNrdG9wOiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCBkZXNrdG9wKSxcbiAgbGF5b3V0OiAxMiAxLjUgc3BsaXRcbik7XG4kZGVza3RvcC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCRkZXNrdG9wLCBsYXlvdXQpKTtcbiRkZXNrdG9wLWdyaWQtcGFkZGluZzogc2N1dC1yZW0oMTUpO1xuXG4vLyAge3sgTGF5ZXJzIC0tLS0tLSB9fVxuJGxheWVyczogKFxuICBiYXNlLFxuICBoZWFkZXItbWVudSxcbiAgZHJhd2VyLFxuICBkcmF3ZXItc2hhZG93LFxuICBkcmF3ZXItbmF2LFxuKTsiLCIvLyAgU2V0dGluZ3Ncbi8vICA9PT09PT09PVxuXG4kY29sb3ItbGlnaHQtc2F0dXJhdGlvbjogOTMlO1xuXG4vLyAgQ29sb3JzXG4vLyAgPT09PT09XG5cbiRncmF5LWJhc2U6ICAgICAjMDAwICFkZWZhdWx0O1xuJGdyYXktZGFya2VyOiAgIHRpbnQoJGdyYXktYmFzZSwgMTMuNSUpICFkZWZhdWx0O1xuJGdyYXktZGFyazogICAgIHRpbnQoJGdyYXktYmFzZSwgMjAlKSAgICFkZWZhdWx0O1xuJGdyYXk6ICAgICAgICAgIHRpbnQoJGdyYXktYmFzZSwgMzMuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHQ6ICAgIHRpbnQoJGdyYXktYmFzZSwgNDYuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHRlcjogIHRpbnQoJGdyYXktYmFzZSwgOTMuNSUpICFkZWZhdWx0O1xuXG4vLyAgVGV4dHNcbi8vICAtLS0tLVxuXG4kdGV4dC1jb2xvcjogJGdyYXktZGFyaztcblxuLy8gIFBhbGxldGVcbi8vICAtLS0tLS0tLS0tLVxuXG4kYmx1ZTogIzJkNmVjNjtcbiRibHVlLWRhcms6IHJnYigwLCA2OSwgMTY0KTtcbiRibHVlLWxpZ2h0OiAjZDhlOWZmO1xuJHllbGxvdzogI2ZjOTYwMDtcbiR5ZWxsb3ctZGFyazogI2I4NmUwMDtcbiR5ZWxsb3ctbGluazogI2ZmZDgwMDtcbiRvcmFuZ2U6ICNmYzQ3MDA7XG4kb3JhbmdlLWRhcms6ICNiODZlMDA7XG4kcmVkOiByZ2IoMjA2LCA2OCwgNjIpO1xuJGdyZWVuOiByZ2IoMjgsIDE0OSwgMjIpO1xuJHBpbms6IHJnYigxOTcsIDMxLCAxMjQpO1xuXG4kcHJpbWFyeTogc2hhZGUoIzQyOGJjYSwgNi41JSk7XG4kc3VjY2VzczogIzVjYjg1YztcbiRpbmZvOiAgICAjNWJjMGRjO1xuJHdhcm5pbmc6ICNmMGFkNGU7XG4kZGFuZ2VyOiAgI2Q5NTM0ZjtcblxuJGlucHV0LWJvcmRlcjogI2U0ZTRlNDtcbiRib3JkZXItZ3JheTogIzkxOTE5MTtcbiRiYWNrZ3JvdW5kLWdyYXk6ICNlOWU5ZTk7XG5cbi8vICBMaW5rc1xuLy8gIC0tLS0tXG5cbiRsaW5rLWNvbG9yOiAgICAgICAgICAgIzAwMCAhZGVmYXVsdDtcbiRsaW5rLWhvdmVyLWNvbG9yOiAgICAgc2hhZGUoJGxpbmstY29sb3IsIDE1JSkgIWRlZmF1bHQ7XG4kbGluay1mb2N1cy1jb2xvcjogICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay1hY3RpdmUtY29sb3I6ICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay12aXNpdGVkLWNvbG9yOiAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG5cbi8vICBOUHJvZ3Jlc3Ncbi8vICAtLS0tLS0tLS1cbiRucHJvZ3Jlc3MtY29sb3I6ICAgICRwcmltYXJ5O1xuIiwiLy8gIEZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogICByaWdodDtcblxuLy8g5YOF6Yed5bCN6Iux5paHXG4vLyBAZm9udC1mYWNlIHtcbi8vICAgZm9udC1mYW1pbHk6IEVuZ2xpc2g7XG4vLyAgIHVuaWNvZGUtcmFuZ2U6IFUrMDAtMDI0Rjtcbi8vICAgc3JjOiBsb2NhbChIZWx2ZXRpY2EpO1xuLy8gfVxuXG4kc2FuczogICAgSGVsdmV0aWNhTmV1ZS1MaWdodFxuICAgICAgICwgJ0hlbHZldGljYSBOZXVlIExpZ2h0J1xuICAgICAgICwgJ0hlbHZldGljYSBOZXVlJ1xuICAgICAgICwgIEhlbHZldGljYVxuICAgICAgICwgJ0hlaXRpIFRDJ1xuICAgICAgICwgJ0xpSGVpIFBybydcbiAgICAgICAsICdNaWNyb3NvZnQgSmhlbmdIZWknXG4gICAgICAgLCAn5b6u6Luf5q2j6buR6auUJ1xuICAgICAgICwgIEFyaWFsXG4gICAgICAgLCAgc2Fucy1zZXJpZjtcblxuJHNlcmlmOiAgJ1BUIFNlcmlmJ1xuICAgICAgICwgR2VvcmdpYVxuICAgICAgICwgVGltZXNcbiAgICAgICAsICdUaW1lcyBOZXcgUm9tYW4nXG4gICAgICAgLCAnU29uZ3RpIFRDJ1xuICAgICAgICwgJ0hpcmFnaW5vIE1pbmNobyBQcm9OJ1xuICAgICAgICwgc2VyaWY7XG5cbiRiYXNlLWZvbnQtZmFtaWx5OiAkc2FuczsiXSwibWFwcGluZ3MiOiI7QThDQUE7Ozs7O0VBS0U7QTlDTXNCLEE4Q3VCeEIsYTlDdkJxQyxDOEN1QmpCO0VBVmxCLGVBQWUsRUFBRSxJQUFLO0VBQ3RCLFlBQVksRUFBRSxDQUFFO0VBR2QsVUFBVSxFQUFFLENBQUU7RUFDZCxhQUFhLEVBQUUsQ0FBRSxHQU9wQjs7QTlDekJ1QixBQUFBLGFBQWEsQ0FBQztFQUVwQyxPQUFPLEVBQUUsSUFBSyxHQVFmO0U2QzZCRyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07STdDdkNFLEFBQUEsYUFBYSxDQUFDO01BSWxDLE9BQU8sRUFBRSxJQUFLO01BQ2QsZUFBZSxFQUFFLFlBQWE7TUFDOUIsV0FBVyxFQUFFLE1BQU87TUFDcEIsS0FBSyxFQUFFLEtBQU07TUFDYixJQUFJLEVBQUUsZ0JBQWlCLEdBRTFCOztBQUNELEFBQ0UsbUJBRGlCLENBQ2pCLEtBQUssQ0FBQztFQUFFLEtBQUssRUFBRSxJQUFLLEdBQUk7O0FBRDFCLEFBR0UsbUJBSGlCLENBR2pCLGNBQWMsQ0FBQztFQUNiLEtBQUssRUN2QndCLElBQVcsR0QyQnpDO0VBUkgsQUFHRSxtQkFIaUIsQ0FHakIsY0FBYyxBQUVYLE9BQU8sRUFMWixBQUdFLG1CQUhpQixDQUdqQixjQUFjLEFBR1gsTUFBTSxDQUFDO0lBQUUsS0FBSyxFQUFFLFNBQVUsR0FBSTtFQU5uQyxBQU9NLG1CQVBhLENBR2pCLGNBQWMsR0FJVixjQUFjLENBQUM7SUFBRSxXQUFXLEVDMUJELEdBQVcsR0QwQkE7O0FBUDVDLEFBVUUsbUJBVmlCLENBVWpCLEtBQUssQ0FBQztFQUNKLFlBQVksRUM5QmlCLEdBQVc7RUQrQnhDLEtBQUssRUFBRSxJQUFLLEdBS2I7RUFqQkgsQUFVRSxtQkFWaUIsQ0FVakIsS0FBSyxBQUdGLFFBQVEsQ0FBQztJQUNSLFlBQVksRUNqQ2UsR0FBVztJRGtDdEMsT0FBTyxFOEM0ckNELEtBQU8sRzlDM3JDZDs7QUFoQkwsQUFtQkUsbUJBbkJpQixDQW1CakIsS0FBSyxDQUFDO0VBQ0osV0FBVyxFQ3ZDa0IsR0FBVztFRHdDeEMsS0FBSyxFQUFFLElBQUssR0FLYjtFQTFCSCxBQW1CRSxtQkFuQmlCLENBbUJqQixLQUFLLEFBR0YsT0FBTyxDQUFDO0lBQ1AsV0FBVyxFQzFDZ0IsR0FBVztJRDJDdEMsT0FBTyxFOENxckNELEtBQU8sRzlDcHJDZDs7QUFJTCxBQUFBLGFBQWEsQ0FBQztFQUNaLGFBQWEsRUNqRGtCLEdBQVc7RURrRDFDLE9BQU8sRUNsRHdCLEdBQVcsQ0RrRDVCLENBQUM7RUFDZixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ2tFWk4sT0FBTztFbEVhbkIsWUFBWSxFQUFFLFdBQVksR0FNM0I7RTZDWEcsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO0k3Q0N0QixBQUFBLGFBQWEsQ0FBQztNQU1WLE9BQU8sRUFBRSxJQUFLO01BQ2QsZUFBZSxFQUFFLGFBQWM7TUFDL0IsV0FBVyxFQUFFLE1BQU8sR0FFdkI7O0FBQ0QsQUFBQSxrQkFBa0IsQ0FBQztFQUNqQixPQUFPLEVBQUUsSUFBSztFQUNkLGVBQWUsRUFBRSxRQUFTO0VBQzFCLGFBQWEsRUM5RGtCLEdBQVcsR0RpRjNDO0VBdEJELEFBQUEsa0JBQWtCLEFBSWYsV0FBVyxDQUFDO0lBQUUsYUFBYSxFQUFFLENBQUUsR0FBSTtFNkNoQmxDLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtJN0NZdEIsQUFBQSxrQkFBa0IsQ0FBQztNQU1mLGVBQWUsRUFBRSxVQUFXO01BQzVCLGFBQWEsRUFBRSxDQUFFO01BQ2pCLEtBQUssRUFBRSxHQUFJLEdBY2Q7TUF0QkQsQUFBQSxrQkFBa0IsQUFTYixXQUFXLENBQUM7UUFDWCxlQUFlLEVBQUUsUUFBUztRQUMxQixLQUFLLEVBQUUsSUFBSyxHQUViO1FBYkwsQUFZTSxrQkFaWSxBQVNiLFdBQVcsQ0FHVixPQUFPLENBQUM7VUFBRSxZQUFZLEVBQUUsSUFBSyxHQUFJO0VBWnZDLEFBZ0JFLGtCQWhCZ0IsQ0FnQmhCLE9BQU8sQ0FBQztJQUNOLFlBQVksRUFBRSxJQUFLLEdBRXBCO0k2Qy9CQyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07TTdDWXRCLEFBZ0JFLGtCQWhCZ0IsQ0FnQmhCLE9BQU8sQ0FBQztRQUVvQixZQUFZLEVBQUUsQ0FBRSxHQUMzQztFQW5CSCxBQW9CZ0Isa0JBcEJFLENBb0JoQixXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQUUsV0FBVyxFQy9FUixHQUFXLEdEK0VPO0VBcEJuRCxBQXFCRSxrQkFyQmdCLENBcUJoQixLQUFLLENBQUM7SUFBRSxJQUFJLEVDaEZtQixJQUFXLEdEZ0ZwQjs7QUFFeEIsQUFBQSxtQkFBbUIsQ0FBQztFQUNsQixPQUFPLEVBQUUsSUFBSztFQUNkLGVBQWUsRUFBRSxhQUFjLEdBT2hDO0U2QzVDRyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07STdDbUN0QixBQUFBLG1CQUFtQixDQUFDO01BSWhCLGVBQWUsRUFBRSxRQUFTO01BQzFCLEtBQUssRUFBRSxHQUFJLEdBSWQ7TUFURCxBQU9jLG1CQVBLLENBT2YsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUFFLFdBQVcsRUN6RkYsR0FBVyxHRHlGQzs7QTZDMUN6QyxNQUFNLEVBQUwsU0FBUyxFQUFFLE1BQU07RTdDOEN0QixBQUFBLHNCQUFzQixDQUFDO0lBRW5CLE9BQU8sRUFBRSxJQUFLO0lBQ2QsZUFBZSxFQUFFLGFBQWMsR0FFbEM7O0FBQ0QsQUFBQSw0QkFBNEIsQ0FBQztFQUMzQixhQUFhLEVDcEdrQixHQUFXLEdEMEczQztFNkMzREcsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO0k3Q29EdEIsQUFBQSw0QkFBNEIsQ0FBQztNQUd6QixLQUFLLEVBQUUsZUFBSSxHQUlkO0VBUEQsQUFNdUIsNEJBTkssQ0FNMUIsb0JBQW9CLENBQUMsRUFBRSxDQUFDO0lBQUMsT0FBTyxFQUFFLElBQUssR0FBRyIsIm5hbWVzIjpbXX0= */
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 /*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.newspaper-section {
  padding: 8px; }

.newspaper-section:nth-child(even) {
  background-color: #e9e9e9; }

.newspaper-section + .newspaper-section {
  margin-top: 16px; }

@media (min-width: 768px) {
  .newspaper-section {
    padding: 16px; } }
@media (min-width: 1200px) {
  .newspaper-section {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-flow: row wrap;
    flex-flow: row wrap;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between; } }
.newspaper-section__heading {
  margin: 0;
  font-size: 24px; }

@media (min-width: 1200px) {
  .newspaper-section__heading {
    margin-bottom: 8px; } }
.newspaper-section__tabs {
  margin-top: 8px;
  margin-bottom: 8px;
  white-space: nowrap;
  overflow-x: visible; }

@media (min-width: 1200px) {
  .newspaper-section__tabs {
    white-space: normal;
    overflow: auto; } }
.newspaper-section__tab.active {
  font-weight: 700;
  color: #c51f7c; }

.newspaper-section__tab + .newspaper-section__tab::before {
  content: '|';
  color: #333333;
  font-weight: 400;
  margin-right: 8px;
  margin-left: 4px; }

@media (min-width: 1200px) {
  .newspaper-section__tab-contents {
    width: 100%; } }
.newspaper-section__tab-content {
  opacity: 0;
  visibility: hidden;
  -webkit-transition: opacity .2s ease 0s, visibility .2s ease .2s;
  transition: opacity .2s ease 0s, visibility .2s ease .2s;
  overflow: hidden;
  height: 0;
  white-space: nowrap;
  overflow: auto; }

.newspaper-section__tab-content.active {
  opacity: 1;
  visibility: visible;
  -webkit-transition-delay: 0s;
  transition-delay: 0s;
  overflow: auto;
  height: auto; }

@media (min-width: 1200px) {
  .newspaper-section__tab-content:after {
    content: '';
    display: block;
    clear: both; }

  .newspaper-section__tab-content {
    white-space: normal; } }

.newspaper-section__newspaper {
  display: inline-block;
  margin-bottom: 8px; }
.newspaper-section__newspaper:first-child {
  display: none; }
@media (min-width: 1200px) {
  .newspaper-section__newspaper {
    float: left; }
  .newspaper-section__newspaper:first-child {
    display: inline-block; } }
  
.newspaper-section__newspaper + .newspaper-section__newspaper {
  margin-left: 8px; 
  width: 218px; }

@media (min-width: 1200px) {
  .newspaper-section__newspaper + .newspaper-section__newspaper {
    margin-left: 16px;
    width: 98px; } }
.newspaper-section__newspaper .title {
  text-align: center; }

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3BhZ2VzL19uZXdzcGFwZXIuc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3BhZ2VzL19uZXdzcGFwZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy5uZXdzcGFwZXItc2VjdGlvbiB7XG4gIHBhZGRpbmc6IHIoMSk7XG4gICY6bnRoLWNoaWxkKGV2ZW4pIHsgYmFja2dyb3VuZC1jb2xvcjogJGJhY2tncm91bmQtZ3JheTsgfVxuXG4gICYgKyAmIHsgbWFyZ2luLXRvcDogcigyKTt9XG5cbiAgQGluY2x1ZGUgc3VzeSgkdGFibGV0KSB7XG4gICAgcGFkZGluZzogcigyKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG59XG4ubmV3c3BhcGVyLXNlY3Rpb25fX2hlYWRpbmcge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMjRweDtcblxuICBAaW5jbHVkZSBzdXN5KCRkZXNrdG9wKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogcigxKTtcbiAgfVxufVxuLm5ld3NwYXBlci1zZWN0aW9uX190YWJzIHtcbiAgbWFyZ2luOiByKDEpIG4oKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3cteDogdmlzaWJsZTtcblxuICBAaW5jbHVkZSBzdXN5KCRkZXNrdG9wKSB7XG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgfVxufVxuLm5ld3NwYXBlci1zZWN0aW9uX190YWIge1xuICAmLmFjdGl2ZSB7IHRleHQ6IGJvbGQgJHBpbms7IH1cbiAgJiArICY6OmJlZm9yZSB7XG4gICAgY29udGVudDogJ3wnO1xuICAgIGNvbG9yOiAkdGV4dC1jb2xvcjtcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgIG1hcmdpbjogbigpIHIoMSkgbigpIHIoLjUpO1xuICB9XG59XG4ubmV3c3BhcGVyLXNlY3Rpb25fX3RhYi1jb250ZW50cyB7XG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuLm5ld3NwYXBlci1zZWN0aW9uX190YWItY29udGVudCB7XG4gIEBpbmNsdWRlIHRvZ2dsZS1zaG93KCk7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBhdXRvO1xuXG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgIGNsZWFyOiBmaXg7XG4gIH1cbn1cbi5uZXdzcGFwZXItc2VjdGlvbl9fbmV3c3BhcGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiByKDEpO1xuXG4gIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgfVxuXG4gICYgKyAmIHtcbiAgICBtYXJnaW4tbGVmdDogcigxKTtcblxuICAgIEBpbmNsdWRlIHN1c3koJGRlc2t0b3ApIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiByKDIpO1xuICAgICAgd2lkdGg6IDk4cHg7XG4gICAgfVxuICB9XG5cbiAgLnRpdGxlIHsgdGV4dC1hbGlnbjogY2VudGVyOyB9XG59XG4iLCIvLyB7e1Nhc3MgbWl4aW5zIC0tLS0tLS0tfX1cbkBmdW5jdGlvbiBuKCkgeyBAcmV0dXJuIHVucXVvdGUoXCIqXCIpOyB9XG5cbkBmdW5jdGlvbiByKCR0aW1lczogMSkgeyBAcmV0dXJuICRyaHl0aG0tZ2FwICogJHRpbWVzOyB9XG5cbkBtaXhpbiBzdXN5KCRtYXApIHtcbiAgQGluY2x1ZGUgc3VzeS1icmVha3BvaW50KG1hcC1nZXQoJG1hcCwgcXVlcnkpLCBtYXAtZ2V0KCRtYXAsIGxheW91dCkpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gcmV2ZXJzZS1oaWRlLXZpc3VhbGx5KCkge1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IGF1dG87XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIGhlaWdodDogYXV0bztcbiAgd2lkdGg6IGF1dG87XG59XG5cbkBtaXhpbiBzaGFyZS1icmVha3BvaW50cygkbWFwLCAkY3NzcHJvcDogY29udGVudCkge1xuICAkZGVzY3JpcHRpb246ICcnO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSwgJHZhbHVlIGluICRtYXAge1xuICAgIEBpZiAkZGVzY3JpcHRpb24gIT0gICcnIHtcbiAgICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJyB8ICc7XG4gICAgfVxuICAgIFxuICAgICRkZXNjcmlwdGlvbjogJGRlc2NyaXB0aW9uICsgJHByb3BlcnR5ICsnOiAnKyBpbnNwZWN0KCR2YWx1ZSk7XG4gIH1cblxuICBkaXNwbGF5OiBub25lO1xuICAjeyRjc3Nwcm9wfTogICRkZXNjcmlwdGlvbjtcbn1cblxuQG1peGluIHRvZ2dsZS1mYWRlKCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICB9XG59XG5cbkBtaXhpbiB0b2dnbGUtc2hvdygpIHtcbiAgb3BhY2l0eTogMDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlIDBzLCB2aXNpYmlsaXR5IC4ycyBlYXNlIC4ycztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgaGVpZ2h0OiAwO1xuICAmLmFjdGl2ZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgfSAgXG59XG5cbkBtaXhpbiBzaG93KCkge1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAwcztcbiAgaGVpZ2h0OiBhdXRvOyAgXG59XG5cbkBtaXhpbiBpbnB1dC1wbGFjZWhvbGRlcigpIHtcbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciwgXG4gICY6Oi1tb3otcGxhY2Vob2xkZXIsXG4gICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbn1cblxuQG1peGluIGRlYnVnKCRjb2xvcjogI2ZmZiByZ2JhKHRvbWF0bywgLjMpKSB7XG4gIGNvbG9yOiAkY29sb3Jcbn1cblxuQG1peGluIGxpc3QtZGl2aWRlZCgkZGl2aWRlciwgJHNwYWNlKSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpO1xuICA+IGxpICsgbGk6YmVmb3JlIHsgbWFyZ2luLWxlZnQ6ICRzcGFjZSArIDRweDsgfVxufVxuIiwiQG1peGluIEhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG5AbWl4aW4gU2VsZWN0IHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgcGFkZGluZzogMCByKDIpIDAgcigxKTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbiAgLy8gaGVpZ2h0OiAkaW5wdXQtaGVpZ2h0O1xuICAvLyBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyLWNvbG9yO1xuICAvLyBiYWNrZ3JvdW5kOiB1cmwoXCJpbWFnZXMvYXJyb3ctZG93bi5zdmdcIilcbiAgLy8gICAgICAgICAgIDkyJSA1MCUgLyA4cHggMTBweFxuICAvLyAgICAgICAgICAgbm8tcmVwZWF0XG4gIC8vICAgICAgICAgICB0cmFuc3BhcmVudDtcbiAgLm5vLWNzcy1hcHBlYXJhbmNlICYge1xuICAgIEBpbmNsdWRlIHNjdXQtcGFkZGluZyhuIDApO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gIH1cbn1cblxuQG1peGluIE5vcm1hbGl6ZSgpIHtcbiAgYXBwZWFyYW5jZTogbm9uZTtcbiAgYm9yZGVyOiBub25lO1xuICBvdXRsaW5lOiBub25lO1xuICBiYWNrZ3JvdW5kOiBub25lIHRyYW5zcGFyZW50O1xuICBwYWRkaW5nOiAwO1xufSIsIi8vIFN1c3lcbi8vID09PT1cblxuQGltcG9ydCAnc3VzeS9sYW5ndWFnZS9zdXN5JztcbiIsIi8vIFN1c3kgTmV4dCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuJHN1c3ktdmVyc2lvbjogMi4xO1xuXG5AaW1wb3J0IFwiLi4vc3VcIjtcbkBpbXBvcnQgXCIuLi9vdXRwdXQvZmxvYXRcIjtcblxuQGltcG9ydCBcInN1c3kvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJzdXN5L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdXN5L2dyaWRzXCI7XG5AaW1wb3J0IFwic3VzeS9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VzeS9jb250ZXh0XCI7XG5AaW1wb3J0IFwic3VzeS9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VzeS9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzdXN5L3NwYW5cIjtcbkBpbXBvcnQgXCJzdXN5L2d1dHRlcnNcIjtcbkBpbXBvcnQgXCJzdXN5L2lzb2xhdGVcIjtcbkBpbXBvcnQgXCJzdXN5L2dhbGxlcnlcIjtcbkBpbXBvcnQgXCJzdXN5L3Jvd3NcIjtcbkBpbXBvcnQgXCJzdXN5L21hcmdpbnNcIjtcbkBpbXBvcnQgXCJzdXN5L3BhZGRpbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2JsZWVkXCI7XG5AaW1wb3J0IFwic3VzeS9icmVha3BvaW50LXBsdWdpblwiO1xuIiwiLy8gU3Vcbi8vID09XG5cbkBpbXBvcnQgXCJzdS91dGlsaXRpZXNcIjtcbkBpbXBvcnQgXCJzdS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1L3ZhbGlkYXRpb25cIjtcbkBpbXBvcnQgXCJzdS9ncmlkXCI7XG4iLCIvLyBNYXAgRnVuY3Rpb25zXG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gVHJ1bmNhdGUgTGlzdFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSBsaXN0LCB0cnVuY2F0ZWQgdG8gYSBnaXZlbiBsZW5ndGhcbkBmdW5jdGlvbiBfc3VzeS10cnVuY2F0ZS1saXN0KFxuICAkbGlzdCxcbiAgJGxlbmd0aFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGlzdCkge1xuICAgICRfcmV0dXJuOiBpZigkaSA8PSAkbGVuZ3RoLCBhcHBlbmQoJF9yZXR1cm4sIG50aCgkbGlzdCwgJGkpKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIEdldFxuLy8gLS0tLS0tLS1cbi8vIC0gUmV0dXJuIGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtZ2V0KFxuICAkbWFwLFxuICAka2V5cy4uLlxuKSB7XG4gICRfcmV0dXJuOiAkbWFwO1xuXG4gIEBlYWNoICRrZXkgaW4gJGtleXMge1xuICAgIEBpZiB0eXBlLW9mKCRfcmV0dXJuKSA9PSBtYXAge1xuICAgICAgJF9yZXR1cm46IG1hcC1nZXQoJF9yZXR1cm4sICRrZXkpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBTZXRcbi8vIC0tLS0tLS0tXG4vLyAtIFNldCBhIHZhbHVlIGRlZXAgaW4gbmVzdGVkIG1hcHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLXNldChcbiAgJG1hcCxcbiAgJGtleXMtdmFsdWUuLi5cbikge1xuICAkX3ZhbHVlOiBudGgoJGtleXMtdmFsdWUsIC0xKTtcbiAgJF9rZXlzOiBfc3VzeS10cnVuY2F0ZS1saXN0KCRrZXlzLXZhbHVlLCBsZW5ndGgoJGtleXMtdmFsdWUpIC0gMSk7XG4gICRfbGVuZ3RoOiBsZW5ndGgoJF9rZXlzKTtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJF9sZW5ndGgge1xuICAgICRfbjogMCAtICRpO1xuICAgICRfbGV2ZWw6IF9zdXN5LXRydW5jYXRlLWxpc3QoJF9rZXlzLCAkX2xlbmd0aCArICRfbik7XG4gICAgJF9sZXZlbDogX3N1c3ktZGVlcC1nZXQoJG1hcCwgJF9sZXZlbC4uLik7XG4gICAgJF9tZXJnZTogbnRoKCRfa2V5cywgJF9uKTtcbiAgICAkX21lcmdlOiAoJF9tZXJnZTogJF92YWx1ZSk7XG4gICAgJF9yZXR1cm46IGlmKCRfbGV2ZWwsIG1hcC1tZXJnZSgkX2xldmVsLCAkX21lcmdlKSwgJF9tZXJnZSk7XG4gICAgJF92YWx1ZTogJF9yZXR1cm47XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgTWVyZ2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiAyIG9iamVjdHMgb2YgYW55IGRlcHRoLCBtZXJnZWRcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLW1lcmdlKFxuICAkbWFwMSxcbiAgJG1hcDJcbikge1xuXG4gIEBpZiB0eXBlLW9mKCRtYXAxKSAhPSBtYXAgb3IgdHlwZS1vZigkbWFwMikgIT0gbWFwIHtcbiAgICAkbWFwMTogJG1hcDI7XG4gIH0gQGVsc2Uge1xuICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwMiB7XG4gICAgICAkX25ldzogKCRrZXk6IF9zdXN5X2RlZXAtbWVyZ2UobWFwLWdldCgkbWFwMSwgJGtleSksICR2YWx1ZSkpO1xuICAgICAgJG1hcDE6IG1hcC1tZXJnZSgkbWFwMSwgJF9uZXcpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG1hcDE7XG59XG5cblxuLy8gRGVlcCBIYXMtS2V5XG4vLyAtLS0tLS0tLS0tLS1cbi8vIC0gUmV0dXJuIHRydWUgaWYgYSBkZWVwIGtleSBleGlzdHNcbkBmdW5jdGlvbiBfc3VzeS1kZWVwLWhhcy1rZXkoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46IG51bGw7XG4gICRfc3RvcDogZmFsc2U7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIG5vdCgkX3N0b3ApIHtcbiAgICAgICRfcmV0dXJuOiBtYXAtaGFzLWtleSgkbWFwLCAka2V5KTtcbiAgICB9XG5cbiAgICBAaWYgJF9yZXR1cm4ge1xuICAgICAgJG1hcDogbWFwLWdldCgkbWFwLCAka2V5KTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfc3RvcDogdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU2V0dGluZ3Ncbi8vID09PT09PT09XG5cbi8vIFZlcnNpb25cbi8vIC0tLS0tLS1cbiRzdS12ZXJzaW9uOiAxLjE7XG5cblxuLy8gRGVmYXVsdCBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVGhlIGJhc2ljIHNldHRpbmdzXG4kc3VzeS1kZWZhdWx0czogKFxuICBjb2x1bW5zOiA0LFxuICBndXR0ZXJzOiAuMjUsXG4pO1xuXG5cbi8vIFVzZXIgU2V0dGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gRGVmaW5lIHRoZSAkc3VzeSB2YXJpYWJsZSB3aXRoIGEgbWFwIG9mIHlvdXIgb3duIHNldHRpbmdzLlxuLy8gLSBTZXQgRUlUSEVSICRjb2x1bW4td2lkdGggT1IgJGNvbnRhaW5lclxuLy8gLSBVc2UgJGNvbHVtbi13aWR0aCBmb3Igc3RhdGljIGxheW91dHNcbiRzdXN5OiAoKSAhZGVmYXVsdDtcblxuXG4vLyBTdXN5IERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBBZGQgZGVmYXVsdHMgdG8gU3VzeVxuQG1peGluIHN1c3ktZGVmYXVsdHMoXG4gICRkZWZhdWx0c1xuKSB7XG4gICRzdXN5LWRlZmF1bHRzOiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRkZWZhdWx0cykgIWdsb2JhbDtcbn1cblxuXG4vLyBTdXN5IFNldFxuLy8gLS0tLS0tLS1cbi8vIENoYW5nZSBvbmUgc2V0dGluZ1xuLy8gLSAka2V5ICAgOiBzZXR0aW5nIG5hbWVcbi8vIC0gJHZhbHVlIDogc2V0dGluZyB2YWx1ZVxuQG1peGluIHN1c3ktc2V0KFxuICAka2V5LXZhbHVlLi4uXG4pIHtcbiAgJHN1c3k6IF9zdXN5LWRlZXAtc2V0KCRzdXN5LCAka2V5LXZhbHVlLi4uKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgR2V0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJuIG9uZSBzZXR0aW5nIGZyb20gYSBncmlkXG4vLyAtICRrZXkgICAgIDogPGtleXdvcmQ+XG4vLyAtICRsYXlvdXQgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIHN1c3ktZ2V0KFxuICAka2V5LFxuICAkbGF5b3V0OiBtYXAtbWVyZ2UoJHN1c3ktZGVmYXVsdHMsICRzdXN5KVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfb3B0aW9uczogJGxheW91dCAkc3VzeSAkc3VzeS1kZWZhdWx0cztcbiAgJF9icmVhazogZmFsc2U7XG4gICRfcmV0dXJuOiBudWxsO1xuXG4gIEBlYWNoICRvcHQgaW4gJF9vcHRpb25zIHtcbiAgICBAaWYgdHlwZS1vZigkb3B0KSA9PSBtYXAgYW5kIG5vdCgkX2JyZWFrKSB7XG4gICAgICAkX2tleXNldDogX3N1c3ktZGVlcC1oYXMta2V5KCRvcHQsICRrZXkuLi4pO1xuICAgICAgQGlmICRfa2V5c2V0IHtcbiAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtZ2V0KCRvcHQsICRrZXkuLi4pO1xuICAgICAgICAkX2JyZWFrOiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBNYXRoIFZhbGlkYXRpb25cbi8vID09PT09PT09PT09PT09PVxuXG5cbi8vIFZhbGlkIENvbHVtbnNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIHRoYXQgYSBjb2x1bW4gc2V0dGluZyBpcyB2YWxpZC5cbkBmdW5jdGlvbiB2YWxpZC1jb2x1bW5zKFxuICAkY29sdW1ucyxcbiAgJHNpbGVudDogZmFsc2Vcbikge1xuICAkdHlwZTogdHlwZS1vZigkY29sdW1ucyk7XG4gICRyZXR1cm46IG51bGw7XG5cbiAgQGlmICR0eXBlID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGNvbHVtbnMpIHtcbiAgICAkcmV0dXJuOiAkY29sdW1ucztcbiAgfSBAZWxzZSBpZiAkdHlwZSA9PSBsaXN0IHtcbiAgICAkZmFpbDogbnVsbDtcbiAgICBAZWFjaCAkY29sIGluICRjb2x1bW5zIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRjb2wpID09IG51bWJlciB7XG4gICAgICAgICRmYWlsOiAkZmFpbCBvciBpZih1bml0bGVzcygkY29sKSwgbnVsbCwgdHJ1ZSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJGZhaWw6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgICRyZXR1cm46IGlmKCRmYWlsLCAkcmV0dXJuLCAkY29sdW1ucyk7XG4gIH1cblxuICBAaWYgJHJldHVybiAhPSAkY29sdW1ucyBhbmQgbm90KCRzaWxlbnQpIHtcbiAgICAkcmV0dXJuOiBudWxsO1xuICAgICR3YXJuOiAnJGNvbHVtbnMgbXVzdCBiZSBhIHVuaXRsZXNzIG51bWJlciBvciBsaXN0IG9mIHVuaXRsZXNzIG51bWJlcnMuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRjb2x1bW5zfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG5cblxuLy8gVmFsaWQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGd1dHRlciBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWd1dHRlcnMoXG4gICRndXR0ZXJzLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRndXR0ZXJzKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkZ3V0dGVycykge1xuICAgICRyZXR1cm46ICRndXR0ZXJzO1xuICB9IEBlbHNlIGlmIG5vdCgkc2lsZW50KSB7XG4gICAgJHdhcm46ICckZ3V0dGVycyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyLic7XG4gICAgQHdhcm4gJHdhcm4gKyAnIEN1cnJlbnQgdmFsdWUgWyN7JHR5cGV9XTogI3skZ3V0dGVyc30nO1xuICB9XG5cbiAgQHJldHVybiAkcmV0dXJuO1xufVxuIiwiLy8gQ29sdW1uIG1hdGhcbi8vID09PT09PT09PT09XG5cblxuLy8gSXMgU3ltbWV0cmljYWxcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgYSBncmlkIGlzIHN5bW1ldHJpY2FsLlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIGlzLXN5bW1ldHJpY2FsKFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaWYodHlwZS1vZigkY29sdW1ucykgPT0gbnVtYmVyLCAkY29sdW1ucywgbnVsbCk7XG59XG5cblxuLy8gU3VzeSBDb3VudFxuLy8gLS0tLS0tLS0tLVxuLy8gRmluZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gYSBnaXZlbiBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbkBmdW5jdGlvbiBzdXN5LWNvdW50KFxuICAkY29sdW1uczogc3VzeS1nZXQoY29sdW1ucylcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gIEByZXR1cm4gaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpIG9yIGxlbmd0aCgkY29sdW1ucyk7XG59XG5cblxuLy8gU3VzeSBTdW1cbi8vIC0tLS0tLS0tXG4vLyBGaW5kIHRoZSB0b3RhbCBzdW0gb2YgY29sdW1uLXVuaXRzIGluIGEgbGF5b3V0XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeS1zdW0oXG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgIDogZmFsc2Vcbikge1xuICAkY29sdW1uczogdmFsaWQtY29sdW1ucygkY29sdW1ucyk7XG4gICRndXR0ZXJzOiB2YWxpZC1ndXR0ZXJzKCRndXR0ZXJzKTtcblxuICAkc3ByZWFkOiBpZigkc3ByZWFkID09IHdpZGUsIDAsIGlmKCRzcHJlYWQgPT0gd2lkZXIsIDEsIC0xKSk7XG4gICRndXR0ZXItc3VtOiAoc3VzeS1jb3VudCgkY29sdW1ucykgKyAkc3ByZWFkKSAqICRndXR0ZXJzO1xuICAkY29sdW1uLXN1bTogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gIEBpZiBub3QoJGNvbHVtbi1zdW0pIHtcbiAgICBAZWFjaCAkY29sdW1uIGluICRjb2x1bW5zIHtcbiAgICAgICRjb2x1bW4tc3VtOiAoJGNvbHVtbi1zdW0gb3IgMCkgKyAkY29sdW1uO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi1zdW0gKyAkZ3V0dGVyLXN1bTtcbn1cblxuXG4vLyBTdXN5IFNsaWNlXG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgb2YgY29sdW1ucyBhdCBhIGdpdmVuIGxvY2F0aW9uLlxuLy8gLSAkc3BhbiAgICAgICAgOiA8bnVtYmVyPlxuLy8gLSAkbG9jYXRpb24gICAgOiA8bnVtYmVyPlxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktc2xpY2UoXG4gICRzcGFuLFxuICAkbG9jYXRpb24sXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJHN1Yi1jb2x1bW5zOiAkc3BhbjtcblxuICBAaWYgbm90KGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKSkge1xuICAgICRsb2NhdGlvbjogJGxvY2F0aW9uIG9yIDE7XG4gICAgJHN1Yi1jb2x1bW5zOiAoKTtcbiAgICBAZm9yICRpIGZyb20gJGxvY2F0aW9uIHRvICgkbG9jYXRpb24gKyAkc3Bhbikge1xuICAgICAgJHN1Yi1jb2x1bW5zOiBhcHBlbmQoJHN1Yi1jb2x1bW5zLCBudGgoJGNvbHVtbnMsICRpKSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3ViLWNvbHVtbnM7XG59XG5cblxuLy8gU3VzeVxuLy8gLS0tLVxuLy8gRmluZCB0aGUgc3VtIG9mIGEgY29sdW1uLXNwYW4uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG4vLyAtIFskZ3V0dGVyc10gICA6IDxyYXRpbz5cbi8vIC0gWyRzcHJlYWRdICAgIDogZmFsc2UvbmFycm93IHwgd2lkZSB8IHdpZGVyXG5AZnVuY3Rpb24gc3VzeShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbiAgICAgOiBmYWxzZSxcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpLFxuICAkZ3V0dGVycyAgICAgIDogc3VzeS1nZXQoZ3V0dGVycyksXG4gICRzcHJlYWQgICAgICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuICAkc3Bhbjogc3VzeS1zbGljZSgkc3BhbiwgJGxvY2F0aW9uLCAkY29sdW1ucyk7XG5cbiAgQHJldHVybiBzdXN5LXN1bSgkc3BhbiwgJGd1dHRlcnMsICRzcHJlYWQpO1xufVxuIiwiLy8gRmxvYXQgQVBJXG4vLyA9PT09PT09PT1cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5AaW1wb3J0IFwiZmxvYXQvY29udGFpbmVyXCI7XG5AaW1wb3J0IFwiZmxvYXQvc3BhblwiO1xuQGltcG9ydCBcImZsb2F0L2VuZFwiO1xuQGltcG9ydCBcImZsb2F0L2lzb2xhdGVcIjtcbiIsIi8vIFNoYXJlZCBBUElcbi8vID09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnRcIjtcblxuQGltcG9ydCBcInNoYXJlZC9pbnNwZWN0XCI7XG5AaW1wb3J0IFwic2hhcmVkL291dHB1dFwiO1xuQGltcG9ydCBcInNoYXJlZC9kaXJlY3Rpb25cIjtcbkBpbXBvcnQgXCJzaGFyZWQvYmFja2dyb3VuZFwiO1xuQGltcG9ydCBcInNoYXJlZC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJzaGFyZWQvbWFyZ2luc1wiO1xuQGltcG9ydCBcInNoYXJlZC9wYWRkaW5nXCI7XG5cblxuXG4iLCIvLyBTdXN5IEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09PT09PT1cblxuQGltcG9ydCBcInN1cHBvcnQvc3VwcG9ydFwiO1xuQGltcG9ydCBcInN1cHBvcnQvcHJlZml4XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwic3VwcG9ydC9yZW1cIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2NsZWFyZml4XCI7XG4iLCIvLyBCcm93c2VyIFN1cHBvcnRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IFN1cHBvcnQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIHVzZS1jdXN0b206IChcbiAgICBjbGVhcmZpeDogZmFsc2UsXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kLW9wdGlvbnM6IGZhbHNlLFxuICAgIGJyZWFrcG9pbnQ6IHRydWUsXG4gICAgYm94LXNpemluZzogdHJ1ZSxcbiAgICByZW06IHRydWUsXG4gICksXG4pKTtcblxuXG4vLyBTdXN5IFN1cHBvcnQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlbmQgcHJvcGVydHktdmFsdWUgcGFpcnMgdG8gdGhlIHByb3BlciBzdXBwb3J0IG1vZHVsZXMuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1zdXBwb3J0KFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gIC8vIEJhY2tncm91bmQgU3VwcG9ydFxuICBAaWYgJHByb3AgPT0gYmFja2dyb3VuZC1pbWFnZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLWltYWdlKCR2YWwpO1xuICB9IEBlbHNlIGlmICRwcm9wID09IGJhY2tncm91bmQtc2l6ZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLXNpemUoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1vcmlnaW4ge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1jbGlwIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtY2xpcCgkdmFsKTtcbiAgfVxuXG4gIC8vIEJveC1TaXppbmcgU3VwcG9ydFxuICBAZWxzZSBpZiAkcHJvcCA9PSBib3gtc2l6aW5nIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJveC1zaXppbmcoJHZhbCk7XG4gIH1cblxuICAvLyBSZW0gU3VwcG9ydFxuICBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1yZW0oJHByb3AsICR2YWwpO1xuICB9XG59XG5cblxuLy8gU3VzeSBTdXBwb3J0IFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3Igc3VwcG9ydCBvZiBhIGZlYXR1cmUuXG4vLyAtICRmZWF0dXJlICAgICAgIDogPHN0cmluZz5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyBcInJlbVwiIG9yIFwiYm94LXNpemluZ1wiXG4vLyAtICRyZXF1aXJlbWVudHMgIDogPG1hcD5cbi8vICAgICAgICAgICAgICAgICAgICAtIGUuZyAodmFyaWFibGU6IHJlbS13aXRoLXB4LWZhbGxiYWNrLCBtaXhpbjogcmVtKVxuLy8gLSAkd2FybiAgICAgICAgICA6IDxib29sPlxuQGZ1bmN0aW9uIHN1c3ktc3VwcG9ydChcbiAgJGZlYXR1cmUsXG4gICRyZXF1aXJlbWVudHM6ICgpLFxuICAkd2FybjogdHJ1ZVxuKSB7XG4gICRfc3VwcG9ydDogc3VzeS1nZXQodXNlLWN1c3RvbSAkZmVhdHVyZSk7XG5cbiAgQGlmICRfc3VwcG9ydCB7XG4gICAgJF9mYWlsOiBmYWxzZTtcblxuICAgIEBlYWNoICRfdHlwZSwgJF9yZXEgaW4gJHJlcXVpcmVtZW50cyB7XG4gICAgICBAZWFjaCAkX2kgaW4gJF9yZXEge1xuICAgICAgICAkX3Bhc3M6IGNhbGwodW5xdW90ZShcIiN7JF90eXBlfS1leGlzdHNcIiksICRfaSk7XG5cbiAgICAgICAgQGlmIG5vdCgkX3Bhc3MpIHtcbiAgICAgICAgICAkX2ZhaWw6IHRydWU7XG4gICAgICAgICAgQGlmICR3YXJuIHtcbiAgICAgICAgICAgIEB3YXJuIFwiWW91IHJlcXVlc3RlZCBjdXN0b20gc3VwcG9ydCBvZiAjeyRmZWF0dXJlfSwgYnV0IHRoZSAjeyRfaX0gI3skX3R5cGV9IGlzIG5vdCBhdmFpbGFibGUuXCI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9zdXBwb3J0OiBpZigkX2ZhaWwsIGZhbHNlLCAkX3N1cHBvcnQpO1xuICB9XG5cbiAgQHJldHVybiAkX3N1cHBvcnQ7XG59XG4iLCIvLyBTdXN5IFByZWZpeFxuLy8gPT09PT09PT09PT1cblxuLy8gUHJlZml4XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBzaW1wbGUgcHJlZml4ZWQgcHJvcGVydGllcy5cbi8vIC0gJHByb3AgICAgICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICAgICAgOiA8Y3NzIHZhbHVlPlxuLy8gLSBbJHByZWZpeF0gIDogPGJyb3dzZXIgcHJlZml4IGxpc3Q+XG5AbWl4aW4gc3VzeS1wcmVmaXgoXG4gICRwcm9wLFxuICAkdmFsLFxuICAkcHJlZml4OiBvZmZpY2lhbFxuKSB7XG4gIEBlYWNoICRmaXggaW4gJHByZWZpeCB7XG4gICAgJGZpeDogaWYoJGZpeCA9PSBvZmZpY2lhbCBvciBub3QoJGZpeCksICRwcm9wLCAnLSN7JGZpeH0tI3skcHJvcH0nKTtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkZml4LCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gQmFja2dyb3VuZCBQcm9wZXJ0aWVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIEltYWdlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLWltYWdlPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1pbWFnZShcbiAgJGltYWdlXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLWltYWdlLCAobWl4aW46IGJhY2tncm91bmQtaW1hZ2UpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKCRpbWFnZS4uLik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICRpbWFnZTtcbiAgfVxufVxuXG4vLyBTdXN5IEJhY2tncm91bmQgU2l6ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1zaXplPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1zaXplKFxuICAkc2l6ZVxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtc2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoJHNpemUpO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLXNpemU6ICRzaXplO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBPcmlnaW5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLW9yaWdpbj5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtb3JpZ2luKFxuICAkb3JpZ2luXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1vcmlnaW4pKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1vcmlnaW4oJG9yaWdpbik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtb3JpZ2luOiAkb3JpZ2luO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBDbGlwXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtY2xpcD5cbkBtaXhpbiBzdXN5LWJhY2tncm91bmQtY2xpcChcbiAgJGNsaXBcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLWNsaXApKSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1jbGlwKCRjbGlwKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcDtcbiAgfVxufVxuIiwiLy8gQm94IFNpemluZ1xuLy8gPT09PT09PT09PVxuXG4vLyBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJG1vZGVsOiA8Ym94LXNpemluZz5cbkBtaXhpbiBzdXN5LWJveC1zaXppbmcoXG4gICRtb2RlbDogY29udGVudC1ib3hcbikge1xuICBAaWYgJG1vZGVsIHtcbiAgICBAaWYgc3VzeS1zdXBwb3J0KGJveC1zaXppbmcsIChtaXhpbjogYm94LXNpemluZyksICR3YXJuOiBmYWxzZSkge1xuICAgICAgQGluY2x1ZGUgYm94LXNpemluZygkbW9kZWwpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByZWZpeDogKG1veiwgd2Via2l0LCBvZmZpY2lhbCk7XG4gICAgICBAaW5jbHVkZSBzdXN5LXByZWZpeChib3gtc2l6aW5nLCAkbW9kZWwsICRwcmVmaXgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gU3VzeSBGYWxsYmFjayBDbGVhcmZpeFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG5cbi8vIENsZWFyZml4XG4vLyAtLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG5AbWl4aW4gc3VzeS1jbGVhcmZpeCB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoY2xlYXJmaXgsIChtaXhpbjogY2xlYXJmaXgpKSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gIH0gQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gRGVidWdnaW5nXG4vLyA9PT09PT09PT1cblxuLy8gU3VzeSBJbnNwZWN0XG4vLyAtLS0tLS0tLS0tLS1cbi8vIE91dHB1dCBhcmd1bWVudHMgcGFzc2VkIHRvIGEgaW5zcGVjdC5cbi8vIC0gJG1peGluICA6IDxzdXN5IG1peGluPlxuLy8gLSAkaW5zcGVjICAgOiA8bWl4aW4gYXJndW1lbnRzPlxuXG5AbWl4aW4gc3VzeS1pbnNwZWN0KFxuICAkbWl4aW4sXG4gICRpbnNwZWN0XG4pIHtcbiAgJHNob3c6IGZhbHNlO1xuXG4gIEBlYWNoICRpdGVtIGluICRpbnNwZWN0IHtcbiAgICBAaWYgaW5kZXgoJGl0ZW0sIGluc3BlY3QpIHtcbiAgICAgICRzaG93OiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2hvdyBvciBzdXN5LWdldChkZWJ1ZyBpbnNwZWN0KSB7XG4gICAgLXN1c3ktI3skbWl4aW59OiBpbnNwZWN0KCRpbnNwZWN0KTtcbiAgfVxufVxuIiwiLy8gT3V0cHV0XG4vLyA9PT09PT1cblxuLy8gT3V0cHV0XG4vLyAtLS0tLS1cbi8vIE91dHB1dCBDU1Mgd2l0aCBwcm9wZXIgYnJvd3NlciBzdXBwb3J0LlxuLy8gLSAkc3R5bGVzICA6IDxtYXAgb2YgY3NzIHByb3BlcnR5LXZhbHVlIHBhaXJzPlxuQG1peGluIG91dHB1dChcbiAgJHN0eWxlc1xuKSB7XG4gIEBlYWNoICRwcm9wLCAkdmFsIGluICRzdHlsZXMge1xuICAgIEBpbmNsdWRlIHN1c3ktc3VwcG9ydCgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cbiIsIi8vIERpcmVjdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEZsb3cgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgZmxvdzogbHRyLFxuKSk7XG5cbi8vIEdldCBEaXJlY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIG9yICd0bycgZGlyZWN0aW9uIG9mIGEgbHRyIG9yIHJ0bCBmbG93LlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuLy8gLSBbJGtleV0gICA6IGZyb20gfCB0b1xuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGtleTogZnJvbVxuKSB7XG4gICRyZXR1cm46IGlmKCRmbG93ID09IHJ0bCwgKGZyb206IHJpZ2h0LCB0bzogbGVmdCksIChmcm9tOiBsZWZ0LCB0bzogcmlnaHQpKTtcbiAgQHJldHVybiBtYXAtZ2V0KCRyZXR1cm4sICRrZXkpO1xufVxuXG4vLyBUb1xuLy8gLS1cbi8vIFJldHVybiB0aGUgJ3RvJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gdG8oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgdG8pO1xufVxuXG4vLyBGcm9tXG4vLyAtLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gZnJvbShcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCBmcm9tKTtcbn1cbiIsIi8vIEdyaWQgQmFja2dyb3VuZCBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cbi8vIC0gU3ViLXBpeGVsIHJvdW5kaW5nIGNhbiBsZWFkIHRvIHNldmVyYWwgcGl4ZWxzIHZhcmlhdGlvbiBiZXR3ZWVuIGJyb3dzZXJzLlxuXG4vLyBHcmlkIEJhY2tncm91bmQgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRpbWFnZTogYmFja2dyb3VuZC1pbWFnZVxuLy8gLSAkc2l6ZTogYmFja2dyb3VuZC1zaXplXG4vLyAtICRjbGlwOiBiYWNrZ3JvdW5kLWNsaXBcbi8vIC0gWyRmbG93XTogbHRyIHwgcnRsXG5AbWl4aW4gYmFja2dyb3VuZC1ncmlkLW91dHB1dCAoXG4gICRpbWFnZSxcbiAgJHNpemU6IG51bGwsXG4gICRjbGlwOiBudWxsLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlLFxuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemUsXG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRjbGlwLFxuICAgIGJhY2tncm91bmQtY2xpcDogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogZnJvbSgkZmxvdykgdG9wLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFNoYXJlZCBDb250YWluZXIgQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFskd2lkdGhdICAgICAgICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGp1c3RpZnldICAgICAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0XG4vLyAtIFskbWF0aF0gICAgICAgICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGNvbnRhaW5lci1vdXRwdXQoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICAkb3V0cHV0OiAoXG4gICAgI3skcHJvcGVydHl9OiAkd2lkdGggb3IgMTAwJSxcbiAgICBtYXJnaW4tbGVmdDogbnRoKCRqdXN0aWZ5LCAxKSxcbiAgICBtYXJnaW4tcmlnaHQ6IG50aCgkanVzdGlmeSwgMiksXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gTWFyZ2lucyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIE1hcmdpbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gbWFyZ2luLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBtYXJnaW4tI3skZnJvbX06ICRiZWZvcmUsXG4gICAgbWFyZ2luLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFBhZGRpbmcgQVBJXG4vLyA9PT09PT09PT09PVxuXG4vLyBQYWRkaW5nIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGJlZm9yZSAgOiA8bGVuZ3RoPlxuLy8gLSAkYWZ0ZXIgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gcGFkZGluZy1vdXRwdXQoXG4gICRiZWZvcmUsXG4gICRhZnRlcixcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG4gICRmcm9tOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJGFmdGVyLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgQ29udGFpbmVyXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgIDogZmx1aWQgfCBzdGF0aWNcbkBtaXhpbiBmbG9hdC1jb250YWluZXIoXG4gICR3aWR0aCxcbiAgJGp1c3RpZnk6IGF1dG8gYXV0byxcbiAgJHByb3BlcnR5OiBtYXgtd2lkdGhcbikge1xuICBAaW5jbHVkZSBzdXN5LWNsZWFyZml4O1xuICBAaW5jbHVkZSBjb250YWluZXItb3V0cHV0KCR3aWR0aCwgJGp1c3RpZnksICRwcm9wZXJ0eSk7XG59XG4iLCIvLyBGbG9hdCBTcGFuIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gRmxvYXQgU3BhbiBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICR3aWR0aCAgICAgICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvYXRdICAgICAgICAgICA6IGZyb20gfCB0b1xuLy8gLSBbJG1hcmdpbi1iZWZvcmVdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJG1hcmdpbi1hZnRlcl0gICAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYmVmb3JlXSAgOiA8bGVuZ3RoPlxuLy8gLSBbJHBhZGRpbmctYWZ0ZXJdICAgOiA8bGVuZ3RoPlxuLy8gLSBbJGZsb3ddICAgICAgICAgICAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1zcGFuLW91dHB1dChcbiAgJHdpZHRoLFxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb20sXG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbCxcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsLFxuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGwsXG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbCxcbiAgJGZsb3cgICAgICAgICAgICAgOiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0byAgICAgOiB0bygkZmxvdyk7XG4gICRmcm9tICAgOiBmcm9tKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGg6ICR3aWR0aCxcbiAgICBmbG9hdDogaWYoJGZsb2F0ID09IHRvLCAkdG8sIG51bGwpIG9yIGlmKCRmbG9hdCA9PSBmcm9tLCAkZnJvbSwgbnVsbCksXG4gICAgbWFyZ2luLSN7JGZyb219OiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctI3skZnJvbX06ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLSN7JHRvfTogJHBhZGRpbmctYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgRW5kcyBBUElcbi8vID09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRW5kIERlZmF1bHRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgbGFzdC1mbG93OiB0byxcbikpO1xuXG4vLyBGbG9hdCBMYXN0XG4vLyAtLS0tLS0tLS0tXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gZmxvYXQtbGFzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAkbGFzdC1mbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBsYXN0LWZsb3cpLFxuICAkbWFyZ2luOiAwXG4pIHtcbiAgJHRvOiB0bygkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiBpZigkbGFzdC1mbG93ID09IHRvLCAkdG8sIG51bGwpLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4sXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuXG4vLyBGbG9hdCBGaXJzdFxuLy8gLS0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1maXJzdChcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0je2Zyb20oJGZsb3cpfTogMCxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBJc29sYXRpb24gQVBJXG4vLyA9PT09PT09PT09PT09PT09PT09XG5cbi8vIElzb2xhdGUgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkcHVzaCAgICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AbWl4aW4gaXNvbGF0ZS1vdXRwdXQoXG4gICRwdXNoLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG9hdDogJGZyb20sXG4gICAgbWFyZ2luLSN7JGZyb219OiAkcHVzaCxcbiAgICBtYXJnaW4tI3skdG99OiAtMTAwJSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBTdXN5IFNldHRpbmdzXG4vLyA9PT09PT09PT09PT09XG5cbi8vIFN1c3kgTGFuZ3VhZ2UgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURVxuQGluY2x1ZGUgc3VzeS1kZWZhdWx0cygoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogZmx1aWQsXG4gIG91dHB1dDogZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogY2VudGVyLFxuICBndXR0ZXItcG9zaXRpb246IGFmdGVyLFxuICBnbG9iYWwtYm94LXNpemluZzogY29udGVudC1ib3gsXG4gIGRlYnVnOiAoXG4gICAgaW1hZ2U6IGhpZGUsXG4gICAgY29sb3I6IHJnYmEoIzY2ZiwgLjI1KSxcbiAgICBvdXRwdXQ6IGJhY2tncm91bmQsXG4gICAgdG9nZ2xlOiB0b3AgcmlnaHQsXG4gICksXG4pKTtcblxuXG4vLyBWYWxpZCBLZXl3b3JkIFZhbHVlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gUFJJVkFURTogRE9OVCdUIFRPVUNIXG4kc3VzeS1rZXl3b3JkczogKFxuICBjb250YWluZXI6IGF1dG8sXG4gIG1hdGg6IHN0YXRpYyBmbHVpZCxcbiAgb3V0cHV0OiBpc29sYXRlIGZsb2F0LFxuICBjb250YWluZXItcG9zaXRpb246IGxlZnQgY2VudGVyIHJpZ2h0LFxuICBmbG93OiBsdHIgcnRsLFxuICBndXR0ZXItcG9zaXRpb246IGJlZm9yZSBhZnRlciBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYyxcbiAgYm94LXNpemluZzogYm9yZGVyLWJveCBjb250ZW50LWJveCxcbiAgc3BhbjogZnVsbCxcbiAgZWRnZTogZmlyc3QgYWxwaGEgbGFzdCBvbWVnYSBmdWxsLFxuICBzcHJlYWQ6IG5hcnJvdyB3aWRlIHdpZGVyLFxuICBndXR0ZXItb3ZlcnJpZGU6IG5vLWd1dHRlcnMgbm8tZ3V0dGVyLFxuICByb2xlOiBuZXN0LFxuICBjbGVhcjogYnJlYWsgbm9icmVhayxcbiAgZGVidWcgaW1hZ2U6IHNob3cgaGlkZSBzaG93LWNvbHVtbnMgc2hvdy1iYXNlbGluZSxcbiAgZGVidWcgb3V0cHV0OiBiYWNrZ3JvdW5kIG92ZXJsYXksXG4pO1xuXG5cbi8vIFBhcnNlIFN1c3kgS2V5d29yZHMgYW5kIE1hcHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zZXR0aW5ncyhcbiAgJHNob3J0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuOiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIHN0cmluZ3NcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBzdHJpbmcge1xuICAgICAgICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJHN1c3kta2V5d29yZHMge1xuICAgICAgICAgIEBpZiBpbmRleCgkdmFsdWUsICRpdGVtKSB7XG4gICAgICAgICAgICAkX2tleS12YWx1ZTogYXBwZW5kKCRrZXksICRpdGVtKTtcbiAgICAgICAgICAgICRfcmV0dXJuOiBfc3VzeS1kZWVwLXNldCgkX3JldHVybiwgJF9rZXktdmFsdWUuLi4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgLy8gbWFwc1xuICAgICAgfSBAZWxzZSBpZiB0eXBlLW9mKCRpdGVtKSA9PSBtYXAge1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkaXRlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBDb2x1bW5zICYgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1sYXlvdXQoXG4gICRzaG9ydFxuKSB7XG4gICRfcmV0dXJuOiAoKTtcbiAgJF9jb2x1bW5zOiAoKTtcbiAgJF9ndXR0ZXJzOiBudWxsO1xuXG4gIEBpZiBub3QodW5pdGxlc3MobnRoKG50aCgkc2hvcnQsIDEpLCAxKSkpIHtcbiAgICAkX2d1dHRlcnM6IG50aCgkc2hvcnQsIDEpO1xuICB9IEBlbHNlIHtcbiAgICAkX2NvbHVtbnM6IChjb2x1bW5zOiBudGgoJHNob3J0LCAxKSk7XG4gICAgJF9ndXR0ZXJzOiBpZihsZW5ndGgoJHNob3J0KSA+IDEsIG50aCgkc2hvcnQsIDIpLCAkX2d1dHRlcnMpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJF9ndXR0ZXJzKSA9PSBsaXN0IGFuZCBsZW5ndGgoJF9ndXR0ZXJzKSA+IDAge1xuICAgICRfZ3V0dGVyczogKFxuICAgICAgZ3V0dGVyczogbnRoKCRfZ3V0dGVycywgMikgLyBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICAgIGNvbHVtbi13aWR0aDogbnRoKCRfZ3V0dGVycywgMSksXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9ndXR0ZXJzOiBpZigkX2d1dHRlcnMsIChndXR0ZXJzOiAkX2d1dHRlcnMpLCAoKSk7XG4gIH1cblxuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2NvbHVtbnMpO1xuICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAkX2d1dHRlcnMpO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3JpZC9Db250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ncmlkKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46IHBhcnNlLXNldHRpbmdzKCRzaG9ydCk7XG4gICRfbGF5b3V0OiAoKTtcblxuICBAaWYgdHlwZS1vZigkc2hvcnQpID09IG1hcCB7XG4gICAgJF9yZXR1cm46ICRzaG9ydDtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGl0ZW0gaW4gJHNob3J0IHtcbiAgICAgIC8vIG51bWJlciBvciBsaXN0XG4gICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbnVtYmVyIG9yIHR5cGUtb2YoJGl0ZW0pID09IGxpc3Qge1xuICAgICAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCBvciB1bml0bGVzcygkaXRlbSkge1xuICAgICAgICAgICRfbGF5b3V0OiBhcHBlbmQoJF9sYXlvdXQsICRpdGVtKTtcbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNvbnRhaW5lcjogJGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgICRfbGF5b3V0OiBpZihsZW5ndGgoJF9sYXlvdXQpID4gMCwgcGFyc2UtbGF5b3V0KCRfbGF5b3V0KSwgJF9sYXlvdXQpO1xuICB9XG5cbiAgQHJldHVybiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfbGF5b3V0KTtcbn1cblxuXG4vLyBQYXJzZSBTcGFuXG4vLyAtLS0tLS0tLS0tXG5AZnVuY3Rpb24gcGFyc2Utc3BhbihcbiAgJHNob3J0LFxuICAka2V5OiBzcGFuXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICAkX2F0OiBpbmRleCgkc2hvcnQsIGF0KTtcblxuICAgIEBpZiAkX2F0IHtcbiAgICAgICRfbG9jaTogJF9hdCArIDE7XG4gICAgICAkX2xvY2F0aW9uOiBudGgoJHNob3J0LCAkX2xvY2kpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGxvY2F0aW9uOiAkX2xvY2F0aW9uKSk7XG4gICAgICAkc2hvcnQ6IHNldC1udGgoJHNob3J0LCAkX2F0LCBudWxsKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfbG9jaSwgbnVsbCk7XG4gICAgfVxuXG4gICAgJF9pOiAxO1xuICAgICRfc3BhbjogKCk7XG5cbiAgICBAd2hpbGUgJF9pIDw9IGxlbmd0aCgkc2hvcnQpIHtcbiAgICAgICRfdGhpczogbnRoKCRzaG9ydCwgJF9pKTtcblxuICAgICAgQGlmIHR5cGUtb2YoJF90aGlzKSA9PSBudW1iZXIge1xuICAgICAgICAkX3NwYW46IGFwcGVuZCgkX3NwYW4sICRfdGhpcyk7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICB9IEBlbHNlIGlmICRfdGhpcyA9PSBvZiB7XG4gICAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfaSwgbnVsbCk7XG4gICAgICAgICRfaTogbGVuZ3RoKCRzaG9ydCkgKyAxO1xuICAgICAgfVxuXG4gICAgICAkX2k6ICRfaSArIDE7XG4gICAgfVxuXG4gICAgQGlmIGxlbmd0aCgkX3NwYW4pID4gMCB7XG4gICAgICAkX3NwYW46IGlmKGxlbmd0aCgkX3NwYW4pID09IDEsIG50aCgkX3NwYW4sIDEpLCAkX3NwYW4pO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRrZXk6ICRfc3BhbikpO1xuICAgIH1cblxuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIHBhcnNlLWdyaWQoJHNob3J0KSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1ndXR0ZXJzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9ndXR0ZXJzOiBwYXJzZS1zcGFuKCRzaG9ydCwgZ3V0dGVyLW92ZXJyaWRlKTtcbiAgJF9zcGFuOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRfZ3V0dGVycyk7XG5cbiAgQGlmICRfc3BhbiBhbmQgbm90KG1hcC1nZXQoJF9ndXR0ZXJzLCBjb2x1bW5zKSkge1xuICAgICRfY29udGV4dDogKCk7XG4gICAgJF9uZXc6ICgpO1xuXG4gICAgQGVhY2ggJGl0ZW0gaW4gJF9zcGFuIHtcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICRfY29udGV4dDogYXBwZW5kKCRfY29udGV4dCwgJGl0ZW0pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRfbmV3OiBhcHBlbmQoJF9uZXcsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX2NvbnRleHQ6IHBhcnNlLWdyaWQoJF9jb250ZXh0KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAwLCBudWxsLCAkX25ldyk7XG4gICAgJF9uZXc6IGlmKGxlbmd0aCgkX25ldykgPT0gMSwgbnRoKCRfbmV3LCAxKSwgJF9uZXcpO1xuICAgICRfbmV3OiAoZ3V0dGVyLW92ZXJyaWRlOiBpZigkX25ldyAhPSAkX3NwYW4sICRfbmV3LCAkX3NwYW4pKTtcblxuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9uZXcpO1xuICAgICRfZ3V0dGVyczogbWFwLW1lcmdlKCRfZ3V0dGVycywgJF9jb250ZXh0KTtcbiAgfVxuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuIiwiLy8gVmFsaWRhdGlvblxuLy8gPT09PT09PT09PVxuXG5cbi8vIFZhbGlkYXRlIENvbHVtbiBNYXRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbi1tYXRoKFxuICAkbWF0aCxcbiAgJGNvbHVtbi13aWR0aFxuKSB7XG4gIEBpZiAkbWF0aCA9PSBzdGF0aWMgYW5kIG5vdCgkY29sdW1uLXdpZHRoKSB7XG4gICAgQGVycm9yICdTdGF0aWMgbWF0aCByZXF1aXJlcyBhIHZhbGlkIGNvbHVtbi13aWR0aCBzZXR0aW5nLic7XG4gIH1cblxuICBAcmV0dXJuICRjb2x1bW4td2lkdGg7XG59XG4iLCIvLyBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gU2V0IGEgbmV3IGxheW91dCB1c2luZyBhIHNob3J0aGFuZFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIGxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGF5b3V0LCAkaW5zcGVjdCk7XG59XG5cblxuLy8gVXNlIEdyaWRcbi8vIC0tLS0tLS0tXG4vLyBVc2UgYW4gYXJiaXRyYXJ5IGxheW91dCBmb3IgYSBzZWN0aW9uIG9mIGNvZGVcbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBtaXhpbiB3aXRoLWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICRsYXlvdXQ7XG4gICRvbGQgICAgICA6ICRzdXN5O1xuICAkc3VzeSAgICAgOiBfZ2V0LWxheW91dCgkbGF5b3V0LCAkY2xlYW4pICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHdpdGgtbGF5b3V0LCAkaW5zcGVjdCk7XG5cbiAgQGNvbnRlbnQ7XG5cbiAgJHN1c3k6ICRvbGQgIWdsb2JhbDtcbn1cblxuXG4vLyBMYXlvdXRcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIGEgcGFyc2VkIGxheW91dCBtYXAgYmFzZWQgb24gc2hvcnRoYW5kIHN5bnRheFxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gbGF5b3V0KFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbn1cblxuXG4vLyBHZXQgTGF5b3V0XG4vLyAtLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBuZXcgbGF5b3V0IGJhc2VkIG9uIGN1cnJlbnQgYW5kIGdpdmVuIHNldHRpbmdzXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AZnVuY3Rpb24gX2dldC1sYXlvdXQoXG4gICRsYXlvdXQsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkbGF5b3V0OiBsYXlvdXQoJGxheW91dCk7XG4gIEByZXR1cm4gaWYoJGNsZWFuLCAkbGF5b3V0LCBfc3VzeS1kZWVwLW1lcmdlKCRzdXN5LCAkbGF5b3V0KSk7XG59XG4iLCIvLyBTdXN5IEJveCBTaXppbmdcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIEdsb2JhbCBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgYm94IG1vZGVsIGdsb2JhbGx5IG9uIGFsbCBlbGVtZW50cy5cbi8vIC0gWyRib3hdOiBib3JkZXItYm94IHwgY29udGVudC1ib3hcbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gZ2xvYmFsLWJveC1zaXppbmcoXG4gICRib3g6IHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSxcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3Q6ICRib3g7XG5cbiAgQGlmICRpbmhlcml0IHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICAgaHRtbCB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gICAgICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG4gICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIgeyBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTsgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdsb2JhbC1ib3gtc2l6aW5nLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHVwZGF0ZS1ib3gtbW9kZWwoJGJveCk7XG59XG5cbi8vIEJvcmRlciBCb3ggU2l6aW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gQSBsZWdhY3kgc2hvcnRjdXQuLi5cbi8vIC0gWyRpbmhlcml0XTogdHJ1ZSB8IGZhbHNlXG5AbWl4aW4gYm9yZGVyLWJveC1zaXppbmcoXG4gICRpbmhlcml0OiBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIGdsb2JhbC1ib3gtc2l6aW5nKGJvcmRlci1ib3gsICRpbmhlcml0KTtcbn1cblxuLy8gVXBkYXRlIEJveCBNb2RlbFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUFJJVkFURTogVXBkYXRlcyBnbG9iYWwgYm94IG1vZGVsIHNldHRpbmdcbkBtaXhpbiB1cGRhdGUtYm94LW1vZGVsKFxuICAkYm94XG4pIHtcbiAgQGlmICRib3ggIT0gc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpIHtcbiAgQGluY2x1ZGUgc3VzeS1zZXQoZ2xvYmFsLWJveC1zaXppbmcsICRib3gpO1xuICB9XG59XG4iLCIvLyBDb250ZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT1cblxuLy8gTmVzdGVkIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYSBzdWJzZXQgZ3JpZCBmb3IgbmVzdGVkIGNvbnRleHQuXG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGNvbnRleHQgICAgOiBwYXJzZS1zcGFuKCRjb250ZXh0KTtcbiAgJHNwYW4gICAgICAgOiBzdXN5LWdldChzcGFuLCAkY29udGV4dCk7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRjb250ZXh0KTtcbiAgJGNvbHVtbnMgICAgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcbn1cblxuLy8gTmVzdGVkIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBVc2UgYSBzdWJzZXQgZ3JpZCBmb3IgYSBuZXN0ZWQgY29udGV4dFxuLy8gLSAkY29udGV4dCAgIDogPHNwYW4+XG4vLyAtIEBjb250ZW50ICAgOiA8Y29udGVudD5cbkBtaXhpbiBuZXN0ZWQoXG4gICRjb250ZXh0XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkb2xkICAgICAgOiBzdXN5LWdldChjb2x1bW5zKTtcbiAgJHN1c3kgICAgIDogbWFwLW1lcmdlKCRzdXN5LCAoY29sdW1uczogbmVzdGVkKCRjb250ZXh0KSkpICFnbG9iYWw7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KG5lc3RlZCwgJGluc3BlY3QpO1xuICBAY29udGVudDtcblxuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiAkb2xkKSkgIWdsb2JhbDtcbn1cbiIsIi8vIEJhY2tncm91bmQgR3JpZCBTeW50YXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzOiBmYWxzZTtcblxuXG4vLyBTaG93IEdyaWQvc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFNob3cgZ3JpZCBvbiBhbnkgZWxlbWVudCB1c2luZyBlaXRoZXIgYmFja2dyb3VuZCBvciBvdmVybGF5LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBzaG93LWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0OiAkZ3JpZDtcbiAgJF9vdXRwdXQ6IGRlYnVnLWdldChvdXRwdXQsICRncmlkKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc2hvdy1ncmlkLCAkaW5zcGVjdCk7XG4gIEBpZiAkX291dHB1dCA9PSBvdmVybGF5IGFuZCBzdXN5LWdldChkZWJ1ZyBpbWFnZSwgJGdyaWQpICE9IGhpZGUge1xuICAgIEBpbmNsdWRlIG92ZXJsYXktZ3JpZCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gIH1cbn1cblxuQG1peGluIHNob3ctZ3JpZHMoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkZ3JpZCk7XG59XG5cbi8vIEJhY2tncm91bmQgR3JpZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBTaG93IGEgZ3JpZCBiYWNrZ3JvdW5kIG9uIGFueSBlbGVtZW50LlxuLy8gLSBbJGdyaWRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRncmlkO1xuICAkX291dHB1dCAgOiBnZXQtYmFja2dyb3VuZCgkZ3JpZCk7XG5cbiAgQGlmIGxlbmd0aCgkX291dHB1dCkgPiAwIHtcbiAgICAkX2Zsb3c6IHN1c3ktZ2V0KGZsb3csICRncmlkKTtcblxuICAgICRfaW1hZ2U6ICgpO1xuICAgIEBlYWNoICRuYW1lLCAkbGF5ZXIgaW4gbWFwLWdldCgkX291dHB1dCwgaW1hZ2UpIHtcbiAgICAgICRfZGlyZWN0aW9uOiBpZigkbmFtZSA9PSBiYXNlbGluZSwgdG8gYm90dG9tLCB0byB0bygkX2Zsb3cpKTtcbiAgICAgICRfaW1hZ2U6IGFwcGVuZCgkX2ltYWdlLCBsaW5lYXItZ3JhZGllbnQoJF9kaXJlY3Rpb24sICRsYXllciksIGNvbW1hKTtcbiAgICB9XG4gICAgJF9vdXRwdXQ6IG1hcC1tZXJnZSgkX291dHB1dCwgKGltYWdlOiAkX2ltYWdlKSk7XG5cbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoYmFja2dyb3VuZC1ncmlkLCAkaW5zcGVjdCk7XG4gIH1cbn1cblxuXG4vLyBPdmVybGF5IEdyaWRcbi8vIC0tLS0tLS0tLS0tLVxuLy8gR2VuZXJhdGUgYW4gaWNvbiB0byB0cmlnZ2VyIGdyaWQtb3ZlcmxheXMgb24gYW55IGdpdmVuIGVsZW1lbnRzLlxuLy8gJGdyaWRzLi4uICA6IDxzZWxlY3Rvcj4gWzxzZXR0aW5ncz5dIFssIDxzZWxlY3Rvcj5dKlxuQG1peGluIG92ZXJsYXktZ3JpZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gIEBpZiBub3QoJHN1c3ktb3ZlcmxheS1ncmlkLWhlYWQtZXhpc3RzKSB7XG4gICAgQGF0LXJvb3QgaGVhZCB7IEBpbmNsdWRlIG92ZXJsYXktaGVhZCgkZ3JpZCk7IH1cbiAgICBAYXQtcm9vdCBoZWFkOmJlZm9yZSB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlcjsgfVxuICAgIEBhdC1yb290IGhlYWQ6aG92ZXIgeyBAaW5jbHVkZSBvdmVybGF5LXRyaWdnZXItaG92ZXI7IH1cbiAgICAkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IHRydWUgIWdsb2JhbDtcbiAgfVxuXG4gIGhlYWQ6aG92ZXIgfiAmLFxuICBoZWFkOmhvdmVyIH4gYm9keSAmIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgJjpiZWZvcmUge1xuICAgICAgQGluY2x1ZGUgZ3JpZC1vdmVybGF5LWJhc2U7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWdyaWQoJGdyaWQpO1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXIge1xuICBjb250ZW50OiBcInx8fFwiO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogNXB4IDEwcHg7XG4gIGZvbnQ6IHtcbiAgICBmYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgc2l6ZTogMTZweDtcbiAgICB3ZWlnaHQ6IGJvbGQ7XG4gIH1cbn1cblxuXG4vLyBbUHJpdmF0ZV0gT3ZlcmxheSBUcmlnZ2VyIEhvdmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AbWl4aW4gb3ZlcmxheS10cmlnZ2VyLWhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjUpO1xuICBjb2xvcjogcmVkO1xufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IEhlYWRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDxoZWFkPiBzdHlsZXMgdG8gY3JlYXRlIGdyaWQgb3ZlcmxheSB0b2dnbGVcbkBtaXhpbiBvdmVybGF5LWhlYWQgKFxuICAkZ3JpZDogJHN1c3lcbikge1xuICAkX3RvZ2dsZTogZGVidWctZ2V0KHRvZ2dsZSwgJGdyaWQpO1xuICAkX2hvcno6IG51bGw7XG4gICRfdmVydDogbnVsbDtcblxuICBAZWFjaCAkc2lkZSBpbiAkX3RvZ2dsZSB7XG4gICAgJF9ob3J6OiBpZigkc2lkZSA9PSBsZWZ0IG9yICRzaWRlID09IHJpZ2h0LCAkc2lkZSwgJF9ob3J6KTtcbiAgICAkX3ZlcnQ6IGlmKCRzaWRlID09IHRvcCBvciAkc2lkZSA9PSBib3R0b20sICRzaWRlLCAkX3ZlcnQpO1xuICB9XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgI3skX2hvcnp9OiAxMHB4O1xuICAjeyRfdmVydH06IDEwcHg7XG4gIHotaW5kZXg6IDk5OTtcbiAgY29sb3I6ICMzMzM7XG4gIGJhY2tncm91bmQ6IHJnYmEod2hpdGUsIC4yNSk7XG59XG5cblxuLy8gW1ByaXZhdGVdIEdyaWQgT3ZlcmxheSBCYXNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEJhc2Ugc3R5bGVzIGZvciBnZW5lcmF0aW5nIGEgZ3JpZCBvdmVybGF5XG5AbWl4aW4gZ3JpZC1vdmVybGF5LWJhc2UoKSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICBjb250ZW50OiBcIiBcIjtcbiAgei1pbmRleDogOTk4O1xufVxuXG5cbi8vIEdldCBTeW1tZXRyaWNhbCBCYWNrZ3JvdW5kXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZC1zeW0oXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgICAgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfZ3V0dGVycyAgICAgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRncmlkKTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkZ3JpZCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRncmlkKTtcblxuICAkX2NvbG9yICAgICAgICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX3RyYW5zICAgICAgICAgOiB0cmFuc3BhcmVudDtcbiAgJF9saWdodCAgICAgICAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuXG4gICRfZW5kICAgICAgICAgICA6IDEgKyAkX2d1dHRlcnM7XG4gICRfYWZ0ZXIgICAgICAgICA6IHBlcmNlbnRhZ2UoMS8kX2VuZCk7XG4gICRfc3RvcHMgICAgICAgICA6ICgpO1xuICAkX3NpemUgICAgICAgICAgOiBzcGFuKDEgJGdyaWQgd2lkZSk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQ7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3NwbGl0OiAkX2d1dHRlcnMvMjtcbiAgICAkX2JlZm9yZTogcGVyY2VudGFnZSgkX3NwbGl0LyRfZW5kKTtcbiAgICAkX2FmdGVyOiBwZXJjZW50YWdlKCgxICsgJF9zcGxpdCkvJF9lbmQpO1xuICAgICRfc3RvcHM6ICRfdHJhbnMgJF9iZWZvcmUsICRfY29sb3IgJF9iZWZvcmUsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9IEBlbHNlIHtcbiAgICAkX3N0b3BzOiAkX2NvbG9yLCAkX2xpZ2h0ICRfYWZ0ZXIsICRfdHJhbnMgJF9hZnRlcjtcbiAgfVxuXG4gIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAkX3NpemU6IHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpICogJF9lbmQ7XG4gIH1cblxuICAkX291dHB1dDogKFxuICAgIGltYWdlOiAoY29sdW1uczogJF9zdG9wcyksXG4gICAgc2l6ZTogJF9zaXplLFxuICApO1xuXG4gIEByZXR1cm4gJF9vdXRwdXQ7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBJbnNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0taW5zaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQgJF9lbmQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIFNwbGl0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWFzeW0tc3BsaXQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkc3RhcnQsIGNvbW1hKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcblxuICAgICRfZW5kOiAkc3RhcnQgKyBzcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCB0cmFuc3BhcmVudCAkX2VuZCwgY29tbWEpO1xuXG4gICAgJF9zdG9wczogam9pbigkX3N0b3BzLCAkdGhpcy1zdG9wLCBjb21tYSk7XG4gIH1cblxuICBAcmV0dXJuICRfc3RvcHM7XG59XG5cblxuLy8gR2V0IEFzeW1tZXRyaWNhbCBPdXRzaWRlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1vdXRzaWRlKFxuICAkZ3JpZFxuKSB7XG4gICRncmlkICAgICA6IHBhcnNlLWdyaWQoJGdyaWQpO1xuICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgJF9jb2xvciAgIDogZGVidWctZ2V0KGNvbG9yKTtcbiAgJF9saWdodCAgIDogbGlnaHRlbigkX2NvbG9yLCAxNSUpO1xuICAkX3RyYW5zICAgOiB0cmFuc3BhcmVudDtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHN0YXJ0OiBwYXJzZS1zcGFuKDEgYXQgJGxvY2F0aW9uICRncmlkKTtcbiAgICAgICRzdGFydDogZ2V0LWlzb2xhdGlvbigkc3RhcnQpO1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IgJHN0YXJ0LCBjb21tYSk7XG4gICAgfVxuXG4gICAgQGlmICRsb2NhdGlvbiA9PSBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfbGlnaHQsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRndXR0ZXI6IGdldC1zcGFuLXdpZHRoKGZpcnN0ICRsb2NhdGlvbiAkZ3JpZCk7XG5cbiAgICAgICRfZW5kOiBwYXJzZS1zcGFuKDEgYXQgKCRsb2NhdGlvbiArIDEpICRncmlkKTtcbiAgICAgICRfZW5kOiBnZXQtaXNvbGF0aW9uKCRfZW5kKTtcblxuICAgICAgJGd1dHRlcjogJF9saWdodCAkZ3V0dGVyLCAkX3RyYW5zICRndXR0ZXIsICRfdHJhbnMgJF9lbmQ7XG4gICAgICAkdGhpcy1zdG9wOiBqb2luKCR0aGlzLXN0b3AsICRndXR0ZXIsIGNvbW1hKTtcbiAgICB9XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLWFzeW0oXG4gICRncmlkXG4pIHtcbiAgJF9zdG9wczogKCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLWluc2lkZSgkZ3JpZCk7XG4gIH0gQGVsc2UgaWYgaXMtc3BsaXQoJGdyaWQpIHtcbiAgICAkX3N0b3BzOiBnZXQtYXN5bS1zcGxpdCgkZ3JpZCk7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLW91dHNpZGUoJGdyaWQpO1xuICB9XG5cbiAgQHJldHVybiAoaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSk7XG59XG5cblxuLy8gR2V0IEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfc2hvdyAgICA6IHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCk7XG4gICRfcmV0dXJuICA6ICgpO1xuXG4gIEBpZiAkX3Nob3cgYW5kICRfc2hvdyAhPSAnaGlkZScge1xuICAgICRfY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgJF9zeW06IGlzLXN5bW1ldHJpY2FsKCRfY29sdW1ucyk7XG4gICAgICAkX3JldHVybjogaWYoJF9zeW0sIGdldC1iYWNrZ3JvdW5kLXN5bSgkZ3JpZCksIGdldC1iYWNrZ3JvdW5kLWFzeW0oJGdyaWQpKTtcbiAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChjbGlwOiBjb250ZW50LWJveCkpO1xuICAgIH1cblxuICAgIEBpZiAkX3Nob3cgIT0gJ3Nob3ctY29sdW1ucydcbiAgICAgIGFuZCBnbG9iYWwtdmFyaWFibGUtZXhpc3RzKGJhc2UtbGluZS1oZWlnaHQpXG4gICAgICBhbmQgdHlwZS1vZigkYmFzZS1saW5lLWhlaWdodCkgPT0gJ251bWJlcidcbiAgICAgIGFuZCBub3QgdW5pdGxlc3MoJGJhc2UtbGluZS1oZWlnaHQpIHtcbiAgICAgICRfY29sb3I6IHZhcmlhYmxlLWV4aXN0cygnZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yJyk7XG4gICAgICAkX2NvbG9yOiBpZigkX2NvbG9yLCAkZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yLCAjMDAwKTtcblxuICAgICAgJF9pbWFnZTogbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpO1xuICAgICAgJF9zaXplOiBtYXAtZ2V0KCRfcmV0dXJuLCBzaXplKTtcbiAgICAgICRfYmFzZWxpbmU6IChiYXNlbGluZTogKCRfY29sb3IgMXB4LCB0cmFuc3BhcmVudCAxcHgpKTtcbiAgICAgICRfYmFzZWxpbmUtc2l6ZTogMTAwJSAkYmFzZS1saW5lLWhlaWdodDtcblxuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKFxuICAgICAgICBpbWFnZTogaWYoJF9pbWFnZSwgbWFwLW1lcmdlKCRfaW1hZ2UsICRfYmFzZWxpbmUpLCAkX2Jhc2VsaW5lKSxcbiAgICAgICAgc2l6ZTogaWYoJF9zaXplLCAoJF9zaXplLCAkX2Jhc2VsaW5lLXNpemUpLCAkX2Jhc2VsaW5lLXNpemUpLFxuICAgICAgKSk7XG5cbiAgICAgIEBpZiAkX3Nob3cgPT0gJ3Nob3cnIHtcbiAgICAgICAgJF9jbGlwOiBtYXAtZ2V0KCRfcmV0dXJuLCBjbGlwKTtcbiAgICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGpvaW4oJF9jbGlwLCBib3JkZXItYm94LCBjb21tYSkpKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRfc2hvdyA9PSAnc2hvdy1iYXNlbGluZScge1xuICAgICAgQHdhcm4gJ1BsZWFzZSBwcm92aWRlIGEgJGJhc2UtbGluZS1oZWlnaHQgd2l0aCB0aGUgZGVzaXJlZCBoZWlnaHQgYW5kIHVuaXRzJztcbiAgICB9XG4gIH1cblxuICBAaWYgbWFwLWdldCgkX3JldHVybiwgaW1hZ2UpIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIEdldCBEZWJ1Z1xuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgZGVidWcgc2V0dGluZ1xuLy8gLSAka2V5OiA8c2V0dGluZz5cbkBmdW5jdGlvbiBkZWJ1Zy1nZXQoXG4gICRrZXksXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRrZXk6IGpvaW4oZGVidWcsICRrZXksIHNwYWNlKTtcbiAgQHJldHVybiBzdXN5LWdldCgka2V5LCAkZ3JpZCk7XG59XG4iLCIvLyBDb250YWluZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgY29udGFpbmVyIGVsZW1lbnRcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgICAgOiAkbGF5b3V0O1xuICAkbGF5b3V0ICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG5cbiAgJF93aWR0aCAgICAgOiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xuICAkX2p1c3RpZnkgICA6IHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihzdXN5LWdldChjb250YWluZXItcG9zaXRpb24sICRsYXlvdXQpKTtcbiAgJF9wcm9wZXJ0eSAgOiBpZihzdXN5LWdldChtYXRoLCAkbGF5b3V0KSA9PSBzdGF0aWMsIHdpZHRoLCBtYXgtd2lkdGgpO1xuXG4gICRfYm94ICAgICAgIDogc3VzeS1nZXQoYm94LXNpemluZywgJGxheW91dCk7XG5cbiAgQGlmICRfYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRfYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoY29udGFpbmVyLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGZsb2F0LWNvbnRhaW5lcigkX3dpZHRoLCAkX2p1c3RpZnksICRfcHJvcGVydHkpO1xuICBAaW5jbHVkZSBzaG93LWdyaWQoJGxheW91dCk7XG59XG5cbi8vIENvbnRhaW5lciBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0OiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICBAcmV0dXJuIGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG59XG5cbi8vIEdldCBDb250YWluZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSB0aGUgY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XTogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1jb250YWluZXItd2lkdGgoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dCAgICAgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF93aWR0aCAgICAgICAgIDogc3VzeS1nZXQoY29udGFpbmVyLCAkbGF5b3V0KTtcbiAgJF9jb2x1bW4td2lkdGggIDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkbGF5b3V0KTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGxheW91dCk7XG5cbiAgQGlmIG5vdCgkX3dpZHRoKSBvciAkX3dpZHRoID09IGF1dG8ge1xuICAgIEBpZiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKSB7XG4gICAgICAkX2NvbHVtbnMgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRsYXlvdXQpO1xuICAgICAgJF9ndXR0ZXJzICAgOiBzdXN5LWdldChndXR0ZXJzLCAkbGF5b3V0KTtcbiAgICAgICRfc3ByZWFkICAgIDogaWYoaXMtc3BsaXQoJGxheW91dCksIHdpZGUsIG5hcnJvdyk7XG4gICAgICAkX3dpZHRoICAgICA6IHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkgKiAkX2NvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfd2lkdGg6IDEwMCU7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3dpZHRoO1xufVxuXG4vLyBQYXJzZSBDb250YWluZXIgUG9zaXRpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyc2UgdGhlICRjb250YWluZXItcG9zaXRpb24gaW50byBtYXJnaW4gdmFsdWVzLlxuLy8gLSBbJGp1c3RpZnldICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgfCA8bGVuZ3RoPiBbPGxlbmd0aD5dXG5AZnVuY3Rpb24gcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKFxuICAkanVzdGlmeTogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgY29udGFpbmVyLXBvc2l0aW9uKVxuKSB7XG4gICRfcmV0dXJuOiBpZigkanVzdGlmeSA9PSBsZWZ0LCAwLCBhdXRvKSBpZigkanVzdGlmeSA9PSByaWdodCwgMCwgYXV0byk7XG5cbiAgQGlmIG5vdChpbmRleChsZWZ0IHJpZ2h0IGNlbnRlciwgJGp1c3RpZnkpKSB7XG4gICAgJF9yZXR1cm46IG50aCgkanVzdGlmeSwgMSk7XG4gICAgJF9yZXR1cm46ICRfcmV0dXJuIGlmKGxlbmd0aCgkanVzdGlmeSkgPiAxLCBudGgoJGp1c3RpZnksIDIpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLy8gU3BhbiBTeW50YXhcbi8vID09PT09PT09PT09XG5cbi8vIFNwYW4gW21peGluXVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBzcGFubmluZyBlbGVtZW50IHVzaW5nIHNob3J0aGFuZCBzeW50YXguXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbjogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRvdXRwdXQ6IHNwYW4tbWF0aCgkc3Bhbik7XG4gICRuZXN0aW5nOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRjbGVhcjogc3VzeS1nZXQoY2xlYXIsICRzcGFuKTtcblxuICAkYm94OiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRjb250ZW50LWJveDogaWYoc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpICE9ICdib3JkZXItYm94JywgdHJ1ZSwgZmFsc2UpO1xuICAkYm94OiAkYm94IG9yIGlmKGlzLWluc2lkZSgkc3BhbikgYW5kICRjb250ZW50LWJveCwgYm9yZGVyLWJveCwgbnVsbCk7XG5cbiAgQGlmICRjbGVhciA9PSBicmVhayB7XG4gICAgQGluY2x1ZGUgYnJlYWs7XG4gIH0gQGVsc2UgaWYgJGNsZWFyID09IG5vYnJlYWsge1xuICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qoc3BhbiwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6ICRib3gpKTtcbiAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgQGlmIHZhbGlkLWNvbHVtbnMoJG5lc3RpbmcsIHNpbGVudCkge1xuICAgIEBpbmNsdWRlIG5lc3RlZCgkc3BhbikgeyBAY29udGVudDsgfVxuICB9IEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBTcGFuIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIHNwYW4uXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQGZ1bmN0aW9uIHNwYW4oXG4gICRzcGFuXG4pIHtcbiAgQHJldHVybiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG59XG5cbi8vIFNwYW4gTWF0aFxuLy8gLS0tLS0tLS0tXG4vLyBHZXQgYWxsIHRoZSBzcGFuIHJlc3VsdHMuXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIHNwYW4tbWF0aChcbiAgJHNwYW5cbikge1xuICAkbmVzdCAgICAgICAgICAgICA6IGlmKHN1c3ktZ2V0KHJvbGUsICRzcGFuKSA9PSBuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRzcGxpdC1uZXN0ICAgICAgIDogaWYoaXMtc3BsaXQoJHNwYW4pIGFuZCAkbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZWRnZSAgICAgICAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgICAgICAgOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbTtcbiAgJHBhZGRpbmctYmVmb3JlICAgOiBudWxsO1xuICAkcGFkZGluZy1hZnRlciAgICA6IG51bGw7XG4gICRtYXJnaW4tYmVmb3JlICAgIDogbnVsbDtcbiAgJG1hcmdpbi1hZnRlciAgICAgOiBudWxsO1xuXG4gIC8vIGNhbGN1bGF0ZSB3aWR0aHNcbiAgJHNwcmVhZDogaW5kZXgobWFwLXZhbHVlcygkc3BhbiksIHNwcmVhZCk7XG4gICRzcGFuOiBpZigkc3BsaXQtbmVzdCBhbmQgbm90KCRzcHJlYWQpLCBtYXAtbWVyZ2UoJHNwYW4sIChzcHJlYWQ6IHdpZGUpKSwgJHNwYW4pO1xuICAkd2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbiAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAvLyBhcHBseSBndXR0ZXJzXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaWYgbm90KHN1c3ktZ2V0KHJvbGUsICRzcGFuKSkge1xuICAgICAgJHBhZGRpbmctYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiBub3QoJHNwbGl0LW5lc3QpIHtcbiAgICAgICRtYXJnaW4tYmVmb3JlOiBtYXAtZ2V0KCRndXR0ZXJzLCBiZWZvcmUpO1xuICAgICAgJG1hcmdpbi1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHNwZWNpYWwgbWFyZ2luIGhhbmRsaW5nXG4gIEBpZiBzdXN5LWdldChvdXRwdXQsICRzcGFuKSA9PSBpc29sYXRlIGFuZCAkbG9jYXRpb24ge1xuICAgICRtYXJnaW4tYmVmb3JlOiBnZXQtaXNvbGF0aW9uKCRzcGFuKTtcbiAgICAkbWFyZ2luLWFmdGVyOiAtMTAwJTtcbiAgfSBAZWxzZSBpZiAkZWRnZSB7XG4gICAgJGlzLXNwbGl0OiBpcy1zcGxpdCgkc3Bhbik7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG5cbiAgICBAaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkZmxvYXQ6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJHNwYW4pO1xuICAgIH1cblxuICAgIEBpZiBub3QoJGlzLXNwbGl0KSB7XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gZmlyc3QgYW5kICRwb3MgPT0gYmVmb3JlKSB7XG4gICAgICAgICRtYXJnaW4tYmVmb3JlOiAwO1xuICAgICAgfVxuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGxhc3QgYW5kICRwb3MgPT0gYWZ0ZXIpIHtcbiAgICAgICAgJG1hcmdpbi1hZnRlcjogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgfVxuXG4gIEByZXR1cm4gKFxuICAgIHdpZHRoICAgICAgICAgICA6ICR3aWR0aCxcbiAgICBmbG9hdCAgICAgICAgICAgOiAkZmxvYXQsXG4gICAgbWFyZ2luLWJlZm9yZSAgIDogJG1hcmdpbi1iZWZvcmUsXG4gICAgbWFyZ2luLWFmdGVyICAgIDogJG1hcmdpbi1hZnRlcixcbiAgICBwYWRkaW5nLWJlZm9yZSAgOiAkcGFkZGluZy1iZWZvcmUsXG4gICAgcGFkZGluZy1hZnRlciAgIDogJHBhZGRpbmctYWZ0ZXIsXG4gICAgZmxvdyAgICAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xufVxuXG4vLyBHZXQgU3BhbiBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBzcGFuIHdpZHRoLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBnZXQtc3Bhbi13aWR0aChcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcblxuICAkbiAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG4gICRsb2NhdGlvbiA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG4gICRjb2x1bW5zICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGd1dHRlcnMgIDogc3VzeS1nZXQoZ3V0dGVycywgJHNwYW4pO1xuICAkc3ByZWFkICAgOiBzdXN5LWdldChzcHJlYWQsICRzcGFuKTtcblxuICAkY29udGV4dCAgOiBudWxsO1xuICAkc3Bhbi1zdW0gOiBudWxsO1xuICAkd2lkdGggICAgOiBudWxsO1xuXG4gIEBpZiAkbiA9PSAnZnVsbCcge1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuICAgICRyb2xlOiBzdXN5LWdldChyb2xlLCAkc3Bhbik7XG4gICAgJG46IGlmKCRwb3MgPT0gc3BsaXQgYW5kICRyb2xlICE9IG5lc3QsIHN1c3ktY291bnQoJGNvbHVtbnMpLCAxMDAlKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRuKSAhPSBudW1iZXIge1xuICAgIEB3YXJuIFwiKCN7dHlwZS1vZigkbil9KSAjeyRufSBpcyBub3QgYSB2YWxpZCBzcGFuLlwiO1xuICB9IEBlbHNlIGlmIHVuaXRsZXNzKCRuKSB7XG4gICAgJGNvbnRleHQ6IHN1c3ktc3VtKCRjb2x1bW5zLCAkZ3V0dGVycywgaWYoaXMtc3BsaXQoJHNwYW4pLCB3aWRlLCBuYXJyb3cpKTtcbiAgICAkc3ByZWFkOiBpZihpcy1pbnNpZGUoJHNwYW4pLCAkc3ByZWFkIG9yIHdpZGUsICRzcHJlYWQpO1xuICAgICRzcGFuLXN1bTogc3VzeSgkbiwgJGxvY2F0aW9uLCAkY29sdW1ucywgJGd1dHRlcnMsICRzcHJlYWQpO1xuXG4gICAgJF9tYXRoOiBzdXN5LWdldChtYXRoLCAkc3Bhbik7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJHNwYW4pO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICR3aWR0aDogJHNwYW4tc3VtICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2lkdGg6IHBlcmNlbnRhZ2UoJHNwYW4tc3VtIC8gJGNvbnRleHQpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJHdpZHRoOiAkbjtcbiAgfVxuXG4gIEByZXR1cm4gJHdpZHRoO1xufVxuIiwiLy8gR3V0dGVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PVxuXG5cbi8vIEd1dHRlcnNcbi8vIC0tLS0tLS1cbi8vIFNldCBndXR0ZXJzIG9uIGFuIGVsZW1lbnQuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBtaXhpbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVycyA6IGdldC1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX291dHB1dDogKFxuICAgIGJlZm9yZTogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSksXG4gICAgYWZ0ZXI6IG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlciksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJHNwYW4pLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChndXR0ZXJzLCAkaW5zcGVjdCk7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH1cbn1cblxuQG1peGluIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZ3V0dGVycygkc3Bhbik7XG59XG5cblxuLy8gR3V0dGVyXG4vLyAtLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBndXR0ZXIuXG4vLyAtIFskc3Bhbl0gICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRzcGFuOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcblxuICAkX2d1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSBvciBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXJzO1xufVxuXG5AZnVuY3Rpb24gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgQHJldHVybiBndXR0ZXIoJHNwYW4pO1xufVxuXG5cbi8vIEdldCBHdXR0ZXIgV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBndXR0ZXIgd2lkdGguXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXItd2lkdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVycyA6IHN1c3ktZ2V0KGd1dHRlcnMsICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgIDogc3VzeS1nZXQoZ3V0dGVyLW92ZXJyaWRlLCAkY29udGV4dCk7XG5cbiAgQGlmICRfZ3V0dGVycyBhbmQgKCRfZ3V0dGVycyA+IDApIGFuZCBub3QoJF9ndXR0ZXIpIHtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkY29udGV4dCk7XG4gICAgJF9tYXRoOiBndXR0ZXItbWF0aCgkY29udGV4dCk7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJF9ndXR0ZXI6ICRfZ3V0dGVycyAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGNvbnRleHQpO1xuICAgICAgJF9zcHJlYWQgIDogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCB3aWRlLCBzdXN5LWdldChzcHJlYWQsICRjb250ZXh0KSk7XG4gICAgICAkX2d1dHRlciAgOiBwZXJjZW50YWdlKCRfZ3V0dGVycyAvIHN1c3ktc3VtKCRfY29sdW1ucywgJF9ndXR0ZXJzLCAkX3NwcmVhZCkpO1xuICAgIH1cbiAgfVxuXG4gICRfZ3V0dGVyOiBpZigkX2d1dHRlciA9PSAnbm8tZ3V0dGVycycgb3IgJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcicsIG51bGwsICRfZ3V0dGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVyO1xufVxuXG5cbi8vIEdldCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGJlZm9yZSBhbmQgYWZ0ZXIgZ3V0dGVyIHZhbHVlcy5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlcnMoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRjb250ZXh0ICAgICAgICAgICAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlci1wb3NpdGlvbiAgIDogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICAgICAgICAgICAgOiBnZXQtZ3V0dGVyLXdpZHRoKCRjb250ZXh0KTtcblxuICAkX3JldHVybiAgICAgICAgICAgIDogKGJlZm9yZTogbnVsbCwgYWZ0ZXI6IG51bGwpO1xuXG4gIEBpZiBpcy1zcGxpdCgkY29udGV4dCkgYW5kICRfZ3V0dGVyIHtcbiAgICAkX2d1dHRlcjogJF9ndXR0ZXIgLyAyO1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChiZWZvcmU6ICRfZ3V0dGVyLCBhZnRlcjogJF9ndXR0ZXIpKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKCRfZ3V0dGVyLXBvc2l0aW9uOiAkX2d1dHRlcikpO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBJcyBJbnNpZGVcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIGluc2lkZS5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1pbnNpZGUoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9pbnNpZGU6IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX2luc2lkZSwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gSXMgU3BsaXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgc3BsaXQuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtc3BsaXQoXG4gICRjb250ZXh0XG4pIHtcbiAgJF9zcGxpdDogc3BsaXQgaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfc3BsaXQsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIEd1dHRlciBNYXRoXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBtYXRoIHRvIHVzZSBmb3IgZ3V0dGVyIGNhbGN1bGF0aW9uc1xuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGd1dHRlci1tYXRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkX3JldHVybiAgOiBzdXN5LWdldChtYXRoLCAkY29udGV4dCk7XG4gICRfcmV0dXJuICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpID09IGluc2lkZS1zdGF0aWMsIHN0YXRpYywgJF9yZXR1cm4pO1xuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBJc29sYXRpb24gU3ludGF4XG4vLyA9PT09PT09PT09PT09PT09XG5cblxuLy8gSXNvbGF0ZSBbTWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBpc29sYXRpb24gYXMgYW4gb3ZlcnJpZGUuXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AbWl4aW4gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaW5zcGVjdDogJGlzb2xhdGU7XG5cbiAgJG91dHB1dDogKFxuICAgIHB1c2g6IGlzb2xhdGUoJGlzb2xhdGUpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRpc29sYXRlKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoaXNvbGF0ZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBpc29sYXRlLW91dHB1dCgkb3V0cHV0Li4uKTtcbn1cblxuXG4vLyBJc29sYXRlIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGFuIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGguXG4vLyAtICRsb2NhdGlvbjogPHNwYW4+XG5AZnVuY3Rpb24gaXNvbGF0ZShcbiAgJGlzb2xhdGU6IDFcbikge1xuICAkaXNvbGF0ZTogcGFyc2Utc3BhbigkaXNvbGF0ZSk7XG4gICRpc29sYXRpb246IHN1c3ktZ2V0KHNwYW4sICRpc29sYXRlKTtcblxuICBAaWYgJGlzb2xhdGlvbiBhbmQgbm90KGdldC1sb2NhdGlvbigkaXNvbGF0ZSkpIHtcbiAgICAkbmV3OiAoXG4gICAgICBzcGFuOiBudWxsLFxuICAgICAgbG9jYXRpb246ICRpc29sYXRpb24sXG4gICAgKTtcbiAgICAkaXNvbGF0ZTogbWFwLW1lcmdlKCRpc29sYXRlLCAkbmV3KTtcbiAgfVxuXG4gIEByZXR1cm4gZ2V0LWlzb2xhdGlvbigkaXNvbGF0ZSk7XG59XG5cblxuLy8gR2V0IElzb2xhdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBpc29sYXRpb24gb2Zmc2V0IHdpZHRoXG4vLyAtICRpbnB1dDogPG1hcD5cbkBmdW5jdGlvbiBnZXQtaXNvbGF0aW9uKFxuICAkaW5wdXRcbikge1xuICAkbG9jYXRpb24gICA6IGdldC1sb2NhdGlvbigkaW5wdXQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRpbnB1dCk7XG4gICR3aWR0aCAgICAgIDogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciBhbmQgbm90KHVuaXRsZXNzKCRsb2NhdGlvbikpIHtcbiAgICAkd2lkdGg6ICRsb2NhdGlvbjtcbiAgfSBAZWxzZSBpZiAkbG9jYXRpb24ge1xuICAgICRwdXNoOiAkbG9jYXRpb24gLSAxO1xuICAgIEBpZiAkcHVzaCA+IDAge1xuICAgICAgJHB1c2g6IG1hcC1tZXJnZSgkaW5wdXQsIChcbiAgICAgICAgc3BhbjogJHB1c2gsXG4gICAgICAgIGxvY2F0aW9uOiAxLFxuICAgICAgICBzcHJlYWQ6IHdpZGUsXG4gICAgICApKTtcbiAgICAgICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHB1c2gpO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRpbnB1dCkgPT0gc3BsaXRcbiAgICAgIGFuZCBzdXN5LWdldChndXR0ZXJzLCAkaW5wdXQpID4gMCB7XG4gICAgJHdpZHRoOiBpZigkd2lkdGggPT0gbnVsbCwgZ3V0dGVycygkaW5wdXQpLCAkd2lkdGggKyBndXR0ZXJzKCRpbnB1dCkpO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGggb3IgMDtcbn1cbiIsIi8vIEdhbGxlcnkgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBHYWxsZXJ5XG4vLyAtLS0tLS0tXG4vLyBDcmVhdGUgYW4gaXNvbGF0ZWQgZ2FsbGVyeVxuLy8gLSAkc3BhbiAgICAgICAgOiA8c3Bhbj5cbi8vIC0gWyRzZWxlY3Rvcl0gIDogY2hpbGQgfCBvZi10eXBlXG5AbWl4aW4gZ2FsbGVyeShcbiAgJHNwYW4sXG4gICRzZWxlY3RvcjogY2hpbGRcbikge1xuICAkaW5zcGVjdCAgICA6ICRzcGFuO1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkc3BhbiAgICAgICA6IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAxKSk7XG5cbiAgJG4gICAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNvbHVtbnMgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKTtcbiAgJGNvbnRleHQgICAgICA6IHN1c3ktY291bnQoJGNvbHVtbnMpO1xuICAkZmxvdyAgICAgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuXG4gICRpbnNpZGUgICAgICAgOiBpcy1pbnNpZGUoJHNwYW4pO1xuICAkZnJvbSAgICAgICAgIDogZnJvbSgkZmxvdyk7XG4gICRsaW5lICAgICAgICAgOiBmbG9vcigkY29udGV4dCAvICRuKTtcbiAgJHN5bW1ldHJpY2FsICA6IGlzLXN5bW1ldHJpY2FsKCRjb2x1bW5zKTtcblxuICAkb3V0cHV0OiAoXG4gICAgd2lkdGggICAgICAgICAgICAgOiBudWxsLFxuICAgIGZsb2F0ICAgICAgICAgICAgIDogZnJvbSxcbiAgICBtYXJnaW4tYmVmb3JlICAgICA6IG51bGwsXG4gICAgbWFyZ2luLWFmdGVyICAgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgZmxvdyAgICAgICAgICAgICAgOiAkZmxvdyxcbiAgKTtcblxuICBAaWYgJGluc2lkZSB7XG4gICAgJGd1dHRlcnM6IGdldC1ndXR0ZXJzKCRzcGFuKTtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKFxuICAgICAgcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSksXG4gICAgICBwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlciksXG4gICAgKSk7XG4gIH1cblxuICBAaWYgJHN5bW1ldHJpY2FsIHtcbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgKHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3BhbikpKTtcbiAgfVxuXG4gICRib3ggICAgICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkc3Bhbik7XG4gICRnbG9iYWwtYm94ICAgOiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgPT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGdhbGxlcnksICRpbnNwZWN0KTtcblxuICAvLyBDb2xsZWN0aXZlIE91dHB1dFxuICBAaWYgJGJveCA9PSBib3JkZXItYm94IG9yICgkaW5zaWRlIGFuZCBub3QoJGJveCkgYW5kIG5vdCgkZ2xvYmFsLWJveCkpIHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGJvcmRlci1ib3gpKTtcbiAgfSBAZWxzZSBpZiAkYm94ID09IGNvbnRlbnQtYm94IHtcbiAgICBAaW5jbHVkZSBvdXRwdXQoKGJveC1zaXppbmc6IGNvbnRlbnQtYm94KSk7XG4gIH1cblxuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICAvLyBJbmRpdmlkdWFsIExvb3BcbiAgQGZvciAkaXRlbSBmcm9tIDEgdGhyb3VnaCAkbGluZSB7XG4gICAgJG50aDogJyN7JGxpbmV9biArICN7JGl0ZW19JztcbiAgICAmOm50aC0jeyRzZWxlY3Rvcn0oI3skbnRofSkge1xuICAgICAgLy8gSW5kaXZpZHVhbCBQcmVwXG4gICAgICAkb3V0cHV0OiAoXG4gICAgICAgIHdpZHRoICAgICAgICAgICAgIDogaWYoJHN5bW1ldHJpY2FsLCBudWxsLCBnZXQtc3Bhbi13aWR0aCgkc3BhbikpLFxuICAgICAgICBmbG9hdCAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgIG1hcmdpbi1iZWZvcmUgICAgIDogZ2V0LWlzb2xhdGlvbigkc3BhbiksXG4gICAgICAgIG1hcmdpbi1hZnRlciAgICAgIDogLTEwMCUsXG4gICAgICAgIHBhZGRpbmctYmVmb3JlICAgIDogbnVsbCxcbiAgICAgICAgcGFkZGluZy1hZnRlciAgICAgOiBudWxsLFxuICAgICAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICAgICAgKTtcblxuICAgICAgLy8gSW5kaXZpZHVhbCBPdXRwdXRcbiAgICAgIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gICAgICBAaWYgZ2V0LWVkZ2UoJHNwYW4pID09IGZpcnN0IHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWs7XG4gICAgICAgIEBpbmNsdWRlIGZpcnN0KCRzcGFuKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICBAaW5jbHVkZSBub2JyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBJbmRpdmlkdWFsIExvY2F0aW9uIEluY3JlbWVudFxuICAgICAgJGxvY2F0aW9uOiBnZXQtbG9jYXRpb24oJHNwYW4pICsgJG47XG4gICAgICAkbG9jYXRpb246IGlmKCRsb2NhdGlvbiA+ICRjb250ZXh0LCAxLCAkbG9jYXRpb24pO1xuICAgICAgJHNwYW46IG1hcC1tZXJnZSgkc3BhbiwgKGxvY2F0aW9uOiAkbG9jYXRpb24pKTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFJvdyBTdGFydCAmIEVuZFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIEJyZWFrXG4vLyAtLS0tLVxuLy8gQXBwbHkgdG8gYW55IGVsZW1lbnQgdGhhdCBzaG91bGQgZm9yY2UgYSBsaW5lIGJyZWFrLlxuQG1peGluIGJyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogYm90aCkpO1xufVxuXG5cbi8vIE5vQnJlYWtcbi8vIC0tLS0tLS1cbi8vIENhbmNlbCB0aGUgYnJlYWsoKSBlZmZlY3QsIGUuZy4gd2hlbiB1c2luZyBtZWRpYSBxdWVyaWVzLlxuQG1peGluIG5vYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBub25lKSk7XG59XG5cblxuLy8gRnVsbFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8bGF5b3V0IHNob3J0aGFuZD5cbkBtaXhpbiBmdWxsKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCA6ICRjb250ZXh0O1xuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZnVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBzcGFuKGZ1bGwgb2YgcGFyc2UtZ3JpZCgkY29udGV4dCkgYnJlYWspO1xufVxuXG5cbi8vIEZpcnN0XG4vLyAtLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gZmlyc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmaXJzdCwgJGluc3BlY3QpO1xuICBAaWYgbm90KGlzLXNwbGl0KCRjb250ZXh0KSkge1xuICAgIEBpbmNsdWRlIGZsb2F0LWZpcnN0KCRmbG93KTtcbiAgfVxufVxuXG5AbWl4aW4gYWxwaGEoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGZpcnN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBMYXN0XG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBsYXN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGxhc3QsICRpbnNwZWN0KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGNvbnRleHQpLFxuICAgIGxhc3QtZmxvdzogc3VzeS1nZXQobGFzdC1mbG93LCAkY29udGV4dCksXG4gICAgbWFyZ2luOiBpZihpcy1zcGxpdCgkY29udGV4dCksIG51bGwsIDApLFxuICApO1xuXG4gIEBpbmNsdWRlIGZsb2F0LWxhc3QoJG91dHB1dC4uLik7XG59XG5cbkBtaXhpbiBvbWVnYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgbGFzdCgkY29udGV4dCk7XG59XG5cblxuLy8gR2V0IEVkZ2Vcbi8vIC0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgZWRnZSB2YWx1ZSBiYXNlZCBvbiBsb2NhdGlvbiwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtZWRnZShcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IHN1c3ktZ2V0KGVkZ2UsICRzcGFuKTtcblxuICBAaWYgbm90KCRlZGdlKSB7XG4gICAgJGNvdW50OiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSk7XG4gICAgJGxvY2F0aW9uOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAgICRuOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgICAkbnVtYmVyOiBpZih0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyLCB0cnVlLCBmYWxzZSk7XG4gICAgJGluZGV4OiBpZigkbnVtYmVyIGFuZCB1bml0bGVzcygkbG9jYXRpb24pLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJG4gPT0gJGNvdW50IHtcbiAgICAgICRlZGdlOiBmdWxsO1xuICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uIGFuZCAkbiBhbmQgJGluZGV4IHtcbiAgICAgIEBpZiAkbG9jYXRpb24gPT0gMSB7XG4gICAgICAgICRlZGdlOiBpZigkbiA9PSAkY291bnQsIGZ1bGwsIGZpcnN0KTtcbiAgICAgIH0gQGVsc2UgaWYgJGxvY2F0aW9uICsgJG4gLSAxID09ICRjb3VudCB7XG4gICAgICAgICRlZGdlOiBsYXN0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkZWRnZSA9PSBhbHBoYSBvciAkZWRnZSA9PSBvbWVnYSB7XG4gICAgJGVkZ2U6IGlmKCRlZGdlID09IGFscGhhLCBmaXJzdCwgbGFzdCk7XG4gIH1cblxuICBAcmV0dXJuICRlZGdlO1xufVxuXG5cbi8vIEdldCBMb2NhdGlvblxuLy8gLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgbG9jYXRpb24gdmFsdWUgYmFzZWQgb24gZWRnZSwgaWYgcG9zc2libGVcbkBmdW5jdGlvbiBnZXQtbG9jYXRpb24oXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGxvY2F0aW9uICAgOiBzdXN5LWdldChsb2NhdGlvbiwgJHNwYW4pO1xuICAkZWRnZSAgICAgICA6IGdldC1lZGdlKCRzcGFuKTtcbiAgJG4gICAgICAgICAgOiBzdXN5LWdldChzcGFuLCAkc3Bhbik7XG5cbiAgQGlmICRlZGdlIGFuZCBub3QoJGxvY2F0aW9uKSBhbmQgdHlwZS1vZigkbikgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkbikge1xuICAgIEBpZiAkZWRnZSA9PSBmaXJzdCB7XG4gICAgICAkbG9jYXRpb246IDE7XG4gICAgfSBAZWxzZSBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRsb2NhdGlvbjogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpIC0gJG4gKyAxO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxvY2F0aW9uXG59XG4iLCIvLyBNYXJnaW4gU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cbi8vIFByZVxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW4gICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3BhbikgPT0gc3BsaXQsIHRydWUsIGZhbHNlKTtcbiAgJGd1dHRlciA6IGd1dHRlcigkc3Bhbik7XG4gICRzcGFuICAgOiBzcGFuKCRzcGFuKTtcbiAgJHdpZHRoICA6IGlmKCRzcGxpdCBhbmQgJGd1dHRlciwgJHNwYW4gKyAkZ3V0dGVyLCAkc3Bhbik7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHByZSwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBQb3N0XG4vLyAtLS0tXG4vLyBBZGQgc3Bhbm5pbmctbWFyZ2lucyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwb3N0KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgc3Bhbigkc3BhbikpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwb3N0LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFB1c2hcbi8vIC0tLS1cbi8vIFNpbXBsZSBzeW5vbnltbiBmb3IgcHJlLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdXNoKFxuICAkc3BhblxuKSB7XG4gIEBpbmNsdWRlIHByZSgkc3Bhbik7XG59XG5cbi8vIFB1bGxcbi8vIC0tLS1cbi8vIEFkZCBuZWdhdGl2ZSBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwdWxsKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkc3BsaXQgICAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkd2lkdGggICAgOiBpZigkc3BsaXQsIDAgLSBzcGFuKCRzcGFuKSArIGd1dHRlcigkc3BhbiksIDAgLSBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHB1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dCgkd2lkdGgsIG51bGwsICRmbG93KTtcbn1cblxuLy8gU3F1aXNoXG4vLyAtLS0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBzcXVpc2goXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICAgICAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwcmUpKTtcblxuICBAaWYgJHBvc3Qge1xuICAgICRwb3N0OiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHBvc3QpKTtcbiAgfSBAZWxzZSB7XG4gICAgJHNwYW46IHN1c3ktZ2V0KHNwYW4sICRwcmUpO1xuICAgIEBpZiBsZW5ndGgoJHNwYW4pID4gMSB7XG4gICAgICAkcHJlOiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMSkpKTtcbiAgICAgICRwb3N0OiBtYXAtbWVyZ2UoJHByZSwgKHNwYW46IG50aCgkc3BhbiwgMikpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRwb3N0OiAkcHJlO1xuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcXVpc2gsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcHJlKCRwcmUpO1xuICBAaW5jbHVkZSBwb3N0KCRwb3N0KTtcbn1cbiIsIi8vIFBhZGRpbmcgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHByZWZpeChcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdCAgOiAkc3BhbjtcbiAgJHNwYW4gICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKTtcbiAgJHdpZHRoICAgIDogc3Bhbigkc3Bhbik7XG5cbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgICRndXR0ZXI6IGd1dHRlcigkc3Bhbik7XG4gICAgJHdpZHRoOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCR3aWR0aCwgJGd1dHRlciksICR3aWR0aCArICRndXR0ZXIsICR3aWR0aCk7XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlZml4LCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHBhZGRpbmctb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTdWZmaXhcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLXBhZGRpbmcgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3VmZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzdWZmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQobnVsbCwgJHdpZHRoLCAkZmxvdyk7XG59XG5cbi8vIFBhZFxuLy8gLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW5kIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRwcmUgICAgIDogPHNwYW4+XG4vLyAtIFskcG9zdF0gIDogPHNwYW4+XG5AbWl4aW4gcGFkKFxuICAkcHJlLFxuICAkcG9zdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdCAgOiAoJHByZSwgJHBvc3QpO1xuICAkcHJlICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBhZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmVmaXgoJHByZSk7XG4gIEBpbmNsdWRlIHN1ZmZpeCgkcG9zdCk7XG5cbn1cbiIsIi8vIEJsZWVkIFN5bnRheFxuLy8gPT09PT09PT09PT09XG5cbi8vIEJsZWVkXG4vLyAtLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIG1hcmdpbnMsIGFuZCBlcXVhbCBwb3NpdGl2ZSBwYWRkaW5nIHRvIGNyZWF0ZSBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkKFxuICAkYmxlZWQ6IDAgZ3V0dGVyKClcbikge1xuICAkaW5zcGVjdCAgOiAkYmxlZWQ7XG4gICRvdXRwdXQgICA6IGdldC1ibGVlZCgkYmxlZWQpO1xuXG4gIEBpZiBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gY29udGVudC1ib3gge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgoYm94LXNpemluZzogY29udGVudC1ib3gpLCAkb3V0cHV0KTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChibGVlZCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cblxuLy8gQmxlZWQteFxuLy8gLS0tLS0tLVxuLy8gU2hvcnRjdXQgZm9yIGhvcml6b250YWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC14KFxuICAkYmxlZWQ6IGd1dHRlcigpXG4pIHtcbiAgJGJsZWVkICA6IHBhcnNlLXNwYW4oJGJsZWVkKTtcbiAgJHRyYmwgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG5cbiAgQGlmIGxlbmd0aCgkdHJibCkgPT0gMSB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCR0cmJsKSA9PSAyIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMikgMCBudGgoJHRyYmwsIDEpKSk7XG4gIH0gQGVsc2Uge1xuICAgIEB3YXJuICdibGVlZC14IG9ubHkgdGFrZXMgMiBsZW5ndGhzLCBidXQgI3tsZW5ndGgoJHRyYmwpfSB3ZXJlIHBhc3NlZC4nO1xuICB9XG5cbiAgQGluY2x1ZGUgYmxlZWQoJGJsZWVkKTtcbn1cblxuXG4vLyBCbGVlZC15XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgdmVydGljYWwgYmxlZWQuXG4vLyAtICRibGVlZCAgOiA8c3Bhbj5cbkBtaXhpbiBibGVlZC15KFxuICAkYmxlZWQ6IGlmKGZ1bmN0aW9uLWV4aXN0cyhyaHl0aG0pLCByaHl0aG0oMSksIDFlbSlcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiBudGgoJHRyYmwsIDEpIDApKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCBudGgoJHRyYmwsIDIpIDApKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXkgb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEdldCBCbGVlZFxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmxlZWQgb3V0cHV0IHZhbHVlc1xuLy8gLSAkYmxlZWQ6IDxzcGFuPlxuQGZ1bmN0aW9uIGdldC1ibGVlZChcbiAgJGJsZWVkXG4pIHtcbiAgJGJsZWVkICAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRibGVlZCkpO1xuICAkdHJibCAgICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuICAkc2hvcnQgICAgOiBudWxsO1xuICAkb3V0cHV0ICAgOiAoKTtcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkdHJibCkge1xuICAgICR0aGlzOiBudGgoJHRyYmwsICRpKTtcbiAgICAkbmV3OiAoKTtcbiAgICAkbWFyZ2luOiBudWxsO1xuICAgICRwYWRkaW5nOiBudWxsO1xuICAgICRwYWRkaW5nLXg6IG51bGw7XG5cbiAgICBAaWYgJHRoaXMgPiAwIHtcbiAgICAgICR0aGlzOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogJHRoaXMpKTtcbiAgICAgICRtYXJnaW46IHNwYW4oJHRoaXMpO1xuICAgICAgJHBhZGRpbmc6ICRtYXJnaW47XG4gICAgICAkcGFkZGluZy14OiAkcGFkZGluZztcbiAgICB9XG5cbiAgICBAaWYgJG1hcmdpbiBhbmQgJG1hcmdpbiA+IDAge1xuICAgICAgJG1hcmdpbjogLSAkbWFyZ2luO1xuXG4gICAgICBAaWYgaXMtaW5zaWRlKCR0aGlzKSB7XG4gICAgICAgICRndXR0ZXI6IGd1dHRlcigkdGhpcyk7XG4gICAgICAgICRqb2luOiBpZigkZ3V0dGVyIGFuZCBjb21wYXJhYmxlKCRwYWRkaW5nLCAkZ3V0dGVyKSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAkcGFkZGluZy14OiBpZigkam9pbiBhbmQgJHBhZGRpbmcgPiAwLCAkcGFkZGluZyArICRndXR0ZXIsICRwYWRkaW5nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAaWYgJGkgPT0gMSB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gMiB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteCxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAzIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDQge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBtYXAtbWVyZ2UoJG91dHB1dCwgJG5ldyk7XG4gIH1cblxuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRvdXRwdXQge1xuICAgICRvdXRwdXQ6IGlmKCR2YWx1ZSA9PSAwLCBtYXAtbWVyZ2UoJG91dHB1dCwgKCRwcm9wOiBudWxsKSksICRvdXRwdXQpO1xuICB9XG5cbiAgQHJldHVybiBibGVlZC1zaG9ydGhhbmQoJG91dHB1dCk7XG59XG5cbi8vIEJsZWVkIFNob3J0aGFuZFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDb252ZXJ0IGJsZWVkIG91dHB1dCBpbnRvIHNob3J0aGFuZCB3aGVuIHBvc3NpYmxlLlxuLy8gLSAkYmxlZWQ6IDxvdXRwdXQgbWFwPlxuQGZ1bmN0aW9uIGJsZWVkLXNob3J0aGFuZChcbiAgJGJsZWVkXG4pIHtcbiAgJG1hcmdpbjogKCk7XG4gICRwYWRkaW5nOiAoKTtcbiAgJHJldHVybjogKCk7XG5cbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRibGVlZCB7XG4gICAgQGlmIHN0ci1pbmRleCgka2V5LCBtYXJnaW4pIHtcbiAgICAgICRtYXJnaW46IG1hcC1tZXJnZSgkbWFyZ2luLCAoJGtleTogJHZhbHVlKSk7XG4gICAgfSBAZWxzZSBpZiBzdHItaW5kZXgoJGtleSwgcGFkZGluZykgPiAwIHtcbiAgICAgICRwYWRkaW5nOiBtYXAtbWVyZ2UoJHBhZGRpbmcsICgka2V5OiAkdmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICAkcHJvcHM6IChcbiAgICBtYXJnaW46ICRtYXJnaW4sXG4gICAgcGFkZGluZzogJHBhZGRpbmcsXG4gICk7XG5cbiAgQGVhY2ggJG5hbWUsICRtYXAgaW4gJHByb3BzIHtcbiAgICAkZm91cjogaWYobGVuZ3RoKG1hcC1rZXlzKCRtYXApKSA9PSA0LCB0cnVlLCBmYWxzZSk7XG4gICAgJG51bGw6IGlmKGluZGV4KG1hcC12YWx1ZXMoJG1hcCksIG51bGwpLCB0cnVlLCBmYWxzZSk7XG5cbiAgICBAaWYgJGZvdXIgYW5kIG5vdCgkbnVsbCkge1xuICAgICAgJHRvcDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tdG9wJyk7XG4gICAgICAkcmlnaHQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LXJpZ2h0Jyk7XG4gICAgICAkYm90dG9tOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1ib3R0b20nKTtcbiAgICAgICRsZWZ0OiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS1sZWZ0Jyk7XG5cbiAgICAgICR0YjogaWYoJHRvcCA9PSAkYm90dG9tLCAkdG9wLCBudWxsKTtcbiAgICAgICRybDogaWYoJHJpZ2h0ID09ICRsZWZ0LCAkcmlnaHQsIG51bGwpO1xuICAgICAgJGFsbDogaWYoJHRiID09ICRybCwgJHRiLCBudWxsKTtcblxuICAgICAgJG5ldzogaWYoJGFsbCwgJGFsbCwgbnVsbCk7XG5cbiAgICAgIEBpZiBub3QoJG5ldykge1xuICAgICAgICBAaWYgJHRiIGFuZCAkcmwge1xuICAgICAgICAgICRuZXc6ICR0YiAkcmw7XG4gICAgICAgIH0gQGVsc2UgaWYgJHJsIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRybCAkYm90dG9tO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkbmV3OiAkdG9wICRyaWdodCAkYm90dG9tICRsZWZ0O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAoJG5hbWU6ICRuZXcpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRyZXR1cm46IG1hcC1tZXJnZSgkcmV0dXJuLCAkbWFwKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBCcmVha3BvaW50IEludGVncmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cbiRzdXN5LW1lZGlhOiAoKSAhZGVmYXVsdDtcbiRzdXN5LW1lZGlhLWZhbGxiYWNrOiBmYWxzZSAhZGVmYXVsdDtcblxuJF9zdXN5LW1lZGlhLWNvbnRleHQ6ICgpO1xuXG5cbi8vIFN1c3kgQnJlYWtwb2ludFxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGFuZ2UgZ3JpZHMgYXQgZGlmZmVyZW50IG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRzLlxuLy8gLSAkcXVlcnkgICAgIDogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPiB8IDxtYXA+XG4vLyAtICRsYXlvdXQgICAgOiA8c2V0dGluZ3M+XG4vLyAtICRuby1xdWVyeSAgOiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1icmVha3BvaW50KFxuICAkcXVlcnksXG4gICRsYXlvdXQ6IGZhbHNlLFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1yb3V0ZXIoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICBAaWYgJGxheW91dCB7XG4gICAgICBAaW5jbHVkZSB3aXRoLWxheW91dCgkbGF5b3V0KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gU3VzeSBNZWRpYVxuLy8gLS0tLS0tLS0tLVxuLy8gLSAkcXVlcnk6IDxtaW4td2lkdGg+IFs8bWF4LXdpZHRoPl0gfCA8cHJvcGVydHk+IDx2YWx1ZT5cbi8vIC0gJG5vLXF1ZXJ5OiA8Ym9vbGVhbj4gfCA8c2VsZWN0b3I+XG5AbWl4aW4gc3VzeS1tZWRpYShcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgJG9sZC1jb250ZXh0OiAkX3N1c3ktbWVkaWEtY29udGV4dDtcbiAgJG5hbWU6IGlmKG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkcXVlcnkpLCAkcXVlcnksIG51bGwpO1xuICAkcXVlcnk6IHN1c3ktZ2V0LW1lZGlhKCRxdWVyeSk7XG4gICRxdWVyeTogc3VzeS1wYXJzZS1tZWRpYSgkcXVlcnkpO1xuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkcXVlcnksICRuYW1lKTtcblxuICBAaWYgJG5vLXF1ZXJ5IGFuZCB0eXBlLW9mKCRuby1xdWVyeSkgIT0gc3RyaW5nIHtcbiAgICBAY29udGVudDtcbiAgfSBAZWxzZSB7XG4gICAgQG1lZGlhICN7c3VzeS1yZW5kZXItbWVkaWEoJHF1ZXJ5KX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgQGlmIHR5cGUtb2YoJG5vLXF1ZXJ5KSA9PSBzdHJpbmcge1xuICAgICAgI3skbm8tcXVlcnl9ICYge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LW1lZGlhLWNvbnRleHQoJG9sZC1jb250ZXh0LCAkY2xlYW46IHRydWUpO1xufVxuXG5cbi8vIE1lZGlhIFJvdXRlclxuLy8gLS0tLS0tLS0tLS0tXG4vLyBSb3V0IG1lZGlhIGFyZ3VtZW50cyB0byB0aGUgY29ycmVjdCBtaXhpbi5cbkBtaXhpbiBzdXN5LW1lZGlhLXJvdXRlcihcbiAgJHF1ZXJ5LFxuICAkbm8tcXVlcnk6ICRzdXN5LW1lZGlhLWZhbGxiYWNrXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChicmVha3BvaW50LCAobWl4aW46IGJyZWFrcG9pbnQpLCAkd2FybjogZmFsc2UpIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KCRxdWVyeSwgJG5vLXF1ZXJ5KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIHN1c3ktbWVkaWEoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG5cbi8vIFVwZGF0ZSBDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBTZXQgdGhlIG5ldyBtZWRpYSBjb250ZXh0XG5AbWl4aW4gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcXVlcnksXG4gICRuYW1lOiBudWxsLFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJHF1ZXJ5OiBtYXAtbWVyZ2UoKG5hbWU6ICRuYW1lKSwgJHF1ZXJ5KTtcblxuICBAaWYgJGNsZWFuIHtcbiAgICAkX3N1c3ktbWVkaWEtY29udGV4dDogJHF1ZXJ5ICFnbG9iYWw7XG4gIH0gQGVsc2Uge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiBtYXAtbWVyZ2UoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRxdWVyeSkgIWdsb2JhbDtcbiAgfVxufVxuXG5cbi8vIE1lZGlhIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgZnVsbCBtZWRpYSBjb250ZXh0LCBvciBhIHNpbmdsZSBtZWRpYSBwcm9wZXJ0eSAoZS5nLiBtaW4td2lkdGgpXG5AZnVuY3Rpb24gc3VzeS1tZWRpYS1jb250ZXh0KFxuICAkcHJvcGVydHk6IGZhbHNlXG4pIHtcbiAgQGlmICRwcm9wZXJ0eSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRfc3VzeS1tZWRpYS1jb250ZXh0LCAkcHJvcGVydHkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICB9XG59XG5cblxuLy8gR2V0IE1lZGlhXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBhIG5hbWVkIG1lZGlhLXF1ZXJ5IGZyb20gJHN1c3ktbWVkaWEuXG4vLyAtICRuYW1lOiA8a2V5PlxuQGZ1bmN0aW9uIHN1c3ktZ2V0LW1lZGlhKFxuICAkbmFtZVxuKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkc3VzeS1tZWRpYSwgJG5hbWUpIHtcbiAgICAkbWFwLXZhbHVlOiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCAkbmFtZSk7XG4gICAgQGlmICgkbmFtZSA9PSAkbWFwLXZhbHVlKSB7XG4gICAgICAkbmFtZTogJG1hcC12YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRuYW1lOiBzdXN5LWdldC1tZWRpYSgkbWFwLXZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRuYW1lO1xufVxuXG5cbi8vIFJlbmRlciBNZWRpYVxuLy8gLS0tLS0tLS0tLS0tXG4vLyBCdWlsZCBhIG1lZGlhLXF1ZXJ5IHN0cmluZyBmcm9tIHZhcmlvdXMgbWVkaWEgc2V0dGluZ3NcbkBmdW5jdGlvbiBzdXN5LXJlbmRlci1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG91dHB1dDogbnVsbDtcbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJHF1ZXJ5IHtcbiAgICAkc3RyaW5nOiBudWxsO1xuXG4gICAgQGlmICRwcm9wZXJ0eSA9PSBtZWRpYSB7XG4gICAgICAkc3RyaW5nOiAkdmFsdWU7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RyaW5nOiAnKCN7JHByb3BlcnR5fTogI3skdmFsdWV9KSc7XG4gICAgfVxuXG4gICAgJG91dHB1dDogaWYoJG91dHB1dCwgJyN7JG91dHB1dH0gYW5kICN7JHN0cmluZ30nLCAkc3RyaW5nKTtcbiAgfVxuXG4gIEByZXR1cm4gJG91dHB1dDtcbn1cblxuXG4vLyBQYXJzZSBNZWRpYVxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBwYXJzZWQgbWVkaWEtcXVlcnkgc2V0dGluZ3MgYmFzZWQgb24gc2hvcnRoYW5kXG5AZnVuY3Rpb24gc3VzeS1wYXJzZS1tZWRpYShcbiAgJHF1ZXJ5XG4pIHtcbiAgJG1xOiBudWxsO1xuICBAaWYgdHlwZS1vZigkcXVlcnkpID09IG1hcCB7XG4gICAgJG1xOiAkcXVlcnk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IG51bWJlciB7XG4gICAgJG1xOiAobWluLXdpZHRoOiAkcXVlcnkpO1xuICB9IEBlbHNlIGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBsaXN0IGFuZCBsZW5ndGgoJHF1ZXJ5KSA9PSAyIHtcbiAgICBAaWYgdHlwZS1vZihudGgoJHF1ZXJ5LCAxKSkgPT0gbnVtYmVyIHtcbiAgICAgICRtcTogKFxuICAgICAgICBtaW4td2lkdGg6IG1pbigkcXVlcnkuLi4pLFxuICAgICAgICBtYXgtd2lkdGg6IG1heCgkcXVlcnkuLi4pLFxuICAgICAgKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtcTogKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkbXE6IChtZWRpYTogJyN7JHF1ZXJ5fScpO1xuICB9XG5cbiAgQHJldHVybiAkbXE7XG59XG4iLCIvKlxuKiBTY3V0LCBhIGNvbGxlY3Rpb24gb2YgU2FzcyB1dGlsaXRpZXNcbiogdG8gZWFzZSBhbmQgaW1wcm92ZSBvdXIgaW1wbGVtZW50YXRpb25zIG9mIGNvbW1vbiBzdHlsZS1jb2RlIHBhdHRlcm5zLlxuKiB2MS40LjBcbiogRG9jcyBhdCBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dFxuKi9cblxuQG1peGluIHNjdXQtY2xlYXJmaXgge1xuXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cblxufVxuXG4lc2N1dC1jbGVhcmZpeCB7XG4gIEBpbmNsdWRlIHNjdXQtY2xlYXJmaXg7XG59XG5AbWl4aW4gc2N1dC1saXN0LXVuc3R5bGVkKFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIHBhZGRpbmctbGVmdDogMDtcblxuICBAaWYgJG5vLW1hcmdpbiB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtbGlzdC11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgpO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZmxvYXRlZCAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRkaXI6IGxlZnQsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcblxuICAmID4gbGkge1xuICAgIGZsb2F0OiAkZGlyO1xuICB9XG5cbiAgQGlmICRzcGFjZSB7XG4gICAgJiA+IGxpICsgbGkge1xuICAgICAgbWFyZ2luLSN7JGRpcn06ICRzcGFjZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWZsb2F0ZWQge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZmxvYXRlZDtcbn1cblxuQGZ1bmN0aW9uIHNjdXQtYXV0b09yVmFsdWUgKCR2YWwpIHtcbiAgQGlmICR2YWwgPT0gYSBvciAkdmFsID09IGF1dG8ge1xuICAgIEByZXR1cm4gYXV0bztcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkdmFsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LWNvb3JkcyAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgJHRvcDogbnRoKCRjb29yZGluYXRlcywgMSk7XG4gICRyaWdodDogbnRoKCRjb29yZGluYXRlcywgMik7XG4gICRib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpO1xuICAkbGVmdDogbnRoKCRjb29yZGluYXRlcywgNCk7XG5cbiAgQGlmICR0b3AgIT0gbiB7XG4gICAgdG9wOiBzY3V0LWF1dG9PclZhbHVlKCR0b3ApO1xuICB9XG4gIEBpZiAkcmlnaHQgIT0gbiB7XG4gICAgcmlnaHQ6IHNjdXQtYXV0b09yVmFsdWUoJHJpZ2h0KTtcbiAgfVxuICBAaWYgJGJvdHRvbSAhPSBuIHtcbiAgICBib3R0b206IHNjdXQtYXV0b09yVmFsdWUoJGJvdHRvbSk7XG4gIH1cbiAgQGlmICRsZWZ0ICE9IG4ge1xuICAgIGxlZnQ6IHNjdXQtYXV0b09yVmFsdWUoJGxlZnQpO1xuICB9XG5cbn1cbkBmdW5jdGlvbiBzY3V0LXN0cmlwLXVuaXQgKFxuICAkbnVtXG4pIHtcblxuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LWVtIChcbiAgJHBpeGVscyxcbiAgJGJhc2U6ICRzY3V0LWVtLWJhc2Vcbikge1xuXG4gIC8vICRiYXNlIGNvdWxkIGJlIGluIGVtIG9yIHB4IChubyB1bml0ID0gcHgpLlxuICAvLyBBZGp1c3QgYWNjb3JkaW5nbHkgdG8gY3JlYXRlIGEgJGRpdmlzb3IgdGhhdFxuICAvLyBzZXJ2ZXMgYXMgY29udGV4dCBmb3IgJHBpeGVscy5cbiAgJG11bHRpcGxpZXI6IGlmKHVuaXQoJGJhc2UpID09IGVtLCAxNiwgMSk7XG4gICRkaXZpc29yOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UpICogJG11bHRpcGxpZXI7XG5cbiAgJGVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tZW1zOiAoc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJGRpdmlzb3IpICogMWVtO1xuICAgICRlbS12YWxzOiBhcHBlbmQoJGVtLXZhbHMsICR2YWwtaW4tZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJGVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkZW0tdmFscywgMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gJGVtLXZhbHM7XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgc2N1dC1zdHJpcC11bml0YC5cblxuJHNjdXQtcmVtLWJhc2U6IDE2ICFkZWZhdWx0O1xuXG5AZnVuY3Rpb24gc2N1dC1yZW0gKFxuICAkcGl4ZWxzXG4pIHtcblxuICAkcmVtLXZhbHM6ICgpO1xuICBAZWFjaCAkdmFsIGluICRwaXhlbHMge1xuICAgICR2YWwtaW4tcmVtczogc2N1dC1zdHJpcC11bml0KCR2YWwpIC8gJHNjdXQtcmVtLWJhc2UgKiAxcmVtO1xuICAgICRyZW0tdmFsczogYXBwZW5kKCRyZW0tdmFscywgJHZhbC1pbi1yZW1zKTtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHJlbS12YWxzKSA9PSAxIHtcbiAgICAvLyByZXR1cm4gYSBzaW5nbGUgdmFsdWUgaW5zdGVhZCBvZiBhIGxpc3QsXG4gICAgLy8gc28gaXQgY2FuIGJlIHVzZWQgaW4gY2FsY3VsYXRpb25zXG4gICAgQHJldHVybiBudGgoJHJlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcmVtLXZhbHM7XG4gIH1cblxufVxuQG1peGluIHNjdXQtYm9yZGVyIChcbiAgJHN0eWxlLFxuICAkc2lkZXM6IG4geVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2lkZXMpID09IDIge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1yaWdodDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmIGxlbmd0aCgkc2lkZXMpID09IDQge1xuICAgIEBpZiBudGgoJHNpZGVzLCAxKSAhPSBuIHtcbiAgICAgIGJvcmRlci10b3A6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDIpICE9IG4ge1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICAgIEBpZiBudGgoJHNpZGVzLCAzKSAhPSBuIHtcbiAgICAgIGJvcmRlci1ib3R0b206ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDQpICE9IG4ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICRzdHlsZTtcbiAgICB9XG4gIH1cblxuICBAZWxzZSB7XG4gICAgQHdhcm4gXCJTY3V0LWJvcmRlciByZXF1aXJlcyBhICRzaWRlcyBhcmd1bWVudCBvZiAyIG9yIDQgdmFsdWVzLlwiXG4gIH1cblxufVxuQG1peGluIHNjdXQtY2lyY2xlIChcbiAgJHNpemUsXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cbiAgQGlmICRjb2xvciA9PSBpbmhlcml0IHtcbiAgICAvLyBJZiB1c2VyIHdhbnRzIHRvIGluaGVyaXQgdGhlIGNvbG9yLFxuICAgIC8vIHRha2UgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgYm9yZGVyXG4gICAgLy8gY29sb3IgZGVmYXVsdHMgdG8gdGhlIHRleHQgY29sb3Igb2YgdGhlIGVsZW1lbnQuXG4gICAgYm9yZGVyLXdpZHRoOiAkc2l6ZSAvIDI7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgd2lkdGg6IDA7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC8vIE90aGVyd2lzZSwganVzdCB1c2UgYmFja2dyb3VuZC1jb2xvci5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3I7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICB3aWR0aDogJHNpemU7XG4gIH1cblxufVxuQG1peGluIHNjdXQtY29sb3Itc3dhcCAoXG4gICRvZmYsXG4gICRvbixcbiAgJGR1cmF0aW9uOiAwLFxuICAkYmc6IGZhbHNlXG4pIHtcblxuICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBudWxsO1xuICAkb2ZmLWlzLWxpc3Q6IHR5cGUtb2YoJG9mZikgPT0gbGlzdDtcbiAgJG9uLWlzLWxpc3Q6IHR5cGUtb2YoJG9uKSA9PSBsaXN0O1xuXG4gIC8vIElmICRvZmYgSVMgYSBsaXN0LFxuICAvLyBhc3NpZ24gY29sb3IgYW5kIGJhY2tncm91bmQtY29sb3IuXG4gIEBpZiAkb2ZmLWlzLWxpc3Qge1xuICAgIGNvbG9yOiBudGgoJG9mZiwgMSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogbnRoKCRvZmYsIDIpO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGJhY2tncm91bmQtY29sb3IsIGNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgVFJVRSxcbiAgLy8gYXNzaWduIGJhY2tncm91bmQtY29sb3IuXG4gIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvZmYtaXMtbGlzdCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRvZmY7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvcjtcbiAgfVxuXG4gIC8vIElmICRvZmYgSVMgTk9UIGEgbGlzdCBhbmQgJGJnIGlzIEZBTFNFLFxuICAvLyBhc3NpZ24gY29sb3IuXG4gIEBlbHNlIHtcbiAgICBjb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBjb2xvcjtcbiAgfVxuXG4gIC8vIE9ubHkgc2V0LXVwIHRyYW5zaXRpb24gaWYgJGR1cmF0aW9uICE9IDAuXG4gIEBpZiAkZHVyYXRpb24gIT0gMCB7XG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogJHRyYW5zaXRpb24tcHJvcGVydGllcztcbiAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAkZHVyYXRpb247XG4gIH1cblxuICAmOmhvdmVyLFxuICAmOmZvY3VzIHtcblxuICAgIC8vICRvbiBpcyB0cmVhdGVkIHRoZSBzYW1lIGFzICRvZmYsIGFib3ZlLlxuICAgIEBpZiAkb24taXMtbGlzdCB7XG4gICAgICBjb2xvcjogbnRoKCRvbiwgMSk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9uLCAyKTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkYmcgYW5kIG5vdCgkb24taXMtbGlzdCkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJG9uO1xuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgIGNvbG9yOiAkb247XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWhkLWJwIChcbiAgJHJhdGlvOiAxLjNcbikge1xuXG4gIEBtZWRpYSAoLW8tbWluLWRldmljZS1waXhlbC1yYXRpbzogKCRyYXRpbyAvIDEpKSxcbiAgICAgICAgICgtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICRyYXRpbyksXG4gICAgICAgICAobWluLXJlc29sdXRpb246IChyb3VuZCg5NiAqICRyYXRpbykgKiAxZHBpKSkge1xuICAgIEBjb250ZW50O1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGlkZS12aXN1YWxseSB7XG5cbiAgYm9yZGVyOiAwO1xuICBjbGlwOiByZWN0KDAgMCAwIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG5cbn1cblxuJXNjdXQtaGlkZS12aXN1YWxseSB7XG4gIEBpbmNsdWRlIHNjdXQtaGlkZS12aXN1YWxseTtcbn1cbkBtaXhpbiBzY3V0LWltYWdlLXJlcGxhY2Uge1xuXG4gIHRleHQtaW5kZW50OiAxMDIlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuXG59XG5cbiVzY3V0LWltYWdlLXJlcGxhY2Uge1xuICBAaW5jbHVkZSBzY3V0LWltYWdlLXJlcGxhY2U7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1yZW0gYW5kIHNjdXQtc3RyaXAtdW5pdFxuXG5AbWl4aW4gc2N1dC1yZW0tZmFsbGJhY2sgKFxuICAkcGl4ZWxzLFxuICAkcHJvcGVydHk6IGZvbnQtc2l6ZVxuKSB7XG5cbiAgJHB4LXZhbHM6IG51bGw7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1weDogc2N1dC1zdHJpcC11bml0KCR2YWwpICogMXB4O1xuICAgICRweC12YWxzOiBhcHBlbmQoJHB4LXZhbHMsICR2YWwtaW4tcHgpO1xuICB9XG4gICRyZW0tdmFsczogc2N1dC1yZW0oJHBpeGVscyk7XG5cbiAgI3skcHJvcGVydHl9OiAkcHgtdmFscztcbiAgI3skcHJvcGVydHl9OiAkcmVtLXZhbHM7XG5cbn1cbkBtaXhpbiBzY3V0LXJlc2V0LWJvcmRlci1ib3gge1xuICAvLyBNYWtlIGV2ZXJ5dGhpbmcgYSBib3JkZXItYm94LCBiZWNhdXNlIHdoeSBub3Q/XG4gIGh0bWwge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbiAgKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtYW50aWFsaWFzIHtcbiAgLy8gQW50aWFsaWFzIVxuICBib2R5IHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1zZW1hbnRpY2l6ZSB7XG4gIC8vIE1ha2UgaGVhZGVycyBhbmQgPGI+IHNlbWFudGljLCBub3QgcHJlc2VudGF0aW9uYWwuXG4gIGgxLFxuICBoMixcbiAgaDMsXG4gIGg0LFxuICBoNSxcbiAgaDYge1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgbWFyZ2luOiAwO1xuICB9XG4gIGIge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtcmVzZXQtcG9pbnRlciB7XG4gIC8vIENsaWNrYWJsZSBmb3JtIGVsZW1lbnRzIHNob3VsZCBoYXZlIGEgcG9pbnRlci5cbiAgbGFiZWwsXG4gIHNlbGVjdCxcbiAgb3B0aW9uLFxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1mb3JtIHtcbiAgZmllbGRzZXQge1xuICAgIGJvcmRlcjogMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuICB0ZXh0YXJlYSB7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1idXR0b24ge1xuICAvLyBSZXNldCBkZWZhdWx0IGJ1dHRvbiBzdHlsZXMsIHdoaWNoIGFyZSBuZXZlciB1c2VkLlxuICBidXR0b24sXG4gIFt0eXBlPVwiYnV0dG9uXCJdLFxuICBbdHlwZT1cInN1Ym1pdFwiXSxcbiAgW3R5cGU9XCJyZXNldFwiXSB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAwO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQ6IGluaGVyaXQ7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgLW1vei11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgJjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgICAgYm9yZGVyOiAwO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wYXJhZ3JhcGgge1xuICAvLyBTb21lIHBhcmFncmFwaCBtYXJnaW5zIGp1c3QgZ2V0IGluIHRoZSB3YXkuXG4gIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICBwOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1tZWRpYSB7XG4gIC8vIFlvdSB3YW50IHRoZXNlIGVsZW1lbnRzIGZsdWlkLCBwcm9iYWJseS5cbiAgaW1nLFxuICB2aWRlbyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogYXV0bztcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1maWd1cmUge1xuICAvLyBSZW1vdmUgZGVmYXVsdCBtYXJnaW5zLlxuICBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG4vLyBDYWxsIHRoZW0gYWxsLCBtaW51cyBleGNsdXNpb25zIVxuQG1peGluIHNjdXQtcmVzZXQgKCRleGNsdWRlOiBmYWxzZSkge1xuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBib3JkZXItYm94KSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtYm9yZGVyLWJveDtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBhbnRpYWxpYXMpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1hbnRpYWxpYXM7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgc2VtYW50aWNpemUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1zZW1hbnRpY2l6ZTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwb2ludGVyKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcG9pbnRlcjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmb3JtKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZm9ybTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBidXR0b24pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1idXR0b247XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgcGFyYWdyYXBoKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtcGFyYWdyYXBoO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIG1lZGlhKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtbWVkaWE7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgZmlndXJlKSkge1xuICAgIEBpbmNsdWRlIHNjdXQtcmVzZXQtZmlndXJlO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXNlbGVjdGVkIChcbiAgJGFjdGl2ZTogZmFsc2Vcbikge1xuXG4gIEBpZiAkYWN0aXZlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMsXG4gICAgJjphY3RpdmUge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmhvdmVyLFxuICAgICY6Zm9jdXMge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXRyaWFuZ2xlIChcbiAgJGRpcmVjdGlvbjogcmlnaHQsXG4gICRzaXplOiAwLjc1ZW0sXG4gICRjb2xvcjogaW5oZXJpdFxuKSB7XG5cbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBoZWlnaHQ6IDA7XG4gIHdpZHRoOiAwO1xuICAvLyBGb3IgaW1wcm92ZWQgYXBwZWFyYW5jZSBpbiBzb21lIFdlYmtpdCBicm93c2Vyc1xuICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG5cbiAgLy8gU2V0IHVwIHNvbWUgdmFyaWFibGVzXG4gICR3aWR0aDogbnVsbDtcbiAgJGhlaWdodDogbnVsbDtcbiAgJGJvcmRlci13aWR0aHM6IG51bGw7XG5cbiAgQGlmIHR5cGUtb2YoJHNpemUpID09IGxpc3Qge1xuICAgICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgICAkaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkd2lkdGg6ICRzaXplO1xuICAgICRoZWlnaHQ6ICRzaXplO1xuICB9XG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSB7XG4gICAgLy8gRm9yIHVwIGFuZCBkb3duLCB3aWR0aCBnZXRzIHR3byBib3JkZXJzIGJ1dCBoZWlnaHQgb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIHNlY29uZCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAkaGVpZ2h0ICgkd2lkdGggLyAyKTtcbiAgfVxuICBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIC8vIEZvciByaWdodCBhbmQgbGVmdCwgaGVpZ2h0IGdldHMgdHdvIGJvcmRlcnMgYnV0IHdpZHRoIG9ubHkgb25lLFxuICAgIC8vIHNvIGRpdmlkZSBmaXJzdCBib3JkZXItd2lkdGggdmFsdWUgYnkgMlxuICAgICRib3JkZXItd2lkdGhzOiAoJGhlaWdodCAvIDIpICR3aWR0aDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gRm9yIHJpZ2h0IHRyaWFuZ2xlcyAodGhlIHJlc3QpLCBib3RoIHNpZGVzIGdldCB0d28gYm9yZGVycyxcbiAgICAvLyBzbyBkaXZpZGUgYm90aCBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgKCR3aWR0aCAvIDIpO1xuICB9XG5cbiAgYm9yZGVyLXdpZHRoOiAkYm9yZGVyLXdpZHRocztcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcblxuXG4gIC8vIFNUQU5EQVJEIFRSSUFOR0xFU1xuXG4gIEBpZiAoJGRpcmVjdGlvbiA9PSB1cCkgb3IgKCRkaXJlY3Rpb24gPT0gZG93bikgb3IgKCRkaXJlY3Rpb24gPT0gcmlnaHQpIG9yICgkZGlyZWN0aW9uID09IGxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwIHtcbiAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci10b3Atd2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBkb3duIHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0LXdpZHRoOiAwO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gQ09STkVSIFRSSUFOR0xFU1xuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHRvcC1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gdG9wLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IHRvcC1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGJvdHRvbS1yaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQpIHtcbiAgICBib3JkZXItdG9wLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGJvdHRvbS1sZWZ0IHtcbiAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LXRyaWFuZ2xlIHtcbiAgQGluY2x1ZGUgc2N1dC10cmlhbmdsZTtcbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1hYnNvbHV0ZWx5IChcbiAgJGRpbWVuc2lvbnNcbikge1xuXG4gICR3aWR0aDogbnRoKCRkaW1lbnNpb25zLCAxKTtcbiAgJGhlaWdodDogbnRoKCRkaW1lbnNpb25zLCAyKTtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICR3aWR0aCAhPSBuIHtcbiAgICB3aWR0aDogJHdpZHRoO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogKC0kd2lkdGggLyAyKTtcbiAgfVxuXG4gIEBpZiAkaGVpZ2h0ICE9IG4ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiAoLSRoZWlnaHQgLyAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jZW50ZXItYmxvY2sgKFxuICAkbWF4LXdpZHRoOiBmYWxzZVxuKSB7XG5cbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgQGlmICRtYXgtd2lkdGgge1xuICAgIG1heC13aWR0aDogJG1heC13aWR0aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNlbnRlci1ibG9jayB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLWJsb2NrO1xufVxuXG5AbWl4aW4gc2N1dC1jZW50ZXItdHJhbnNmb3JtIChcbiAgJGF4aXM6IGZhbHNlIC8vIG9yIHggb3IgeVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIEBpZiAkYXhpcyAhPSB4IHtcbiAgICB0b3A6IDUwJTtcbiAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gIH1cblxuICBAaWYgJGF4aXMgIT0geSB7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgfVxuXG4gICR0cmFuc2xhdGUtdmFsOiBudWxsO1xuXG4gIEBpZiBub3QoJGF4aXMpIHtcbiAgICAkdHJhbnNsYXRlLXZhbDogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHgge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVZKC01MCUpO1xuICB9XG4gIEBlbHNlIGlmICRheGlzICE9IHkge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGVYKC01MCUpO1xuICB9XG5cbiAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICAtbXMtdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbiAgdHJhbnNmb3JtOiAkdHJhbnNsYXRlLXZhbDtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybTtcbn1cblxuJXNjdXQtY2VudGVyLXRyYW5zZm9ybS14IHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHgpO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbkBtaXhpbiBzY3V0LWZpbGwgKFxuICAkd2lkdGgtaGVpZ2h0OiBmYWxzZVxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDA7XG4gIEBpZiAkd2lkdGgtaGVpZ2h0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgfVxuXG59XG5cbiVzY3V0LWZpbGwge1xuICBAaW5jbHVkZSBzY3V0LWZpbGw7XG59XG5AbWl4aW4gc2N1dC1saXN0LWN1c3RvbSAoXG4gICRjb250ZW50OiBcIlxcMjAyMlwiLFxuICAkbWFya2VyLXdpZHRoOiAwLjc1ZW0sXG4gICRwYWQ6IDAsXG4gICRuby1tYXJnaW46IGZhbHNlXG4pIHtcblxuICAkY29udGVudC12YWw6IG51bGw7XG4gICRjb3VudGVyOiBpbmRleCgkY29udGVudCwgY291bnQpO1xuICBAaWYgJGNvdW50ZXIge1xuICAgIEBpZiBsZW5ndGgoJGNvbnRlbnQpID09IDMge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlciwgbnRoKCRjb250ZW50LCAzKSludGgoJGNvbnRlbnQsMik7XG4gICAgfVxuICAgIEBlbHNlIGlmIGxlbmd0aCgkY29udGVudCkgPT0gMiB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgJGNvbnRlbnQtdmFsOiBjb3VudGVyKHNjdXRsaXN0Y291bnRlcik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAkY29udGVudC12YWw6ICRjb250ZW50O1xuICB9XG5cbiAgcGFkZGluZy1sZWZ0OiAkbWFya2VyLXdpZHRoICsgJHBhZDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxuICAmID4gbGkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgJGNvdW50ZXIge1xuICAgICAgY291bnRlci1pbmNyZW1lbnQ6IHNjdXRsaXN0Y291bnRlcjtcbiAgICB9XG4gICAgJjpiZWZvcmUge1xuICAgICAgY29udGVudDogJGNvbnRlbnQtdmFsO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAtJG1hcmtlci13aWR0aDtcbiAgICAgIHdpZHRoOiAkbWFya2VyLXdpZHRoO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtZmxvYXRlZGAsIHdoaWNoIGRlcGVuZHMgaW4gdHVybiBvbiBgbGlzdC11bnN0eWxlZGAgYW5kIGBjbGVhcmZpeGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtZGl2aWRlZCAoXG4gICRkaXZpZGVyOiBcInxcIixcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGRpcjogbGVmdCxcbiAgJGhlaWdodDogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkKCRkaXI6ICRkaXIsICRuby1tYXJnaW46ICRuby1tYXJnaW4pO1xuXG4gICRwc2V1ZG86IGlmKCRkaXIgPT0gbGVmdCwgJ2JlZm9yZScsICdhZnRlcicpO1xuXG4gIC8vIElmIGFuIGV4cGxpY2l0IGhlaWdodCBpcyBwYXNzZWQsXG4gIC8vIHRoaW5ncyBhcmUgZGlmZmVyZW50OiBBbGwgPGxpPnNcbiAgLy8gbmVlZCB0aGUgcHNldWRvLWVsZW1lbnQgKHRvIGZvcmNlIGhlaWdodCksXG4gIC8vIGJ1dCB0aGUgZmlyc3QncyBtdXN0IGJlIGhpZGRlbi5cblxuICBAaWYgJGhlaWdodCB7XG4gICAgJiA+IGxpIHtcbiAgICAgIGhlaWdodDogJGhlaWdodDtcbiAgICB9XG4gICAgJiA+IGxpOiN7JHBzZXVkb30ge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgICYgPiBsaTpmaXJzdC1jaGlsZDojeyRwc2V1ZG99IHtcbiAgICAgIHdpZHRoOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG4gIH1cblxuICAmID4gbGkgKyBsaTojeyRwc2V1ZG99IHtcbiAgICBAaWYgbm90KCRoZWlnaHQpIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgbWFyZ2luLXJpZ2h0OiAkc3BhY2U7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWJhciB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkO1xufVxuXG4lc2N1dC1saXN0LWJyZWFkY3J1bWIge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtZGl2aWRlZChcIi9cIik7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYC5cblxuQG1peGluIHNjdXQtbGlzdC1pbmxpbmUgKFxuICAkc3BhY2U6IGZhbHNlLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tbGVmdDogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtaW5saW5lIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWlubGluZTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LXB1bmN0dWF0ZWQgKFxuICAkZGl2aWRlcjogXCIsIFwiLFxuICAkZGlzcGxheTogaW5saW5lLFxuICAkbm8tbWFyZ2luOiB0cnVlXG4pIHtcblxuICBAaW5jbHVkZSBzY3V0LWxpc3QtdW5zdHlsZWQoJG5vLW1hcmdpbik7XG5cbiAgJiA+IGxpIHtcbiAgICBkaXNwbGF5OiAkZGlzcGxheTtcbiAgICAmOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1jb21tYSB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1wdW5jdHVhdGVkO1xufVxuQG1peGluIHNjdXQtbWFyZ2luIChcbiAgJG1hcmdpblxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAxIGFuZCAkbWFyZ2luICE9IG4ge1xuICAgIG1hcmdpbi10b3A6ICRtYXJnaW47XG4gICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luO1xuICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW47XG4gICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW47XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDIge1xuICAgICRtYXJnaW4teTogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4teDogbnRoKCRtYXJnaW4sIDIpO1xuICAgIEBpZiAkbWFyZ2luLXkgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXk7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLXggIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSAzIHtcbiAgICAkbWFyZ2luLXktdG9wOiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi15LWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgIEBpZiAkbWFyZ2luLXktdG9wICE9IG4ge1xuICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbi15LXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi14O1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4teDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teS1ib3R0b20gIT0gbiB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gNCB7XG4gICAgJG1hcmdpbi10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXJpZ2h0OiBudGgoJG1hcmdpbiwgMik7XG4gICAgJG1hcmdpbi1ib3R0b206IG50aCgkbWFyZ2luLCAzKTtcbiAgICAkbWFyZ2luLWxlZnQ6IG50aCgkbWFyZ2luLCA0KTtcbiAgICBAaWYgJG1hcmdpbi10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXRvcDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tcmlnaHQgIT0gbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4tcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4tYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1sZWZ0ICE9IG4ge1xuICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4tbGVmdDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtcGFkZGluZyAoXG4gICRwYWRkaW5nXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAxIGFuZCAkcGFkZGluZyAhPSBuIHtcbiAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nO1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAyIHtcbiAgICAkcGFkZGluZy15OiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXg6IG50aCgkcGFkZGluZywgMik7XG4gICAgQGlmICRwYWRkaW5nLXkgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteTtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy15O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXg7XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gMyB7XG4gICAgJHBhZGRpbmcteS10b3A6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy15LWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICBAaWYgJHBhZGRpbmcteS10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmcteS10b3A7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXktYm90dG9tICE9IG4ge1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXktYm90dG9tO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDQge1xuICAgICRwYWRkaW5nLXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy1yaWdodDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICAkcGFkZGluZy1ib3R0b206IG50aCgkcGFkZGluZywgMyk7XG4gICAgJHBhZGRpbmctbGVmdDogbnRoKCRwYWRkaW5nLCA0KTtcbiAgICBAaWYgJHBhZGRpbmctdG9wICE9IG4ge1xuICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXJpZ2h0ICE9IG4ge1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmctcmlnaHQ7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmctYm90dG9tO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctbGVmdCAhPSBuIHtcbiAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmctbGVmdDtcbiAgICB9XG4gIH1cbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtYWJzb2x1dGUgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1hYnNvbHV0ZSB7XG4gIEBpbmNsdWRlIHNjdXQtYWJzb2x1dGU7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LWZpeGVkIChcbiAgJGNvb3JkaW5hdGVzOiAwIG4gbiAwXG4pIHtcblxuICBwb3NpdGlvbjogZml4ZWQ7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cblxuJXNjdXQtZml4ZWQge1xuICBAaW5jbHVkZSBzY3V0LWZpeGVkO1xufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1yZWxhdGl2ZSAoXG4gICRjb29yZGluYXRlczogbiBuIG4gblxuKSB7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5AbWl4aW4gc2N1dC1yYXRpby1ib3ggKFxuICAkcmF0aW86IDEvMVxuKSB7XG5cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIC8vIFRoZSBjb250YWluZXIncyBoZWlnaHQsIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVcbiAgLy8gY29udGFpbmVyJ3Mgd2lkdGgsIGlzIHNldCBieSBhc3NpZ25pbmdcbiAgLy8gcGFkZGluZy10b3AgdG8gYSBwc2V1ZG8tZWxlbWVudC5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHBhZGRpbmctdG9wOiAoMSAvICRyYXRpbykgKiAxMDAlO1xuICB9XG5cbn1cblxuJXNjdXQtcmF0aW8tYm94IHtcbiAgQGluY2x1ZGUgc2N1dC1yYXRpby1ib3g7XG59XG5AbWl4aW4gc2N1dC1zaXplKFxuICAkc2l6ZVxuKSB7XG5cbiAgQGlmIGxlbmd0aCgkc2l6ZSkgPT0gMSB7XG4gICAgd2lkdGg6ICAkc2l6ZTtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICB9XG4gIEBlbHNlIGlmIGxlbmd0aCgkc2l6ZSkgPT0gMiB7XG4gICAgd2lkdGg6ICBudGgoJHNpemUsIDEpO1xuICAgIGhlaWdodDogbnRoKCRzaXplLCAyKTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZpeGVkIChcbiAgJGhlaWdodCxcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luLWJvdHRvbTogLSRoZWlnaHQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgI3skd3JhcHBlcn06YWZ0ZXIsXG4gICN7JGZvb3Rlcn0ge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfVxuXG59XG5cbi8vIGRlcHJlY2F0ZWRcbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXIgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pe1xuICBAaW5jbHVkZSBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQoJGhlaWdodCwgJHdyYXBwZXIsICRmb290ZXIpO1xufVxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3Rlci1mbHVpZCAoXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbikge1xuXG4gIGh0bWwsXG4gIGJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gICN7JHdyYXBwZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAjeyRmb290ZXJ9IHtcbiAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgaGVpZ2h0OiAxcHg7XG4gIH1cblxufVxuQG1peGluIHNjdXQtdmNlbnRlci1pYiAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgLy8gVGhlIGlubmVyIGVsZW1lbnQgaXMgdmVydGljYWxseSBjZW50ZXJlZFxuICAvLyBieSBtaWRkbGUtYWxpZ25pbmcgaXQgd2l0aCBhbiBpbmxpbmUgcHNldWRvLWVsZW1lbnRcbiAgLy8gd2hvc2UgaGVpZ2h0IGlzIDEwMCUuXG5cbiAgJjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIC8vIEEgc21hbGwgbmVnYXRpdmUgcmlnaHQgbWFyZ2luIGlzIHNldFxuICAgIC8vIHRvIGFjY291bnQgZm9yIHRoZSBkZWZhdWx0XG4gICAgLy8gd29yZC1zcGFjaW5nIG9mIGlubGluZS1ibG9jay5cbiAgICBtYXJnaW4tcmlnaHQ6IC0wLjI1ZW07XG4gIH1cblxuICAkaW5uZXI6IGlmKGxlbmd0aCgkaW5uZXIpID09IDAsIFwiLnNjdXQtaW5uZXJcIiwgJGlubmVyKTtcbiAgQGVhY2ggJGNlbGwtc2VsZWN0b3IgaW4gJGlubmVyIHtcbiAgICAkY2VsbC1zZWxlY3RvcjogdW5xdW90ZSgkY2VsbC1zZWxlY3Rvcik7XG4gICAgJiA+ICN7JGNlbGwtc2VsZWN0b3J9IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdmNlbnRlci1pYiB7XG4gIEBpbmNsdWRlIHNjdXQtdmNlbnRlci1pYjtcbn1cblxuQG1peGluIHNjdXQtdmNlbnRlci1saCAoXG4gICRoZWlnaHRcbikge1xuXG4gIGhlaWdodDogJGhlaWdodDtcbiAgbGluZS1oZWlnaHQ6ICRoZWlnaHQ7XG5cbn1cbkBtaXhpbiBzY3V0LXZjZW50ZXItdGQgKFxuICAkaW5uZXIuLi5cbikge1xuXG4gIGRpc3BsYXk6IHRhYmxlO1xuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxuICB9XG5cbn1cblxuXG4lc2N1dC12Y2VudGVyLXRkIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXRkO1xufVxuXG4vLyBEZXBlbmRzIG9uIHNjdXQtY2VudGVyLXRyYW5zZm9ybVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLXR0ICgpIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtKHkpO1xufVxuXG4lc2N1dC12Y2VudGVyLXR0IHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLXR0O1xufVxuLy8gc3BhY2VcbiRzY3V0LXNwYWNlOiBcIlxcMDAyMFwiO1xuLy8gbm9uLWJyZWFraW5nIHNwYWNlXG4kc2N1dC1uYnNwOiBcIlxcMDBhMFwiO1xuXG4vLyBxdW90YXRpb24gbWFya1xuJHNjdXQtcXVvdDogXCJcXDAwMjJcIjtcbi8vIGxlZnQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1sc3F1bzogXCJcXDIwMThcIjtcbi8vIHJpZ2h0IHNpbmdsZSBjdXJseSBxdW90ZVxuJHNjdXQtcnNxdW86IFwiXFwyMDE5XCI7XG4vLyBsZWZ0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtbGRxdW86IFwiXFwyMDFDXCI7XG4vLyByaWdodCBkb3VibGUgY3VybHkgcXVvdGVcbiRzY3V0LXJkcXVvOiBcIlxcMjAxRFwiO1xuLy8gbGVmdCBzaW5nbGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxzYXF1bzogXCJcXDIwMzlcIjtcbi8vIHJpZ2h0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtcnNhcXVvOiBcIlxcMjAzQVwiO1xuLy8gbGVmdCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LWxhcXVvOiBcIlxcMDBhYlwiO1xuLy8gcmlnaHQgZG91YmxlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yYXF1bzogXCJcXDAwYmJcIjtcblxuLy8gZW0gZGFzaCAobXV0dG9uKVxuJHNjdXQtbWRhc2g6IFwiXFwyMDE0XCI7XG4vLyBlbiBkYXNoIChudXQpXG4kc2N1dC1uZGFzaDogXCJcXDIwMTNcIjtcbi8vIGh5cGhlblxuJHNjdXQtaHlwaGVuOiBcIlxcMjAxMFwiO1xuXG4vLyBhbXBlcnNhbmRcbiRzY3V0LWFtcDogXCJcXDAwMjZcIjtcbi8vIGdyZWF0ZXIgdGhhblxuJHNjdXQtZ3Q6IFwiXFwwMDNlXCI7XG4vLyBsZXNzIHRoYW5cbiRzY3V0LWx0OiBcIlxcMDAzY1wiO1xuLy8gdGltZXNcbiRzY3V0LXRpbWVzOiBcIlxcMDBEN1wiO1xuLy8gYmlnIHRpbWVzXG4kc2N1dC1iaWd0aW1lczogXCJcXDI3MTVcIjtcbi8vIGNoZWNrbWFya1xuJHNjdXQtY2hlY2ttYXJrOiBcIlxcMjcxM1wiO1xuXG4vLyBzZWN0aW9uIHNpZ24gKGRvdWJsZSBTLCBodXJyaWNhbmUsIHNlY3Rpb25hbCBzeW1ib2wsIHRoZSBsZWdhbCBkb3VnaG51dCwgc2lnbnVtIHNlY3Rpb25pcylcbiRzY3V0LXNlY3Q6IFwiXFwwMGE3XCI7XG4vLyBwYXJhZ3JhcGggc3ltYm9sIChwaWxjcm93KVxuJHNjdXQtcGFyYTogXCJcXDAwYjZcIjtcblxuLy8gbWlkZG90IChpbnRlcnB1bmN0LCBpbnRlcnBvaW50KVxuJHNjdXQtbWlkZG90OiBcIlxcMDBiN1wiO1xuLy8gby1zbGFzaCAoc2xhc2hlZCBvKVxuJHNjdXQtb3NsYXNoOiBcIlxcMDBmOFwiO1xuLy8gYnVsbGV0XG4kc2N1dC1idWxsOiBcIlxcMjAyMlwiO1xuLy8gd2hpdGUgYnVsbGV0XG4kc2N1dC13aGlidWxsOiBcIlxcMjVFNlwiO1xuLy8gaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtaGVsbGlwOiBcIlxcMjAyNlwiO1xuLy8gdmVydGljYWwgZWxsaXBzaXNcbiRzY3V0LXZlbGxpcDogXCJcXDIyRUVcIjtcbi8vIG1pZGxpbmUgaG9yaXpvbnRhbCBlbGxpcHNpc1xuJHNjdXQtbWlkaGVsbGlwOiBcIlxcMjJFRlwiO1xuXG4vLyB1cC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtdXRyaTogXCJcXDI1YjJcIjtcbi8vIGRvd24tcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWR0cmk6IFwiXFwyNWJjXCI7XG4vLyBsZWZ0LXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC1sdHJpOiBcIlxcMjVjMFwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LXJ0cmk6IFwiXFwyNWI2XCI7XG4vLyB1cC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtdXN0cmk6IFwiXFwyNWI0XCI7XG4vLyBkb3duLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC1kc3RyaTogXCJcXDI1YmVcIjtcbi8vIGxlZnQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWxzdHJpOiBcIlxcMjVjMlwiO1xuLy8gcmlnaHQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LXJzdHJpOiBcIlxcMjViOFwiO1xuLy8gZGlhbW9uZFxuJHNjdXQtZGlhbW9uZDogXCJcXDI1YzZcIjtcbi8vIGZpc2hleWVcbiRzY3V0LWZpc2hleWU6IFwiXFwyNWM5XCI7XG4vLyBidWxsc2V5ZVxuJHNjdXQtYnVsbHNleWU6IFwiXFwyNWNlXCI7XG4vLyBjaXJjbGVcbiRzY3V0LWNpcmNsZTogXCJcXDI1Y2ZcIjtcbi8vIHdoaXRlIGNpcmNsZVxuJHNjdXQtd2hpdGVjaXJjbGU6IFwiXFwyNWNiXCI7XG4vLyBzcXVhcmVcbiRzY3V0LXNxdWFyZTogXCJcXDI1YTBcIjtcbi8vIHdoaXRlIHNxdWFyZVxuJHNjdXQtd2hpdGVzcXVhcmU6IFwiXFwyNWExXCI7XG4vLyBzbWFsbCBzcXVhcmVcbiRzY3V0LXNzcXVhcmU6IFwiXFwyNWFhXCI7XG4vLyBzbWFsbCB3aGl0ZSBzcXVhcmVcbiRzY3V0LXN3aGl0ZXNxdWFyZTogXCJcXDI1YWJcIjtcblxuLy8gZ2VuZXJhbCBjdXJyZW5jeVxuJHNjdXQtY3VycmVuY3k6IFwiXFwwMGE0XCI7XG4vLyBjZW50XG4kc2N1dC1jZW50OiBcIlxcMDBhMlwiO1xuLy8gZG9sbGFyXG4kc2N1dC1kb2xsYXI6IFwiXFwwMDI0XCI7XG4vLyBwb3VuZFxuJHNjdXQtcG91bmQ6IFwiXFwwMGEzXCI7XG4vLyBldXJvXG4kc2N1dC1ldXJvOiBcIlxcMjBhY1wiO1xuLy8geWVuXG4kc2N1dC15ZW46IFwiXFwwMGE1XCI7XG4vLyBydXBlZVxuJHNjdXQtcnVwZWU6IFwiXFwyMEI5XCI7XG5AZnVuY3Rpb24gbWFpbi1zcmMoJGZvcm1hdHMsICRmaWxlLXBhdGgsICRmb250LWZhbWlseSkge1xuICAvLyBSZXR1cm4gdGhlIGxpc3Qgb2YgYHNyY2AgdmFsdWVzLCBpbiBvcmRlciwgdGhhdFxuICAvLyBhIGdvb2QgYEBmb250LWZhY2VgIHdpbGwgbmVlZCwgaW5jbHVkaW5nIG9ubHlcbiAgLy8gdGhvc2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gdGhlIGxpc3QgYCRmb3JtYXRzYC5cbiAgJHJlc3VsdDogKCk7XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgJGVvdC12YWw6IHVybCgnI3skZmlsZS1wYXRofS5lb3Q/I2llZml4JykgZm9ybWF0KCdlbWJlZGRlZC1vcGVudHlwZScpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkZW90LXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZjIpIHtcbiAgICAkd29mZjItdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0ud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmMi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHdvZmYpIHtcbiAgICAkd29mZi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR3b2ZmLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgdHRmKSB7XG4gICAgJHR0Zi12YWw6IHVybCgnI3skZmlsZS1wYXRofS50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICR0dGYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBzdmcpIHtcbiAgICAkc3ZnLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnN2ZyMjeyRmb250LWZhbWlseX0nKSBmb3JtYXQoJ3N2ZycpO1xuICAgICRyZXN1bHQ6IGFwcGVuZCgkcmVzdWx0LCAkc3ZnLXZhbCwgY29tbWEpO1xuICB9XG4gIEByZXR1cm4gJHJlc3VsdDtcbn1cblxuQG1peGluIHNjdXQtZm9udC1mYWNlIChcbiAgJGZvbnQtZmFtaWx5LFxuICAkZmlsZS1wYXRoLFxuICAkd2VpZ2h0OiBub3JtYWwsXG4gICRzdHlsZTogbm9ybWFsLFxuICAkZm9ybWF0czogZW90IHdvZmYyIHdvZmYgdHRmIHN2Z1xuKSB7XG5cbiAgQGlmIGluZGV4KCdpdGFsaWMnICdvYmxpcXVlJywgJHdlaWdodCkge1xuICAgICRzdHlsZTogJHdlaWdodDtcbiAgICAkd2VpZ2h0OiBub3JtYWw7XG4gIH1cblxuICBAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5O1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcblxuICAgIEBpZiBpbmRleCgkZm9ybWF0cywgZW90KSB7XG4gICAgICBzcmM6IHVybCgnI3skZmlsZS1wYXRofS5lb3QnKTtcbiAgICB9XG4gICAgc3JjOiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KTtcbiAgfVxuXG59XG5cbkBtaXhpbiBzY3V0LWhhbmdpbmctaW5kZW50IChcbiAgJGluZGVudDogMWVtXG4pIHtcblxuICAvLyBwYWRkaW5nLWxlZnQgY3JlYXRlcyB0aGUgaW5kZW50LFxuICAvLyB3aGlsZSB0ZXh0LWluZGVudCBwdWxscyB0aGUgZmlyc3QgbGluZVxuICAvLyBiYWNrIHRvIHRoZSBlZGdlLlxuXG4gIHBhZGRpbmctbGVmdDogJGluZGVudDtcbiAgdGV4dC1pbmRlbnQ6IC0kaW5kZW50O1xuXG59XG5cbiVzY3V0LWhhbmdpbmctaW5kZW50IHtcbiAgQGluY2x1ZGUgc2N1dC1oYW5naW5nLWluZGVudDtcbn1cbkBtaXhpbiBzY3V0LWluZGVudGVkLXBzIChcbiAgJGluZGVudDogMS41ZW0sXG4gICRuby1maXJzdC1pbmRlbnQ6IHRydWVcbikge1xuXG4gIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICB0ZXh0LWluZGVudDogJGluZGVudDtcbiAgfVxuXG4gIEBpZiAkbm8tZmlyc3QtaW5kZW50IHtcbiAgICBwOmZpcnN0LW9mLXR5cGUge1xuICAgICAgdGV4dC1pbmRlbnQ6IDA7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtaW5kZW50ZWQtcHMge1xuICBAaW5jbHVkZSBzY3V0LWluZGVudGVkLXBzO1xufVxuQG1peGluIHNjdXQta2V5LXZhbCAoXG4gICRkaXZpZGVyOiBcIjpcIixcbiAgJHBhZDogMC4yNWVtLFxuICAkaW5kZW50OiAxZW0sXG4gICRzcGFjaW5nOiAwLFxuICAkcGFkLWxlZnQ6IDBcbikge1xuXG4gICYgPiBkdCB7XG4gICAgY2xlYXI6IGJvdGg7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIG1hcmdpbi1yaWdodDogJHBhZDtcbiAgICAgIEBpZiAkcGFkLWxlZnQgIT0gMCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkcGFkLWxlZnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJiA+IGRkIHtcbiAgICBtYXJnaW4tbGVmdDogJGluZGVudDtcbiAgICBAaWYgJHNwYWNpbmcgIT0gMCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1rZXktdmFsIHtcbiAgQGluY2x1ZGUgc2N1dC1rZXktdmFsO1xufVxuQG1peGluIHNjdXQtbGluay1iYiAoXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHdpZHRoOiAxcHhcbikge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICBib3JkZXItYm90dG9tLXdpZHRoOiAkd2lkdGg7XG4gIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gIH1cblxufVxuXG4lc2N1dC1saW5rLWJiIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLWJiO1xufVxuLy8gU0NVVCBMSU5LIFVOU1RZTEVEXG4vLyBodHRwOi8vZGF2aWR0aGVjbGFyay5naXRodWIuaW8vc2N1dC8jbGluay11bnN0eWxlZFxuXG5AbWl4aW4gc2N1dC1saW5rLXVuc3R5bGVkKCkge1xuXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IGluaGVyaXQ7XG5cbn1cblxuJXNjdXQtbGluay11bnN0eWxlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGluay11bnN0eWxlZCgpO1xufVxuXG5AbWl4aW4gc2N1dC1yZXZlcnNlLWl0YWxpY3MgKFxuICAkZWxlbWVudHM6IG51bGxcbikge1xuXG4gICRlbGVtZW50LWxpc3Q6IGVtLCBjaXRlLCBpO1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICN7am9pbigkZWxlbWVudC1saXN0LCAkZWxlbWVudHMpfSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICB9XG5cbn1cblxuJXNjdXQtcmV2ZXJzZS1pdGFsaWNzIHtcbiAgQGluY2x1ZGUgc2N1dC1yZXZlcnNlLWl0YWxpY3M7XG59XG5cbkBtaXhpbiBzY3V0LXNpZGUtbGluZWQgKFxuICAkaGVpZ2h0OiAxcHgsXG4gICRzcGFjZTogMC41ZW0sXG4gICRjb2xvcjogaW5oZXJpdCxcbiAgJHN0eWxlOiBzb2xpZCxcbiAgJHYtYWRqdXN0OiBmYWxzZSxcbiAgJGRvdWJsZTogZmFsc2Vcbikge1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgJjpiZWZvcmUsXG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiA1MCU7XG5cbiAgICBib3JkZXItdG9wLXN0eWxlOiAkc3R5bGU7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogJGhlaWdodDtcblxuICAgIEBpZiAkY29sb3IgIT0gaW5oZXJpdCB7XG4gICAgICBib3JkZXItdG9wLWNvbG9yOiAkY29sb3I7XG4gICAgfVxuXG4gICAgQGlmICR2LWFkanVzdCAhPSBmYWxzZSB7XG4gICAgICBib3R0b206ICR2LWFkanVzdDtcbiAgICB9XG5cbiAgICBAaWYgJGRvdWJsZSAhPSBmYWxzZSB7XG4gICAgICBoZWlnaHQ6ICRkb3VibGU7XG4gICAgICBib3JkZXItYm90dG9tLXN0eWxlOiAkc3R5bGU7XG4gICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAkaGVpZ2h0O1xuICAgICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICY6YmVmb3JlIHtcbiAgICByaWdodDogJHNwYWNlO1xuICAgIG1hcmdpbi1sZWZ0OiAtNTAlO1xuICB9XG4gICY6YWZ0ZXIge1xuICAgIGxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6IC01MCU7XG4gIH1cblxufVxuXG4lc2N1dC1zaWRlLWxpbmVkIHtcbiAgQGluY2x1ZGUgc2N1dC1zaWRlLWxpbmVkO1xufVxuQG1peGluIHNjdXQtdHJ1bmNhdGUge1xuXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuXG59XG5cbiVzY3V0LXRydW5jYXRlIHtcbiAgQGluY2x1ZGUgc2N1dC10cnVuY2F0ZTtcbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRvb2xraXQgU2V0dGluZ3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BsYWNlaG9sZGVyc1wiO1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEltcG9ydHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGltcG9ydCBcInRvb2xraXQvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NvbG9yc1wiO1xuQGltcG9ydCBcInRvb2xraXQvZm9udHNcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2ludHJpbnNpYy1yYXRpb1wiO1xuQGltcG9ydCBcInRvb2xraXQvbmVzdGVkLWNvbnRleHRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3BhcmFsbGF4XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9ydGxcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3RhcmdldFwiO1xuQGltcG9ydCBcInRvb2xraXQvdHJpYW5nbGVcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L2NlbnRlclwiO1xuQGltcG9ydCBcInRvb2xraXQvdmlld3BvcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3VuZGVybGluZVwiO1xuQGltcG9ydCBcInRvb2xraXQvYXJ0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC9zZXQtbXVsdGlwbGVcIjtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4kVG9vbGtpdC1TZXR0aW5nczogKFxuICAnY2xlYXJmaXggZXh0ZW5kJzogZmFsc2UsXG4gICdjb2xvciBzdGFjayBhbW91bnRzJzogMjUlIDUwJSA3NSUgODUlIDkwJSxcbiAgJ3RpbnQgc2hhZGUgYW1vdW50cyc6IDc1JSA1MCUgMjUlLFxuICAndGludCBjb2xvcic6ICNmZmYsXG4gICdzaGFkZSBjb2xvcic6ICMwMDAsXG4gICdjb2xvciBzY2FsZSBzdGVwcyc6IDYsXG4gICdsaWdhdHVyZSBleHRlbmQnOiBmYWxzZSxcbiAgJ2ZvbnQgZmFjZSB3ZWlnaHQnOiBub3JtYWwsXG4gICdmb250IGZhY2Ugc3R5bGUnOiBub3JtYWwsXG4gICdmb250IGZhY2UgaW5saW5lIHdvZmYnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBleHRlbmQnOiBmYWxzZSxcbiAgJ2ljb24gZm9udCBzcGVhayc6IGZhbHNlLFxuICAnZmFkZSBpbiBkdXJhdGlvbic6IDFzLFxuICAnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJzogJy53Zi1sb2FkaW5nJyxcbiAgJ2ZhZGUgaW4gZXh0ZW5kJzogZmFsc2UsXG4gICdpbnRyaW5zaWMgcmF0aW8nOiAxNi85LFxuICAnaW50cmluc2ljIHJhdGlvIHdpZHRoJzogMTAwJSxcbiAgJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cyc6ICc+IConLFxuICAnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJzogdG9wLFxuICAnaW50cmluc2ljIHJhdGlvIGV4dGVuZCc6IGZhbHNlLFxuICAnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnOiAxMDAlLFxuICAnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nOiBsZWZ0LFxuICAndHJpYW5nbGUgY29sb3InOiAjMDAwLFxuICAndHJpYW5nbGUgaGVpZ2h0JzogMWVtLFxuICAndHJpYW5nbGUgd2lkdGgnOiAxZW0sXG4gICd0cmlhbmdsZSBhbmdsZSc6IDAsXG4gICdwYXJhbGxheCBwZXJzcGVjdGl2ZSc6IDEsXG4gICdwYXJhbGxheCBlbGVtZW50JzogJ2JvZHknLFxuICAncGFyYWxsYXggaW9zJzogdHJ1ZSxcbiAgJ3BhcmFsbGF4IGRpc3RhbmNlJzogMCxcbiAgJ3ZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAndmVydGljYWwgZXh0ZW5kJzogZmFsc2UsXG4gICdob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JzogNTAlLFxuICAnaG9yaXpvbnRhbCBmaXhlZCc6IGZhbHNlLFxuICAnaG9yaXpvbnRhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JzogMCUsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQgaG9yaXpvbnRhbCBtaWRwb2ludCc6IDUwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCc6IGZhbHNlLFxuICAndW5kZXJsaW5lIGJhY2tncm91bmQnOiAjZmZmLFxuICAndW5kZXJsaW5lIGNvbG9yJzogIzAwZSxcbiAgJ3VuZGVybGluZSBjbGVhciBkZXNjZW5kZXJzJzogdHJ1ZSxcbiAgJ3VuZGVybGluZSBkaXN0YW5jZSc6IDEsXG4gICd1bmRlcmxpbmUgd2lkdGgnOiAyLFxuICAndW5kZXJsaW5lIGV4dGVuZCc6IGZhbHNlLFxuICAnYXJ0IHBpeGVsIHNpemUnOiAxcHgsXG4gICdhcnQgY29sb3InOiBibGFjayxcbiAgJ2FydCBib3JkZXIgcmFkaXVzJzogMCVcbik7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTmV3IFNldHRpbmdzIG1vZHVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBHbG9iYWxcbiRHbG9iYWxTZXR0aW5nczogJFRvb2xraXQtU2V0dGluZ3MgIWRlZmF1bHQ7XG4vLyBVc2VyXG4kVXNlclNldHRpbmdzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBVc2VyIFNldHRpbmcgRXhpc3RzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gIEBpZiBtYXAtaGFzLWtleSgkVXNlclNldHRpbmdzLCAkc2V0dGluZykge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gdXNlci1zZXR0aW5nLWV4aXN0cy1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJFJldHVybjogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICRSZXR1cm47XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtaGFzKCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gdXNlci1zZXR0aW5nLWV4aXN0cygkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBHZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctZ2V0KCRzZXR0aW5nKSB7XG4gIEBpZiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBtYXAtZ2V0KCRHbG9iYWxTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWdldC1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHZhbHVlczogKCk7XG4gIEBlYWNoICRzZXR0aW5nIGluICRzZXR0aW5ncyB7XG4gICAgJHZhbHVlczogbWFwLW1lcmdlKCR2YWx1ZXMsICgkc2V0dGluZzogc2V0dGluZy1nZXQoJHNldHRpbmcpKSk7XG4gIH1cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LWdldCgkc2V0dGluZykge1xuICBAcmV0dXJuIHNldHRpbmctZ2V0KCRzZXR0aW5nKTtcbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmdzIFNldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgKCRzZXR0aW5nOiAkdmFsdWUpKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJFVzZXJTZXR0aW5nczogbWFwLW1lcmdlKCRVc2VyU2V0dGluZ3MsICRzZXR0aW5ncykgIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICAkc2V0dGluZy1zZXR0ZXI6IHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZSgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKSAhZ2xvYmFsO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jaGFuZ2UtbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQHJldHVybiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFJlbW92ZSBTZXR0aW5nXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRSZXR1cm46ICgpO1xuXG4gIEBlYWNoICRLZXksICRWYWx1ZSBpbiAkVXNlclNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBpZigkc2V0dGluZyA9PSAkS2V5LCAkUmV0dXJuLCBtYXAtbWVyZ2UoJFJldHVybiwgKCRLZXk6ICRWYWx1ZSkpKTtcbiAgfVxuXG4gICRVc2VyU2V0dGluZ3M6ICRSZXR1cm4gIWdsb2JhbDtcbiAgQHJldHVybiB0cnVlO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkY2xlYXItdGhlLXNldHRpbmdzOiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbiAgfVxuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkVXNlclNldHRpbmdzOiAoKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKSB7XG4gICRzZXR0aW5nLWNsZWFyZXI6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MuLi4pIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhci1tdWx0aXBsZSgkc2V0dGluZ3MpO1xufVxuXG5AbWl4aW4gc2V0dGluZy1yZXNldCgpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1yZXNldCgpO1xufVxuXG4vLyBUb29sa2l0IFZlcnNpb25cbkBmdW5jdGlvbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiB0b29sa2l0LXJlc2V0KCRzZXR0aW5nKSB7XG4gIEBpbmNsdWRlIHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFNldHRpbmcgUGlja1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrKCRzZXR0aW5nLCAkaW5wdXQpIHtcbiAgQHJldHVybiBpZigkaW5wdXQgIT0gbnVsbCwgJGlucHV0LCBzZXR0aW5nLWdldCgkc2V0dGluZykpO1xufVxuXG5AZnVuY3Rpb24gc2V0dGluZy1waWNrLW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcsICRpbnB1dCBpbiAkc2V0dGluZ3Mge1xuICAgICRSZXR1cm46IG1hcC1tZXJnZSgkUmV0dXJuLCAoJHNldHRpbmc6IHNldHRpbmctcGljaygkaW5wdXQsICRzZXR0aW5nKSkpO1xuICB9XG5cbiAgQHJldHVybiAkUmV0dXJuO1xufSIsIiRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiAoKSAhZGVmYXVsdDtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBQbGFjZWhvbGRlciBHZXQvU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLXNldCgkaWQpIHtcbiAgJHVuaXF1ZS1pZDogdW5pcXVlLWlkKCk7XG4gICRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzOiBtYXAtbWVyZ2UoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICgkaWQ6ICR1bmlxdWUtaWQpKSAhZ2xvYmFsO1xuICBAcmV0dXJuICR1bmlxdWUtaWQ7XG59XG5cbkBmdW5jdGlvbiB0b29sa2l0LXBsYWNlaG9sZGVyLWdldCgkaWQpIHtcbiAgQHJldHVybiBtYXAtZ2V0KCRQcml2YXRlLVRvb2xraXQtUGxhY2Vob2xkZXJzLCAkaWQpO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdlbmVyYXRlIFBsYWNlaG9sZGVyIENsYXNzIGFuZCBFeHRlbmRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCk7XG5cbiAgQGlmICRwbGFjZWhvbGRlci1pZCA9PSBudWxsIHtcbiAgICAkcGxhY2Vob2xkZXItaWQ6IHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCk7XG4gICAgQGF0LXJvb3QgJSN7JHBsYWNlaG9sZGVyLWlkfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGV4dGVuZCAlI3skcGxhY2Vob2xkZXItaWR9O1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFN0YXRpYyBNaXhpbiBIZWxwZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIG1peGluLWRyeWVyKCRpZCwgJGV4dGVuZDogdHJ1ZSkge1xuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgkaWQpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTW9kZXJuIENsZWFyZml4IE1peGluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjbGVhcmZpeCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2NsZWFyZml4IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY2xlYXJmaXgnKSB7XG4gICAgICBAaW5jbHVkZSBjbGVhcmZpeChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgIGNsZWFyOiBib3RoO1xuICAgIH1cbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29tcGFzcyBFeHRlbnNpb24gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVGludCBhbmQgU2hhZGVcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkYW1vdW50KSB7XG4gIEByZXR1cm4gbWl4KHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRjb2xvciwgJGFtb3VudCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gTHVtYVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gbHVtYSgkY29sb3IpIHtcbiAgQHJldHVybiAocmVkKCRjb2xvcikgKiAuMjk5KSArIChncmVlbigkY29sb3IpICogLjU4NykgKyAoYmx1ZSgkY29sb3IpICogLjExNCk7XG59XG5cbkBmdW5jdGlvbiBsdW1hLWd0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpID49IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1sdGUoJGNvbG9yMSwgJGNvbG9yMikge1xuICBAaWYgbHVtYSgkY29sb3IxKSA8PSBsdW1hKCRjb2xvcjIpIHtcbiAgICBAcmV0dXJuIHRydWU7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIGx1bWEtZGlmZigkY29sb3IxLCAkY29sb3IyKSB7XG4gIEByZXR1cm4gbHVtYSgkY29sb3IxKSAtIGx1bWEoJGNvbG9yMik7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQ29sb3IgU3RhY2tzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBjb2xvci1zdGFjaygkbWFpbiwgJHNlY29uZGFyeSwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPT0gMCB7XG4gICAgJGFtb3VudHM6IHRvb2xraXQtZ2V0KCdjb2xvciBzdGFjayBhbW91bnRzJyk7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAxIHtcbiAgICAkYW1vdW50czogbnRoKCRhbW91bnRzLCAxKTtcbiAgfVxuXG4gICRzdGFjazogJG1haW47XG5cbiAgQGVhY2ggJGFtb3VudCBpbiAkYW1vdW50cyB7XG4gICAgJHN0YWNrOiBqb2luKCRzdGFjaywgbWl4KCRzZWNvbmRhcnksIG50aCgkc3RhY2ssIDEpLCAkYW1vdW50KSk7XG4gIH1cblxuICBAcmV0dXJuICRzdGFjaztcbn1cblxuLy8gVGludCBTdGFja1xuQGZ1bmN0aW9uIHRpbnQtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpLCAkYW1vdW50cyk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgndGludCBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBTaGFkZSBTdGFja1xuQGZ1bmN0aW9uIHNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgQGlmIGxlbmd0aCgkYW1vdW50cykgPiAwIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCdzaGFkZSBjb2xvcicpKTtcbiAgfVxufVxuXG4vLyBUaW50L1NoYWRlIFN0YWNrXG5AZnVuY3Rpb24gdGludC1zaGFkZS1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gICRjb2xvcnM6ICgpO1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ3RpbnQgc2hhZGUgYW1vdW50cycpO1xuICB9XG4gICRsZW5ndGg6IGxlbmd0aCgkYW1vdW50cyk7XG5cbiAgLy8gU2hhZGVzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggJGxlbmd0aCB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHNoYWRlKCRjb2xvciwgbnRoKCRhbW91bnRzLCAkaSkpKTtcbiAgfVxuXG4gIC8vIEJhc2VcbiAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsICRjb2xvcik7XG5cbiAgLy8gVGludHNcbiAgQGZvciAkaSBmcm9tIDAgdGhyb3VnaCAkbGVuZ3RoIC0gMSB7XG4gICAgJGNvbG9yczogYXBwZW5kKCRjb2xvcnMsIHRpbnQoJGNvbG9yLCBudGgoJGFtb3VudHMsICRsZW5ndGggLSAkaSkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJGNvbG9ycztcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTY2FsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXNjYWxlKCRtYWluLCAkc2Vjb25kYXJ5LCAkc3RlcHM6IG51bGwpIHtcbiAgJHN0ZXBzOiBpZigkc3RlcHMgIT0gbnVsbCwgJHN0ZXBzLCB0b29sa2l0LWdldCgnY29sb3Igc2NhbGUgc3RlcHMnKSk7XG5cbiAgJGxpc3Q6ICRtYWluO1xuXG4gICRyZWQxOiByZWQoJG1haW4pO1xuICAkcmVkMjogcmVkKCRzZWNvbmRhcnkpO1xuICAkcmVkLWRpZmY6ICgoJHJlZDEgLSAkcmVkMikgLyAoKCRzdGVwcyAtIDEpKSk7XG5cbiAgJGh1ZTE6IGh1ZSgkbWFpbik7XG4gICRodWUyOiBodWUoJHNlY29uZGFyeSk7XG4gIEBpZiAoJGh1ZTIgKyAzNTkgLSAkaHVlMSkgPCBhYnMoJGh1ZTEgLSAkaHVlMikge1xuICAgICRodWUyOiAkaHVlMiArIDM1OTtcbiAgfVxuICAkaHVlLWRpZmY6ICgkaHVlMiAtICRodWUxKSAvICgkc3RlcHMgLSAxKTtcblxuICAkc2F0MTogc2F0dXJhdGlvbigkbWFpbik7XG4gICRzYXQyOiBzYXR1cmF0aW9uKCRzZWNvbmRhcnkpO1xuICAkc2F0LWRpZmY6IDA7XG4gIEBpZiAkc2F0MSA+ICRzYXQyIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MiAtICRzYXQxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJHNhdC1kaWZmOiAoJHNhdDEgLSAkc2F0MikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkbHRlMTogbGlnaHRuZXNzKCRtYWluKTtcbiAgJGx0ZTI6IGxpZ2h0bmVzcygkc2Vjb25kYXJ5KTtcbiAgJGx0ZS1kaWZmOiAwO1xuICBAaWYgJGx0ZTEgPiAkbHRlMiB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTIgLSAkbHRlMSkgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRsdGUtZGlmZjogKCRsdGUxIC0gJGx0ZTIpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG5cbiAgJGFscDE6IGFscGhhKCRtYWluKTtcbiAgJGFscDI6IGFscGhhKCRzZWNvbmRhcnkpO1xuICAkYWxwLWRpZmY6IDA7XG4gIEBpZiAkYWxwMSA+ICRhbHAyIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMiAtICRhbHAxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGFscC1kaWZmOiAoJGFscDEgLSAkYWxwMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkaHVlLWhvbGQ6ICRodWUxO1xuICAkc2F0LWhvbGQ6ICRzYXQxO1xuICAkbHRlLWhvbGQ6ICRsdGUxO1xuICAkYWxwLWhvbGQ6ICRhbHAxO1xuICAkY29sb3ItaG9sZDogMDtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoICRzdGVwcyB7XG4gICAgJGh1ZS1ob2xkOiAkaHVlLWhvbGQgKyAkaHVlLWRpZmY7XG4gICAgJHNhdC1ob2xkOiAkc2F0LWhvbGQgKyAkc2F0LWRpZmY7XG4gICAgJGx0ZS1ob2xkOiAkbHRlLWhvbGQgKyAkbHRlLWRpZmY7XG4gICAgJGFscC1ob2xkOiAkYWxwLWhvbGQgKyAkYWxwLWRpZmY7XG5cbiAgICAkY29sb3ItaG9sZDogaHNsYSgkaHVlLWhvbGQsICRzYXQtaG9sZCwgJGx0ZS1ob2xkLCAkYWxwLWhvbGQpO1xuICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRjb2xvci1ob2xkKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG5cbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRW5hYmxlIGxpZ2F0dXJlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZW5hYmxlLWxpZ2F0dXJlcygkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2xpZ2F0dXJlIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2VuYWJsZSBsaWdhdHVyZXMnKSB7XG4gICAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhPTEsIGRsaWc9MVwiO1xuICAgIC1tb3otZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIC1tcy1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW8tZm9udC1mZWF0dXJlLXNldHRpbmdzOlwibGlnYVwiLFwiZGxpZ1wiO1xuICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJsaWdhXCIsXCJkbGlnXCI7XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGb250IEZhY2Vcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGZvbnQtZmFjZSgkbmFtZSwgJGZpbGVzLCAkd2VpZ2h0OiBudWxsLCAkc3R5bGU6IG51bGwsICRpbmxpbmUtd29mZjogbnVsbCkge1xuICAkd2VpZ2h0OiBpZigkd2VpZ2h0ICE9IG51bGwsICR3ZWlnaHQsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugd2VpZ2h0JykpO1xuICAkc3R5bGU6IGlmKCRzdHlsZSAhPSBudWxsLCAkc3R5bGUsIHRvb2xraXQtZ2V0KCdmb250IGZhY2Ugc3R5bGUnKSk7XG4gICRpbmxpbmUtd29mZjogaWYoJGlubGluZS13b2ZmICE9IG51bGwsICRpbmxpbmUtd29mZiwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZicpKTtcblxuICAkZm9udC1zdGFjazogKCk7XG4gICRmb250LXNyYzogJyc7XG4gICRlb3Q6IGZhbHNlO1xuICAkZm9udC1leHRlbnNpb25zOiAoJ2VvdCc6ICdlbWJlZGRlZC1vcGVudHlwZScsICd3b2ZmMic6ICd3b2ZmMicsICd3b2ZmJzogJ3dvZmYnLCAndHRmJzogJ3RydWV0eXBlJywgJ3N2Zyc6ICdzdmcnKTtcblxuICBAZWFjaCAkZXh0LCAkZm9ybWF0IGluICRmb250LWV4dGVuc2lvbnMge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkZmlsZXMsICRleHQpIHtcbiAgICAgIEBpZiBmdW5jdGlvbi1leGlzdHMoaW5saW5lLWZvbnQtZmlsZXMpIGFuZCAkaW5saW5lLXdvZmYgPT0gdHJ1ZSBhbmQgKCRleHQgPT0gJ3dvZmYnIG9yICRleHQgPT0gJ3dvZmYyJykge1xuICAgICAgICAkZm9udC1zcmM6IGlubGluZS1mb250LWZpbGVzKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSk7XG4gICAgICB9XG4gICAgICBAZWxzZSBpZiBmdW5jdGlvbi1leGlzdHMoZm9udC11cmwpIHtcbiAgICAgICAgJGZvbnQtc3JjOiBmb250LXVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSArICcjaWVmaXgnKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpKSBmb3JtYXQoJGZvcm1hdCk7XG4gICAgICAgIEBpZiAkZXh0ID09ICdlb3QnIHtcbiAgICAgICAgICAkZW90OiAkZm9udC1zcmM7XG4gICAgICAgICAgJGZvbnQtc3JjOiB1cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGZvbnQtc3RhY2s6IGFwcGVuZCgkZm9udC1zdGFjaywgJGZvbnQtc3JjLCAnY29tbWEnKTtcbiAgICB9XG5cbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkbmFtZTtcbiAgICBmb250LXdlaWdodDogJHdlaWdodDtcbiAgICBmb250LXN0eWxlOiAkc3R5bGU7XG4gICAgQGlmICRlb3Qge1xuICAgICAgc3JjOiAkZW90O1xuICAgIH1cbiAgICBAaWYgbGVuZ3RoKCRmb250LXN0YWNrKSA+IDAge1xuICAgICAgc3JjOiAkZm9udC1zdGFjaztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBJY29uIEZvbnRcbi8vIEZyb20gaHR0cDovL2ljb21vb24uaW9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGljb24tZm9udCgkZm9udC1zdGFjaywgJHNwZWFrOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRzcGVhazogaWYoJHNwZWFrICE9IG51bGwsICRzcGVhaywgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBzcGVhaycpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBmb250LWZhbWlseTogJGZvbnQtc3RhY2s7XG4gIEBpZiAkc3BlYWsgPT0gZmFsc2Uge1xuICAgIHNwZWFrOiBub25lO1xuICB9XG4gIEBpbmNsdWRlIGljb24tZm9udC0tY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIGljb24tZm9udC0tY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ljb24gZm9udCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQgIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaWNvbiBmb250IGNvcmUnKSB7XG4gICAgICBAaW5jbHVkZSBpY29uLWZvbnQtLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgZm9udC12YXJpYW50OiBub3JtYWw7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG5cbiAgICBAaW5jbHVkZSBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQpO1xuXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFkZSBJblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gY29udGVudC1mYWRlLWluKCRkdXJhdGlvbjogbnVsbCwgJGxvYWRpbmc6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGR1cmF0aW9uOiBpZigkZHVyYXRpb24gIT0gbnVsbCwgJGR1cmF0aW9uLCB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpKTtcbiAgJGxvYWRpbmc6IGlmKCRsb2FkaW5nICE9IG51bGwsICRsb2FkaW5nLCB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCA9PSB0cnVlIGFuZCAkZHVyYXRpb24gPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZHVyYXRpb24nKSBhbmQgJGxvYWRpbmcgPT0gdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gbG9hZGluZyBjbGFzcycpIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnY29udGVudCBmYWRlIGluJykge1xuICAgICAgQGluY2x1ZGUgY29udGVudC1mYWRlLWluKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgQGlmIG5vdCBtaXhpbi1leGlzdHMoJ3NpbmdsZS10cmFuc2l0aW9uJykge1xuICAgICAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5ICRkdXJhdGlvbjtcbiAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBzaW5nbGUtdHJhbnNpdGlvbihvcGFjaXR5ICRkdXJhdGlvbik7XG4gICAgfVxuXG4gICAgI3skbG9hZGluZ30gJiB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBGbHVpZCBFbWJlZHMgYW5kIHdoYXRldmVyIFdJVEggTk8gSkFWQVNDSVBUIVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaW50cmluc2ljLXJhdGlvLXBhcmVudCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gcGFyZW50Jykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXBhcmVudChmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnaW50cmluc2ljIHJhdGlvIGNoaWxkJykge1xuICAgICAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgLy8gTnVrZSB0aGUgZXh0ZXJuYWwgc3R5bGVzXG4gICAgdG9wOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkcmF0aW86IGlmKCRyYXRpbyAhPSBudWxsLCAkcmF0aW8sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8nKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyB3aWR0aCcpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuXG4gIHBhZGRpbmctI3skcG9zaXRpb259OiAoMSAvICRyYXRpbykgKiAkd2lkdGg7XG4gIHdpZHRoOiAkd2lkdGg7XG59XG5cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkZWxlbWVudHM6IGlmKCRlbGVtZW50cyAhPSBudWxsLCAkZWxlbWVudHMsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZWxlbWVudHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBwb3NpdGlvbicpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW8sICR3aWR0aCwgJHBvc2l0aW9uKTtcblxuICBAZWFjaCAkZWxlbWVudCBpbiAkZWxlbWVudHMge1xuICAgICN7JGVsZW1lbnR9IHtcbiAgICBcdEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGlyKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkZWxlbWVudHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRlbGVtZW50cywgJGV4dGVuZCwgJHBvc2l0aW9uKTtcbn1cblxuQG1peGluIGlyLXJhdGlvKCRyYXRpbzogbnVsbCwgJHdpZHRoOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xufSIsIi8vIHNpbXBsZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb250ZXh0IG9mIGEgbmVzdGVkIHBlcmNlbnRhZ2UuXG5AZnVuY3Rpb24gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsKSB7XG4gICRjb250ZXh0czogaWYoJGNvbnRleHRzICE9IG51bGwsICRjb250ZXh0cywgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IGNvbnRleHRzJykpO1xuXG4gIC8vIEZpcnN0IGxldmVsIGRlZXAgaXMgYWx3YXlzIDEwMCVcbiAgJHBlcmNlbnRhZ2U6IDEwMCU7XG5cbiAgLy8gTG9vcCB0aHJvdWdoIGVhY2ggbGV2ZWxcbiAgQGVhY2ggJGNvbnRleHQgaW4gJGNvbnRleHRzIHtcbiAgICAvLyBJbnZlcnQgdGhlIHBlcmNlbnRhZ2UgdG8gZmluZCBjb250ZXh0XG4gICAgJHBlcmNlbnRhZ2U6IHBlcmNlbnRhZ2UoJHBlcmNlbnRhZ2UgLyAkY29udGV4dCk7XG4gIH1cbiAgLy8gUmV0dXJuIGZpbmFsIHBlcmNlbnRhZ2VcbiAgQHJldHVybiAkcGVyY2VudGFnZTtcbn1cblxuLy8gbWl4aW4gdG8gbWFrZSB0aGluZ3MgZWFzaWVyXG5AbWl4aW4gbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzOiBudWxsLCAkcG9zaXRpb246IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG4gICRwb3NpdGlvbjogaWYoJHBvc2l0aW9uICE9IG51bGwsICRwb3NpdGlvbiwgdG9vbGtpdC1nZXQoJ25lc3RlZCBjb250ZXh0IHBvc2l0aW9uJykpO1xuXG4gIHdpZHRoOiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpO1xuICBAaWYgJHBvc2l0aW9uID09IFwiY2VudGVyXCIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtLjU7XG4gIH1cbiAgQGlmICRwb3NpdGlvbiA9PSBcInJpZ2h0XCIge1xuICAgIG1hcmdpbi1sZWZ0OiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHMpICogLTEgKyAxMDAlO1xuICB9XG59IiwiLy8gTWFnaWMgcGFyYWxsYXggbWl4aW5zXG5AbWl4aW4gcGFyYWxsYXgtaW5pdCgkcGVyc3BlY3RpdmU6IG51bGwsICRlbGVtZW50OiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG5cbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRlbGVtZW50OiBpZigkZWxlbWVudCAhPSBudWxsLCAkZWxlbWVudCwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGVsZW1lbnQnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBAaWYgJGVsZW1lbnQgPT0gJ2JvZHknIHtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBodG1sLCBib2R5IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgfVxuICAgICAgYm9keSB7XG4gICAgICAgIEBpbmNsdWRlIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmUsICRwYXJhbGxheC1pb3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRlbGVtZW50ID09IHRoaXMge1xuICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBhdC1yb290ICN7JGVsZW1lbnR9IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlOiBudWxsLCAkcGFyYWxsYXgtaW9zOiBudWxsKSB7XG4gICRwZXJzcGVjdGl2ZTogaWYoJHBlcnNwZWN0aXZlICE9IG51bGwsICRwZXJzcGVjdGl2ZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJykpO1xuICAkcGFyYWxsYXgtaW9zOiBpZigkcGFyYWxsYXgtaW9zICE9IG51bGwsICRwYXJhbGxheC1pb3MsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBpb3MnKSk7XG5cbiAgb3ZlcmZsb3c6IGF1dG87XG4gIEBpZiBtaXhpbi1leGlzdHMocGVyc3BlY3RpdmUpIHtcbiAgICBAaW5jbHVkZSBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUgKiAxcHgpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LXBlcnNwZWN0aXZlOiAkcGVyc3BlY3RpdmUgKiAxcHg7XG4gICAgcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgfVxuICAvLyBBbGxvd3MgZm9yIHNtb290aCBzY3JvbGxpbmcgYnV0IGRpc2FibGVzIHBhcmFsbGF4IGVmZmVjdHMuXG4gIEBpZiAkcGFyYWxsYXgtaW9zID09IGZhbHNlIHtcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG4gIH1cbiAgLy8gTWFrZSBzdXJlIDNEIHBlcnNwZWN0aXZlIGlzIHByZXNlcnZlZFxuICAmLCAmICoge1xuICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtLXN0eWxlKSB7XG4gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUocHJlc2VydmUtM2QpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gcGFyYWxsYXgoJGRpc3RhbmNlOiBudWxsLCAkcGVyc3BlY3RpdmU6IG51bGwpIHtcblxuICAkZGlzdGFuY2U6IGlmKCRkaXN0YW5jZSAhPSBudWxsLCAkZGlzdGFuY2UsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBkaXN0YW5jZScpKTtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG5cbiAgJHRyYW5zZm9ybTogdHJhbnNsYXRlWigkZGlzdGFuY2UgKiAkcGVyc3BlY3RpdmUgKiAxcHgpIHNjYWxlKGFicygkZGlzdGFuY2UgLSAxKSk7XG5cbiAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zZm9ybSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICAgIHRyYW5zZm9ybTogJHRyYW5zZm9ybTtcbiAgfVxuXG4gIHotaW5kZXg6ICRkaXN0YW5jZSAqIDEwMDtcbn1cbiIsIkBtaXhpbiBydGwoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgJF9wcm9wZXJ0eTogJHByb3BlcnR5O1xuICAjeyRwcm9wZXJ0eX06ICR2YWx1ZTtcblxuICBAaWYgbGVuZ3RoKCR2YWx1ZSkgPT0gNCB7XG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICN7JHByb3BlcnR5fTogbnRoKCR2YWx1ZSwgMSkgbnRoKCR2YWx1ZSwgNCkgbnRoKCR2YWx1ZSwgMykgbnRoKCR2YWx1ZSwgMik7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdsZWZ0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSAtIDEpICsgJ3JpZ2h0JztcbiAgICB9XG4gICAgQGVsc2UgaWYgKHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpKSB7XG4gICAgICAkcHJvcGVydHk6IHN0ci1zbGljZSgkcHJvcGVydHksIDEsIHN0ci1pbmRleCgkcHJvcGVydHksICdyaWdodCcpIC0gMSkgKyAnbGVmdCc7XG4gICAgfVxuXG4gICAgQGlmICRwcm9wZXJ0eSAhPSAkX3Byb3BlcnR5IHtcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSIsIkBtaXhpbiB0YXJnZXQoJHRhcmdldCkge1xuICBAYXQtcm9vdCB7XG4gICAgLyohIEB7dGFyZ2V0OiAjeyR0YXJnZXR9fSAqL1xuICAgICYge1xuICAgICAgQGNvbnRlbnQ7ICBcbiAgICB9XG4gICAgLyohIHt0YXJnZXQ6ICN7JHRhcmdldH19QCAqLyAgXG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIERyYXcgdHJpYW5nbGVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIHRyaWFuZ2xlKCRjb2xvcjogbnVsbCwgJGhlaWdodDogbnVsbCwgJHdpZHRoOiBudWxsLCAkYW5nbGU6IG51bGwpIHtcblxuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBjb2xvcicpKTtcbiAgJGhlaWdodDogaWYoJGhlaWdodCAhPSBudWxsLCAkaGVpZ2h0LCB0b29sa2l0LWdldCgndHJpYW5nbGUgaGVpZ2h0JykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSB3aWR0aCcpKTtcbiAgJGFuZ2xlOiBpZigkYW5nbGUgIT0gbnVsbCwgJGFuZ2xlLCB0b29sa2l0LWdldCgndHJpYW5nbGUgYW5nbGUnKSk7XG5cbiAgQGlmIG50aCgkYW5nbGUsIDEpID09IFwidG9wXCIgb3IgbnRoKCRhbmdsZSwgMSkgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiBcIiN7JGFuZ2xlfVwiO1xuICB9XG5cbiAgQGlmICRhbmdsZSA9PSBcInRvcFwiIHtcbiAgICAkYW5nbGU6IDA7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcInRvcCByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwicmlnaHRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDI7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSByaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMTtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tXCIge1xuICAgICRhbmdsZTogNDUgKiA0O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b20gbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMztcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwibGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIGxlZnRcIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDU7XG4gIH1cblxuICBAaWYgdW5pdCgkaGVpZ2h0KSA9PSBcIlwiIG9yIHVuaXQoJGhlaWdodCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JGhlaWdodH0gaXMgbm90IGEgY29tcGF0aWJsZSB1bml0IGZvciBoZWlnaHQuXCJcbiAgfVxuXG4gIEBpZiB1bml0KCR3aWR0aCkgPT0gXCJcIiBvciB1bml0KCR3aWR0aCkgPT0gXCIlXCIge1xuICAgIEBkZWJ1ZyBcImluIHRyaWFuZ2xlICN7JHdpZHRofSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIHdpZHRoLlwiXG4gIH1cblxuICAvLyBvZmZzZXQgNDVkZWcgdG8gbWFrZSBlYWNoIHNpZGUgc3RhcnQgYXQgMFxuICAkZGVnOiAkYW5nbGUgKyA0NTtcbiAgLy8gaWYgdW5pdHMsIHJlbW92ZSB1bml0c1xuICBAaWYgdW5pdCgkZGVnKSA9PSBkZWcge1xuICAgICRkZWc6ICRkZWcgLyAxZGVnO1xuICB9XG4gIC8vIHNoaWZ0IHRvIGJlIG9uIGEgc2NhbGUgZnJvbSAwIHRvIDkwLlxuICBAd2hpbGUgJGRlZyA+IDkwIHtcbiAgICAkZGVnOiAkZGVnIC0gOTA7XG4gIH1cbiAgQHdoaWxlICRkZWcgPCAwIHtcbiAgICAkZGVnOiAkZGVnICsgOTA7XG4gIH1cbiAgLy8gR2V0IGEgcmF0aW8gb2YgOTAgdG8gbXVsdGlwbHkgYnkuXG4gICRkZWc6ICRkZWcgLyA5MDtcblxuICAvLyBtYWtlIHN1cmUgbWV0cmljcyBhcmUgcmVzZXRcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAvLyBydW4gdGhyb3VnaCBzaWRlc1xuICBAaWYgJGFuZ2xlIDw9IDQ1IG9yICRhbmdsZSA+IDMxNSB7XG4gICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSkgJGhlaWdodCAoJHdpZHRoICogJGRlZyk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDQ1IGFuZCAkYW5nbGUgPD0gMTM1IHtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiAkZGVnKSAwICgkaGVpZ2h0ICogYWJzKCRkZWcgLSAxKSkgJHdpZHRoO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAxMzUgYW5kICRhbmdsZSA8PSAyMjUge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgKCR3aWR0aCAqICRkZWcpIDAgKCR3aWR0aCAqIGFicygkZGVnIC0gMSkpO1xuICB9XG4gIEBpZiAkYW5nbGUgPiAyMjUgYW5kICRhbmdsZSA8PSAzMTUge1xuICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGggKCRoZWlnaHQgKiAkZGVnKSAwO1xuICB9XG59IiwiLy8gVmVydGljYWxseSBjZW50ZXIgYW55dGhpbmcsIGxpdGVyYWxseSBhbnl0aGluZy5cbi8vIGh0dHA6Ly96ZXJvc2l4dGhyZWUuc2UvdmVydGljYWwtYWxpZ24tYW55dGhpbmctd2l0aC1qdXN0LTMtbGluZXMtb2YtY3NzL1xuQG1peGluIHZlcnRpY2FsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgndmVydGljYWwgbWlkcG9pbnQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcblxuICB0b3A6ICRtaWRwb2ludDtcbiAgQGluY2x1ZGUgdmVydGljYWwtY2VudGVyLWNvcmUoJGV4dGVuZCk7XG59XG5cbkBtaXhpbiB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3ZlcnRpY2FsIGV4dGVuZCcpKTtcbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd2ZXJ0aWNhbCBjZW50ZXInKSB7XG4gICAgICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kOiBmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0pIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIb3Jpem9udGFsIENlbnRlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXIoJG1pZHBvaW50OiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCBtaWRwb2ludCcpKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJG1pZHBvaW50OiBpZigkbWlkcG9pbnQgIT0gbnVsbCwgJG1pZHBvaW50LCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIEBpZiAkbWlkcG9pbnQgIT0gMCUge1xuICAgIGxlZnQ6ICRtaWRwb2ludDtcbiAgfVxuXG4gIEBpbmNsdWRlIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGhvcml6b250YWwtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2hvcml6b250YWwgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdob3Jpem9udGFsIGNlbnRlcicpIHtcbiAgICAgICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQWJzb2x1dGUgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhYnNvbHV0ZS1jZW50ZXIoJHZlcnRpY2FsOiBudWxsLCAkaG9yaXpvbnRhbDogbnVsbCwgJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICR2ZXJ0aWNhbDogaWYoJHZlcnRpY2FsICE9IG51bGwsICR2ZXJ0aWNhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciB2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZml4ZWQge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkaG9yaXpvbnRhbDogaWYoJGhvcml6b250YWwgIT0gbnVsbCwgJGhvcml6b250YWwsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgaG9yaXpvbnRhbCBtaWRwb2ludCcpKTtcbiAgfVxuXG4gIHRvcDogJHZlcnRpY2FsO1xuICBAaWYgJGhvcml6b250YWwgIT0gMCUge1xuICAgIGxlZnQ6ICRob3Jpem9udGFsO1xuICB9XG5cbiAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkLCAkZXh0ZW5kKTtcbn1cblxuQG1peGluIGFic29sdXRlLWNlbnRlci1jb3JlKCRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpIHtcbiAgICAgICAgQGluY2x1ZGUgYWJzb2x1dGUtY2VudGVyLWNvcmUodHJ1ZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZShmYWxzZSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtNTAlKSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgIH1cbiAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbiAgfVxuXG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDU1MgbGV2ZWwgNCBWaWV3cG9ydFxuLy8gaHR0cDovL2Rldi53My5vcmcvY3Nzd2cvY3NzLWRldmljZS1hZGFwdC8jdGhlLWF0dmlld3BvcnQtcnVsZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gdmlld3BvcnQge1xuICBALXdlYmtpdC12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tb3otdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEAtbXMtdmlld3BvcnQge1xuICAgIEBjb250ZW50O1xuICB9XG4gIEB2aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuIiwiQG1peGluIHVuZGVybGluZSgkYmFja2dyb3VuZDogbnVsbCwgJGNvbG9yOiBudWxsLCAkY2xlYXItZGVzY2VuZGVyczogbnVsbCwgJGRpc3RhbmNlOiBudWxsLCAkd2lkdGg6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGJhY2tncm91bmQ6IGlmKCRiYWNrZ3JvdW5kICE9IG51bGwsICRiYWNrZ3JvdW5kLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGJhY2tncm91bmQnKSk7XG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBjb2xvcicpKTtcbiAgJGNsZWFyLWRlc2NlbmRlcnM6IGlmKCRjbGVhci1kZXNjZW5kZXJzICE9IG51bGwsICRjbGVhci1kZXNjZW5kZXJzLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnKSk7XG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBkaXN0YW5jZScpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIHdpZHRoJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gICRQWDogLjA2MjVlbTtcblxuICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKGJhY2tncm91bmQtaW1hZ2UpIGFuZCBmdW5jdGlvbi1leGlzdHMobGluZWFyLWdyYWRpZW50KSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShcbiAgICAgIGxpbmVhci1ncmFkaWVudChib3R0b20sICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSlcbiAgICApO1xuICB9XG4gIEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCAkYmFja2dyb3VuZCA3NSUsICRjb2xvciA3NSUpO1xuICB9XG4gIGJhY2tncm91bmQtc2l6ZTogKDIgKiAkUFgpICgoMSArICR3aWR0aCkgKiAkUFgpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwICgoJHdpZHRoKSAqICRQWCkgKyAkZGlzdGFuY2U7XG5cbiAgQGlmICRjbGVhci1kZXNjZW5kZXJzIHtcbiAgICB0ZXh0LXNoYWRvdzogKDEgKiAkUFgpICgxICogJFBYKSAwICRiYWNrZ3JvdW5kLCAoLTEgKiAkUFgpIDAgMCAkYmFja2dyb3VuZDtcbiAgfVxufVxuXG5AbWl4aW4gdW5kZXJsaW5lLWNvcmUoJGV4dGVuZDogbnVsbCkge1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgndW5kZXJsaW5lJykge1xuICAgICAgQGluY2x1ZGUgdW5kZXJsaW5lLWNvcmUoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiByZXBlYXQteDtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gQVJUIVxuLy8gSW5zcGlyZWQgYnkgaHR0cDovL2VscnVtb3JkZWxhbHV6LmdpdGh1Yi5pby9QaXhlbGF0b3IvXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBhcnQoJGFydCwgJHB4LXNpemU6IG51bGwsICRjb2xvcjogbnVsbCwgJHJhZGl1czogbnVsbCkge1xuICAkcHgtc2l6ZTogaWYoJHB4LXNpemUgIT0gbnVsbCwgJHB4LXNpemUsIHRvb2xraXQtZ2V0KCdhcnQgcGl4ZWwgc2l6ZScpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgnYXJ0IGNvbG9yJykpO1xuICAkcmFkaXVzOiBpZigkcmFkaXVzICE9IG51bGwsICRyYWRpdXMsIHRvb2xraXQtZ2V0KCdhcnQgYm9yZGVyIHJhZGl1cycpKTtcblxuICAkYnVpbGQ6ICgpO1xuICAkeTogJHB4LXNpemU7XG4gICR4OiAwO1xuXG4gIGhlaWdodDogJHB4LXNpemU7XG4gIHdpZHRoOiAkcHgtc2l6ZTtcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cztcblxuICBAZm9yICRpIGZyb20gMSB0aHJvdWdoIHN0cl9sZW5ndGgoJGFydCkge1xuICAgICRjaGFyOiBzdHJfc2xpY2UoJGFydCwgJGksICRpKTtcbiAgICAkeDogJHggKyAkcHgtc2l6ZTtcblxuICAgIEBpZiAkY2hhciA9PSAnbicge1xuICAgICAgJHk6ICR5ICsgJHB4LXNpemU7XG4gICAgICAkeDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGNoYXIgIT0gJyAnIHtcbiAgICAgICRib3JkZXI6ICR4ICR5IDAgJGNvbG9yO1xuICAgICAgJGJ1aWxkOiBhcHBlbmQoJGJ1aWxkLCAkYm9yZGVyLCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgYm94LXNoYWRvdzogJGJ1aWxkO1xufSIsIkBtaXhpbiBzZXQtbXVsdGlwbGUoJHZhbHVlLCAkcHJvcGVydGllcy4uLikge1xuICAkcHJvcGVydHktbGVuZ3RoOiBsZW5ndGgoJHByb3BlcnRpZXMpO1xuICAkZXJyb3ItbXNnOiBcIlRoZSBgc2V0LW11bHRpcGxlYCBtaXhpbiByZXF1aXJlcyB5b3UgdG8gcGFzcyBpbiBhIGxpc3Qgb2YgcHJvcGVydGllcyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50XCI7XG5cbiAgQGlmICRwcm9wZXJ0eS1sZW5ndGggPCAxIHtcbiAgICBAaWYgZmVhdHVyZS1leGlzdHMoYXQtZXJyb3IpIHtcbiAgICAgIEBlcnJvciAkZXJyb3ItbXNnO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAd2FybiAkZXJyb3ItbXNnO1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgaW4gaXMgYSB3aGl0ZS1zcGFjZWQgc2VwYXJhdGVkIGxpc3QuXG4gICRwcm9wZXJ0aWVzOiBpZigkcHJvcGVydHktbGVuZ3RoID09IDEsIG50aCgkcHJvcGVydGllcywgMSksICRwcm9wZXJ0aWVzKTtcblxuICBAZWFjaCAkcHJvcGVydHkgaW4gJHByb3BlcnRpZXMge1xuICAgICN7JHByb3BlcnR5fTogJHZhbHVlXG4gIH1cbn1cbiIsIi8vICBNb2R1bGUgU2NhbGUgYW5kIGJhc2UgZm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiRiYXNlLWZvbnQtc2l6ZTogICAxNHB4O1xuJGlkZWFsLWZvbnQtc2l6ZTogIDIycHg7XG4vLyAkYmFzZS1saW5lLWhlaWdodDogbXMoMSwgJGJhc2UtZm9udC1zaXplKTtcblxuJHJoeXRobS11bml0OiBcInJlbVwiO1xuJHJoeXRobS1nYXA6IDhweDtcbiRyZW0td2l0aC1weC1mYWxsYmFjazogZmFsc2U7XG5cbiRzY3V0LXJlbS1iYXNlOiBzY3V0LXN0cmlwLXVuaXQoJGJhc2UtZm9udC1zaXplKTtcblxuXG4vLyB7eyBDb21wb25lbnQgc2l6ZSB9fVxuJGdsb2JhbC1yYWRpdXM6IDNweDtcbiIsIi8vICBHcmlkIHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PVxuXG4kbGF5b3V0LWJhc2U6IChcbiAgZ3V0dGVyczogMS81LFxuICBjb2x1bW4td2lkdGg6IDgwcHgsXG4gIC8vIGd1dHRlci1wb3NpdGlvbjogaW5zaWRlLXN0YXRpYyxcbiAgZGVidWc6IChcbiAgICAvLyBpbWFnZTogc2hvdyxcbiAgKSxcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiB0cnVlLFxuICAgIHJlbTogZmFsc2UsXG4gICksXG4pO1xuJHN1c3k6IGxheW91dCg1ICRsYXlvdXQtYmFzZSk7XG5cbi8vIHt7IEVsZW1lbnQgdHdpY2sgcG9pbnRzIH19XG5cbi8vIHt7IERldmljZSBsYXlvdXRzIH19XG4kc3VzeS1tZWRpYTogKFxuICAnbW9iaWxlJzogJyhtYXgtd2lkdGg6IDQxNHB4KScsXG4gICd0YWJsZXQtcG9ydHJhaXQnOiAnKG1heC13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlJzogJyhtYXgtd2lkdGg6IDEwMjRweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICd0YWJsZXQnOiAnKG1pbi13aWR0aDogNzY4cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdC1taW4nOiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAob3JpZW50YXRpb246IHBvcnRyYWl0KScsXG4gICd0YWJsZXQtbGFuZHNjYXBlLW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKScsXG4gICdkZXNrdG9wJzogJyhtaW4td2lkdGg6IDEyMDBweCknLFxuICAnY2F0ZWdvcnktbWVudSc6ICcobWluLXdpZHRoOiAxMDI0cHgpJ1xuKTtcbiR0YWJsZXQ6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIHRhYmxldCksXG4gIGxheW91dDogOSAuNVxuKTtcbiR0YWJsZXQtY29sdW1uczogc3VzeS1nZXQoY29sdW1ucywgbWFwLWdldCgkdGFibGV0LCBsYXlvdXQpKTtcbiRkZXNrdG9wOiAoXG4gIHF1ZXJ5OiBtYXAtZ2V0KCRzdXN5LW1lZGlhLCBkZXNrdG9wKSxcbiAgbGF5b3V0OiAxMiAxLjUgc3BsaXRcbik7XG4kZGVza3RvcC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCRkZXNrdG9wLCBsYXlvdXQpKTtcbiRkZXNrdG9wLWdyaWQtcGFkZGluZzogc2N1dC1yZW0oMTUpO1xuXG4vLyAge3sgTGF5ZXJzIC0tLS0tLSB9fVxuJGxheWVyczogKFxuICBiYXNlLFxuICBoZWFkZXItbWVudSxcbiAgZHJhd2VyLFxuICBkcmF3ZXItc2hhZG93LFxuICBkcmF3ZXItbmF2LFxuKTsiLCIvLyAgU2V0dGluZ3Ncbi8vICA9PT09PT09PVxuXG4kY29sb3ItbGlnaHQtc2F0dXJhdGlvbjogOTMlO1xuXG4vLyAgQ29sb3JzXG4vLyAgPT09PT09XG5cbiRncmF5LWJhc2U6ICAgICAjMDAwICFkZWZhdWx0O1xuJGdyYXktZGFya2VyOiAgIHRpbnQoJGdyYXktYmFzZSwgMTMuNSUpICFkZWZhdWx0O1xuJGdyYXktZGFyazogICAgIHRpbnQoJGdyYXktYmFzZSwgMjAlKSAgICFkZWZhdWx0O1xuJGdyYXk6ICAgICAgICAgIHRpbnQoJGdyYXktYmFzZSwgMzMuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHQ6ICAgIHRpbnQoJGdyYXktYmFzZSwgNDYuNSUpICFkZWZhdWx0O1xuJGdyYXktbGlnaHRlcjogIHRpbnQoJGdyYXktYmFzZSwgOTMuNSUpICFkZWZhdWx0O1xuXG4vLyAgVGV4dHNcbi8vICAtLS0tLVxuXG4kdGV4dC1jb2xvcjogJGdyYXktZGFyaztcblxuLy8gIFBhbGxldGVcbi8vICAtLS0tLS0tLS0tLVxuXG4kYmx1ZTogIzJkNmVjNjtcbiRibHVlLWRhcms6IHJnYigwLCA2OSwgMTY0KTtcbiRibHVlLWxpZ2h0OiAjZDhlOWZmO1xuJHllbGxvdzogI2ZjOTYwMDtcbiR5ZWxsb3ctZGFyazogI2I4NmUwMDtcbiR5ZWxsb3ctbGluazogI2ZmZDgwMDtcbiRvcmFuZ2U6ICNmYzQ3MDA7XG4kb3JhbmdlLWRhcms6ICNiODZlMDA7XG4kcmVkOiByZ2IoMjA2LCA2OCwgNjIpO1xuJGdyZWVuOiByZ2IoMjgsIDE0OSwgMjIpO1xuJHBpbms6IHJnYigxOTcsIDMxLCAxMjQpO1xuXG4kcHJpbWFyeTogc2hhZGUoIzQyOGJjYSwgNi41JSk7XG4kc3VjY2VzczogIzVjYjg1YztcbiRpbmZvOiAgICAjNWJjMGRjO1xuJHdhcm5pbmc6ICNmMGFkNGU7XG4kZGFuZ2VyOiAgI2Q5NTM0ZjtcblxuJGlucHV0LWJvcmRlcjogI2U0ZTRlNDtcbiRib3JkZXItZ3JheTogIzkxOTE5MTtcbiRiYWNrZ3JvdW5kLWdyYXk6ICNlOWU5ZTk7XG5cbi8vICBMaW5rc1xuLy8gIC0tLS0tXG5cbiRsaW5rLWNvbG9yOiAgICAgICAgICAgIzAwMCAhZGVmYXVsdDtcbiRsaW5rLWhvdmVyLWNvbG9yOiAgICAgc2hhZGUoJGxpbmstY29sb3IsIDE1JSkgIWRlZmF1bHQ7XG4kbGluay1mb2N1cy1jb2xvcjogICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay1hY3RpdmUtY29sb3I6ICAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG4kbGluay12aXNpdGVkLWNvbG9yOiAgICRncmF5LWRhcmsgIWRlZmF1bHQ7XG5cbi8vICBOUHJvZ3Jlc3Ncbi8vICAtLS0tLS0tLS1cbiRucHJvZ3Jlc3MtY29sb3I6ICAgICRwcmltYXJ5O1xuIiwiLy8gIEZvbnQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG4kaGlkZS10ZXh0LWRpcmVjdGlvbjogICByaWdodDtcblxuLy8g5YOF6Yed5bCN6Iux5paHXG4vLyBAZm9udC1mYWNlIHtcbi8vICAgZm9udC1mYW1pbHk6IEVuZ2xpc2g7XG4vLyAgIHVuaWNvZGUtcmFuZ2U6IFUrMDAtMDI0Rjtcbi8vICAgc3JjOiBsb2NhbChIZWx2ZXRpY2EpO1xuLy8gfVxuXG4kc2FuczogICAgSGVsdmV0aWNhTmV1ZS1MaWdodFxuICAgICAgICwgJ0hlbHZldGljYSBOZXVlIExpZ2h0J1xuICAgICAgICwgJ0hlbHZldGljYSBOZXVlJ1xuICAgICAgICwgIEhlbHZldGljYVxuICAgICAgICwgJ0hlaXRpIFRDJ1xuICAgICAgICwgJ0xpSGVpIFBybydcbiAgICAgICAsICdNaWNyb3NvZnQgSmhlbmdIZWknXG4gICAgICAgLCAn5b6u6Luf5q2j6buR6auUJ1xuICAgICAgICwgIEFyaWFsXG4gICAgICAgLCAgc2Fucy1zZXJpZjtcblxuJHNlcmlmOiAgJ1BUIFNlcmlmJ1xuICAgICAgICwgR2VvcmdpYVxuICAgICAgICwgVGltZXNcbiAgICAgICAsICdUaW1lcyBOZXcgUm9tYW4nXG4gICAgICAgLCAnU29uZ3RpIFRDJ1xuICAgICAgICwgJ0hpcmFnaW5vIE1pbmNobyBQcm9OJ1xuICAgICAgICwgc2VyaWY7XG5cbiRiYXNlLWZvbnQtZmFtaWx5OiAkc2FuczsiXSwibWFwcGluZ3MiOiJBOENBQTs7Ozs7RUFLRTtBOUNNc0IsQUFBQSxrQkFBa0IsQ0FBQztFQUN6QyxPQUFPLEVDVHdCLEdBQVcsR0R1QjNDO0VBZnVCLEFBQUEsa0JBQWtCLEFBRXZDLFVBQVcsQ0FBQSxBQUFBLElBQUksRUFBRTtJQUFFLGdCQUFnQixFa0U4QnBCLE9BQU8sR2xFOUJtQztFQUZwQyxBQUFBLGtCQUFrQixHQUFsQixrQkFBa0IsQ0FJbEM7SUFBRSxVQUFVLEVDWmEsSUFBVyxHRFlmO0U2Q21DekIsTUFBTSxFQUFMLFNBQVMsRUFBRSxLQUFLO0k3Q3ZDRyxBQUFBLGtCQUFrQixDQUFDO01BT3ZDLE9BQU8sRUNmc0IsSUFBVyxHRHVCM0M7RTZDd0JHLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtJN0N2Q0UsQUFBQSxrQkFBa0IsQ0FBQztNQVd2QyxPQUFPLEVBQUUsSUFBSztNQUNkLFNBQVMsRUFBRSxRQUFTO01BQ3BCLGVBQWUsRUFBRSxhQUFjLEdBRWxDOztBQUNELEFBQUEsMkJBQTJCLENBQUM7RUFDMUIsTUFBTSxFQUFFLENBQUU7RUFDVixTQUFTLEVBQUUsSUFBSyxHQUtqQjtFNkNnQkcsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO0k3Q3ZCdEIsQUFBQSwyQkFBMkIsQ0FBQztNQUt4QixhQUFhLEVDN0JnQixHQUFXLEdEK0IzQzs7QUFDRCxBQUFBLHdCQUF3QixDQUFDO0VBQ3ZCLE1BQU0sRUNqQ3lCLEdBQVcsQ0FGcEIsQ0FBTztFRG9DN0IsV0FBVyxFQUFFLE1BQU87RUFDcEIsVUFBVSxFQUFFLE9BQVEsR0FNckI7RTZDTUcsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO0k3Q2Z0QixBQUFBLHdCQUF3QixDQUFDO01BTXJCLFdBQVcsRUFBRSxNQUFPO01BQ3BCLFFBQVEsRUFBRSxJQUFLLEdBRWxCOztBQUNELEFBQUEsdUJBQXVCLEFBQ3BCLE9BQU8sQ0FBQztFQUFFLElBQUksRUFBRSxJQUFJLENrRWJoQixPQUFHLEdsRWF1Qjs7QUFEakMsQUFBQSx1QkFBdUIsR0FBdkIsdUJBQXVCLEFBRWhCLFFBQVEsQ0FBQztFQUNaLE9BQU8sRUFBRSxHQUFJO0VBQ2IsS0FBSyxFbUR6Q0MsT0FBRztFbkQwQ1QsV0FBVyxFQUFFLE1BQU87RUFDcEIsTUFBTSxFQ2xEYyxDQUFPLENBRUUsR0FBVyxDQUZwQixDQUFPLENBRUUsR0FBVyxHRGlEekM7O0E2Q0ZDLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtFN0NJdEIsQUFBQSxnQ0FBZ0MsQ0FBQztJQUU3QixLQUFLLEVBQUUsSUFBSyxHQUVmOztBQUNELEFBQUEsK0JBQStCLENBQUM7RUNYOUIsT0FBTyxFQUFFLENBQUU7RUFDWCxVQUFVLEVBQUUsTUFBTztFQUNuQixVQUFVLEVBQUUsNENBQTZDO0VBQ3pELFFBQVEsRUFBRSxNQUFPO0VBQ2pCLE1BQU0sRUFBRSxDQUFFO0VEU1YsV0FBVyxFQUFFLE1BQU87RUFDcEIsUUFBUSxFQUFFLElBQUssR0FNaEI7RUFURCxBQUFBLCtCQUErQixBQ041QixPQUFPLENBQUM7SUFDUCxPQUFPLEVBQUUsQ0FBRTtJQUNYLFVBQVUsRUFBRSxPQUFRO0lBQ3BCLGdCQUFnQixFQUFFLEVBQUc7SUFDckIsUUFBUSxFQUFFLElBQUs7SUFDZixNQUFNLEVBQUUsSUFBSyxHQUNkO0U0Q1RDLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtJN0NTdEIsQUFBQSwrQkFBK0IsQ0FBQztNQU01QixXQUFXLEVBQUUsTUFBTztNQUNwQixLQUFLLEVBQUUsR0FBSSxHQUVkOztBQUNELEFBQUEsNkJBQTZCLENBQUM7RUFDNUIsT0FBTyxFQUFFLFlBQWE7RUFDdEIsYUFBYSxFQ3BFa0IsR0FBVyxHRG9GM0M7RTZDckNHLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtJN0NtQnRCLEFBQUEsNkJBQTZCLENBQUM7TUFLMUIsS0FBSyxFQUFFLElBQUssR0FhZjtFQWxCRCxBQUFBLDZCQUE2QixHQUE3Qiw2QkFBNkIsQ0FRckI7SUFDSixXQUFXLEVDM0VrQixHQUFXLEdEaUZ6QztJNkNsQ0MsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO003Q21CdEIsQUFBQSw2QkFBNkIsR0FBN0IsNkJBQTZCLENBUXJCO1FBSUYsV0FBVyxFQzlFZ0IsSUFBVztRRCtFdEMsS0FBSyxFQUFFLElBQUssR0FFZjtFQWZILEFBaUJFLDZCQWpCMkIsQ0FpQjNCLE1BQU0sQ0FBQztJQUFFLFVBQVUsRUFBRSxNQUFPLEdBQUkiLCJuYW1lcyI6W119 */
/*
* Scut, a collection of Sass utilities
* to ease and improve our implementations of common style-code patterns.
* v1.4.0
* Docs at http://davidtheclark.github.io/scut
*/
.search-result {
  list-style-type: none;
  padding-left: 0;
  margin-top: 0;
  margin-bottom: 0; }

@media (min-width: 1024px) {
  .search-form-wrapper {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between; } }
.search-form {
  margin-bottom: 8px;
  background-color: #e9e9e9; }

@media (min-width: 1024px) {
  .search-form {
    width: calc(50% - 8px); } }
.search-form__fieldset {
  padding: 0;
  margin: 0;
  border: none; }

.search-form__legend {
  display: block;
  padding: 4px 16px;
  margin-bottom: 16px;
  color: #fff;
  font-size: 18px;
  width: 100%; }

.search-form--black .search-form__legend {
  background-color: #000; }

.search-form--red .search-form__legend {
  background-color: #ce443e; }

.search-form__control-group {
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  padding: 8px 32px; }

.search-form__label:after {
  content: "\FF1A"; }

.search-form__control {
  -webkit-box-flex: 1;
  -ms-flex: 1 0 auto;
  flex: 1 0 auto;
  border: 1px solid #919191; }

.search-form__actions {
  padding-top: 16px;
  padding-bottom: 24px;
  text-align: center; }

.search-form__submit {
  padding: 4px 16px;
  font-weight: 700;
  font-size: 18px;
  color: #fff; }

.search-form--black .search-form__submit {
  background-color: #000; }

.search-form--red .search-form__submit {
  background-color: #ce443e; }

.search-result-count {
  margin-bottom: 8px;
  text-align: center;
  font-size: 18px;
  border: 1px solid #e4e4e4;
  border-width: 1px 0; }

.search-result {
  margin-bottom: 8px; }

.search-result .post-preview__content {
  padding-left: 0; }

.search-result__cell {
  padding: 8px; }

.search-result__cell:nth-child(odd) {
  background-color: #e9e9e9; }

.search-result__title {
  margin: 0;
  font-size: 18px; }

.search-result__title .highlight {
  color: #2d6ec6; }

/*Fine Print*/
@media print {
    * {-webkit-print-color-adjust: exact;}
    body {margin: 0 -200px;}
    .article__news-title {margin: 0 -200px}
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3BhZ2VzL19zZWFyY2guc2NzcyIsInNvdXJjZXMiOlsiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3BhZ2VzL19zZWFyY2guc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9fbWl4aW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9jbGllbnQvc3R5bGVzaGVldHMvX2NsYXNzZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3MvX3N1c3kuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9fc3VzeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L191dGlsaXRpZXMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L3N1L19ncmlkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19mbG9hdC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L19zdXBwb3J0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX3N1cHBvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2JhY2tncm91bmQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fY2xlYXJmaXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19pbnNwZWN0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fZGlyZWN0aW9uLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fYmFja2dyb3VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX21hcmdpbnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19wYWRkaW5nLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX3NwYW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvZmxvYXQvX2VuZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3NldHRpbmdzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fdmFsaWRhdGlvbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYm94LXNpemluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19pc29sYXRlLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fZ2FsbGVyeS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19tYXJnaW5zLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fcGFkZGluZy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fYnJlYWtwb2ludC1wbHVnaW4uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zY3V0L2Rpc3QvX3NjdXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvX3Rvb2xraXQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fc2V0dGluZ3Muc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGxhY2Vob2xkZXJzLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NsZWFyZml4LnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2NvbG9ycy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19mb250cy5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19pbnRyaW5zaWMtcmF0aW8uc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fbmVzdGVkLWNvbnRleHQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcGFyYWxsYXguc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fcnRsLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX3RhcmdldC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L190cmlhbmdsZS5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19jZW50ZXIuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdmlld3BvcnQuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL25vZGVfbW9kdWxlcy9zYXNzLXRvb2xraXQvc3R5bGVzaGVldHMvdG9vbGtpdC9fdW5kZXJsaW5lLnNjc3MiLCIvVXNlcnMvanVkZS9zaXRlcy95ZG5zLWYyZS9ub2RlX21vZHVsZXMvc2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXQvX2FydC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvbm9kZV9tb2R1bGVzL3Nhc3MtdG9vbGtpdC9zdHlsZXNoZWV0cy90b29sa2l0L19zZXQtbXVsdGlwbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fc2NhbGUuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZ3JpZC5zY3NzIiwiL1VzZXJzL2p1ZGUvc2l0ZXMveWRucy1mMmUvY2xpZW50L3N0eWxlc2hlZXRzL3NldHRpbmdzL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9qdWRlL3NpdGVzL3lkbnMtZjJlL2NsaWVudC9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZm9udC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIC0tLS0gdmVuZG9yIG1peGluIGxpYnJhcmllcyAtLS0tXG5AaW1wb3J0IFwibWl4aW5zXCIsXG4gICAgICAgIFwiY2xhc3Nlc1wiLFxuICAgICAgICBcIn5zdXN5XCIsXG4gICAgICAgIFwifnNjdXRcIixcbiAgICAgICAgXCJ+c2Fzcy10b29sa2l0L3N0eWxlc2hlZXRzL3Rvb2xraXRcIjtcblxuLy8gLS0tLSB2YXJpYWJsZXMgYW5kIGNvbmZpZyAtLS0tXG5AaW1wb3J0IFwic2V0dGluZ3Mvc2NhbGVcIixcbiAgICAgICAgXCJzZXR0aW5ncy9ncmlkXCIsXG4gICAgICAgIFwic2V0dGluZ3MvY29sb3JzXCIsXG4gICAgICAgIFwic2V0dGluZ3MvZm9udFwiOy5zZWFyY2gtZm9ybS13cmFwcGVyIHtcbiAgQGluY2x1ZGUgc3VzeS1tZWRpYShjYXRlZ29yeS1tZW51KSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cbn1cbi5zZWFyY2gtZm9ybSB7XG4gIG1hcmdpbi1ib3R0b206IHIoMSk7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWdyYXk7XG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEoY2F0ZWdvcnktbWVudSkgeyB3aWR0aDogY2FsYyg1MCUgLSAje3IoMSl9KTt9XG59XG4uc2VhcmNoLWZvcm1fX2ZpZWxkc2V0IHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXI6IG5vbmU7XG59XG4uc2VhcmNoLWZvcm1fX2xlZ2VuZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiByKC41KSByKDIpO1xuICBtYXJnaW4tYm90dG9tOiByKDIpO1xuICB0ZXh0OiAjZmZmIDE4cHg7XG4gIHdpZHRoOiAxMDAlO1xuICAuc2VhcmNoLWZvcm0tLWJsYWNrICYgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOyB9XG4gIC5zZWFyY2gtZm9ybS0tcmVkICYgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkcmVkOyB9XG59XG4uc2VhcmNoLWZvcm1fX2NvbnRyb2wtZ3JvdXAge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiByKDEpIHIoNCk7XG59XG4uc2VhcmNoLWZvcm1fX2xhYmVsOmFmdGVyIHsgY29udGVudDogXCLvvJpcIjsgfVxuLnNlYXJjaC1mb3JtX19jb250cm9sIHtcbiAgZmxleDogMSAwIGF1dG87XG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItZ3JheTtcbn1cbi5zZWFyY2gtZm9ybV9fYWN0aW9ucyB7XG4gIHBhZGRpbmc6IHIoMikgbigpIHIoMyk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5zZWFyY2gtZm9ybV9fc3VibWl0IHtcbiAgcGFkZGluZzogciguNSkgcigyKTtcbiAgdGV4dDogYm9sZCAxOHB4ICNmZmY7XG5cbiAgLnNlYXJjaC1mb3JtLS1ibGFjayAmIHsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsgfVxuICAuc2VhcmNoLWZvcm0tLXJlZCAmIHsgYmFja2dyb3VuZC1jb2xvcjogJHJlZDsgfVxufVxuXG4uc2VhcmNoLXJlc3VsdC1jb3VudCB7XG4gIG1hcmdpbi1ib3R0b206IHIoMSk7XG4gIHRleHQ6IGNlbnRlciAxOHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAkaW5wdXQtYm9yZGVyO1xuICBib3JkZXItd2lkdGg6IDFweCAwIDFweCAwO1xufVxuXG4uc2VhcmNoLXJlc3VsdCB7XG4gIEBleHRlbmQgJXNjdXQtbGlzdC11bnN0eWxlZDtcbiAgbWFyZ2luLWJvdHRvbTogcigxKTtcblxuICAucG9zdC1wcmV2aWV3X19jb250ZW50IHsgcGFkZGluZy1sZWZ0OiAwOyB9XG59XG4uc2VhcmNoLXJlc3VsdF9fY2VsbCB7XG4gIHBhZGRpbmc6IHIoMSk7XG4gICY6bnRoLWNoaWxkKG9kZCkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFja2dyb3VuZC1ncmF5OyB9XG59XG4uc2VhcmNoLXJlc3VsdF9fdGl0bGUge1xuICBtYXJnaW46IDA7IFxuICBmb250LXNpemU6IDE4cHg7XG5cbiAgLmhpZ2hsaWdodCB7IGNvbG9yOiAkYmx1ZTsgfVxufSIsIi8vIHt7U2FzcyBtaXhpbnMgLS0tLS0tLS19fVxuQGZ1bmN0aW9uIG4oKSB7IEByZXR1cm4gdW5xdW90ZShcIipcIik7IH1cblxuQGZ1bmN0aW9uIHIoJHRpbWVzOiAxKSB7IEByZXR1cm4gJHJoeXRobS1nYXAgKiAkdGltZXM7IH1cblxuQG1peGluIHN1c3koJG1hcCkge1xuICBAaW5jbHVkZSBzdXN5LWJyZWFrcG9pbnQobWFwLWdldCgkbWFwLCBxdWVyeSksIG1hcC1nZXQoJG1hcCwgbGF5b3V0KSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiByZXZlcnNlLWhpZGUtdmlzdWFsbHkoKSB7XG4gIGJvcmRlcjogMDtcbiAgY2xpcDogYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgaGVpZ2h0OiBhdXRvO1xuICB3aWR0aDogYXV0bztcbn1cblxuQG1peGluIHNoYXJlLWJyZWFrcG9pbnRzKCRtYXAsICRjc3Nwcm9wOiBjb250ZW50KSB7XG4gICRkZXNjcmlwdGlvbjogJyc7XG5cbiAgQGVhY2ggJHByb3BlcnR5LCAkdmFsdWUgaW4gJG1hcCB7XG4gICAgQGlmICRkZXNjcmlwdGlvbiAhPSAgJycge1xuICAgICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAnIHwgJztcbiAgICB9XG4gICAgXG4gICAgJGRlc2NyaXB0aW9uOiAkZGVzY3JpcHRpb24gKyAkcHJvcGVydHkgKyc6ICcrIGluc3BlY3QoJHZhbHVlKTtcbiAgfVxuXG4gIGRpc3BsYXk6IG5vbmU7XG4gICN7JGNzc3Byb3B9OiAgJGRlc2NyaXB0aW9uO1xufVxuXG5AbWl4aW4gdG9nZ2xlLWZhZGUoKSB7XG4gIG9wYWNpdHk6IDA7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnMgZWFzZSAwcywgdmlzaWJpbGl0eSAuMnMgZWFzZSAuMnM7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gIH1cbn1cblxuQG1peGluIHRvZ2dsZS1zaG93KCkge1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgLjJzIGVhc2UgMHMsIHZpc2liaWxpdHkgLjJzIGVhc2UgLjJzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IDA7XG4gICYuYWN0aXZlIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMHM7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9ICBcbn1cblxuQG1peGluIHNob3coKSB7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDBzO1xuICBoZWlnaHQ6IGF1dG87ICBcbn1cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyKCkge1xuICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyLCBcbiAgJjo6LW1vei1wbGFjZWhvbGRlcixcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxufVxuXG5AbWl4aW4gZGVidWcoJGNvbG9yOiAjZmZmIHJnYmEodG9tYXRvLCAuMykpIHtcbiAgY29sb3I6ICRjb2xvclxufVxuXG5AbWl4aW4gbGlzdC1kaXZpZGVkKCRkaXZpZGVyLCAkc3BhY2UpIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQoJGRpdmlkZXIsICRzcGFjZSk7XG4gID4gbGkgKyBsaTpiZWZvcmUgeyBtYXJnaW4tbGVmdDogJHNwYWNlICsgNHB4OyB9XG59XG4iLCJAbWl4aW4gSGlkZGVuIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbkBtaXhpbiBTZWxlY3Qge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBwYWRkaW5nOiAwIHIoMikgMCByKDEpO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAvLyBoZWlnaHQ6ICRpbnB1dC1oZWlnaHQ7XG4gIC8vIGJvcmRlcjogMXB4IHNvbGlkICRpbnB1dC1ib3JkZXItY29sb3I7XG4gIC8vIGJhY2tncm91bmQ6IHVybChcImltYWdlcy9hcnJvdy1kb3duLnN2Z1wiKVxuICAvLyAgICAgICAgICAgOTIlIDUwJSAvIDhweCAxMHB4XG4gIC8vICAgICAgICAgICBuby1yZXBlYXRcbiAgLy8gICAgICAgICAgIHRyYW5zcGFyZW50O1xuICAubm8tY3NzLWFwcGVhcmFuY2UgJiB7XG4gICAgQGluY2x1ZGUgc2N1dC1wYWRkaW5nKG4gMCk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgfVxufVxuXG5AbWl4aW4gTm9ybWFsaXplKCkge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBib3JkZXI6IG5vbmU7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJhY2tncm91bmQ6IG5vbmUgdHJhbnNwYXJlbnQ7XG4gIHBhZGRpbmc6IDA7XG59IiwiLy8gU3VzeVxuLy8gPT09PVxuXG5AaW1wb3J0ICdzdXN5L2xhbmd1YWdlL3N1c3knO1xuIiwiLy8gU3VzeSBOZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4kc3VzeS12ZXJzaW9uOiAyLjE7XG5cbkBpbXBvcnQgXCIuLi9zdVwiO1xuQGltcG9ydCBcIi4uL291dHB1dC9mbG9hdFwiO1xuXG5AaW1wb3J0IFwic3VzeS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1c3kvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1c3kvZ3JpZHNcIjtcbkBpbXBvcnQgXCJzdXN5L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRleHRcIjtcbkBpbXBvcnQgXCJzdXN5L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInN1c3kvc3BhblwiO1xuQGltcG9ydCBcInN1c3kvZ3V0dGVyc1wiO1xuQGltcG9ydCBcInN1c3kvaXNvbGF0ZVwiO1xuQGltcG9ydCBcInN1c3kvZ2FsbGVyeVwiO1xuQGltcG9ydCBcInN1c3kvcm93c1wiO1xuQGltcG9ydCBcInN1c3kvbWFyZ2luc1wiO1xuQGltcG9ydCBcInN1c3kvcGFkZGluZ1wiO1xuQGltcG9ydCBcInN1c3kvYmxlZWRcIjtcbkBpbXBvcnQgXCJzdXN5L2JyZWFrcG9pbnQtcGx1Z2luXCI7XG4iLCIvLyBTdVxuLy8gPT1cblxuQGltcG9ydCBcInN1L3V0aWxpdGllc1wiO1xuQGltcG9ydCBcInN1L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3UvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1L2dyaWRcIjtcbiIsIi8vIE1hcCBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBUcnVuY2F0ZSBMaXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiBhIGxpc3QsIHRydW5jYXRlZCB0byBhIGdpdmVuIGxlbmd0aFxuQGZ1bmN0aW9uIF9zdXN5LXRydW5jYXRlLWxpc3QoXG4gICRsaXN0LFxuICAkbGVuZ3RoXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgJF9yZXR1cm46IGlmKCRpIDw9ICRsZW5ndGgsIGFwcGVuZCgkX3JldHVybiwgbnRoKCRsaXN0LCAkaSkpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgR2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1nZXQoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46ICRtYXA7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIHR5cGUtb2YoJF9yZXR1cm4pID09IG1hcCB7XG4gICAgICAkX3JldHVybjogbWFwLWdldCgkX3JldHVybiwgJGtleSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIFNldFxuLy8gLS0tLS0tLS1cbi8vIC0gU2V0IGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtc2V0KFxuICAkbWFwLFxuICAka2V5cy12YWx1ZS4uLlxuKSB7XG4gICRfdmFsdWU6IG50aCgka2V5cy12YWx1ZSwgLTEpO1xuICAkX2tleXM6IF9zdXN5LXRydW5jYXRlLWxpc3QoJGtleXMtdmFsdWUsIGxlbmd0aCgka2V5cy12YWx1ZSkgLSAxKTtcbiAgJF9sZW5ndGg6IGxlbmd0aCgkX2tleXMpO1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkX2xlbmd0aCB7XG4gICAgJF9uOiAwIC0gJGk7XG4gICAgJF9sZXZlbDogX3N1c3ktdHJ1bmNhdGUtbGlzdCgkX2tleXMsICRfbGVuZ3RoICsgJF9uKTtcbiAgICAkX2xldmVsOiBfc3VzeS1kZWVwLWdldCgkbWFwLCAkX2xldmVsLi4uKTtcbiAgICAkX21lcmdlOiBudGgoJF9rZXlzLCAkX24pO1xuICAgICRfbWVyZ2U6ICgkX21lcmdlOiAkX3ZhbHVlKTtcbiAgICAkX3JldHVybjogaWYoJF9sZXZlbCwgbWFwLW1lcmdlKCRfbGV2ZWwsICRfbWVyZ2UpLCAkX21lcmdlKTtcbiAgICAkX3ZhbHVlOiAkX3JldHVybjtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBNZXJnZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIDIgb2JqZWN0cyBvZiBhbnkgZGVwdGgsIG1lcmdlZFxuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtbWVyZ2UoXG4gICRtYXAxLFxuICAkbWFwMlxuKSB7XG5cbiAgQGlmIHR5cGUtb2YoJG1hcDEpICE9IG1hcCBvciB0eXBlLW9mKCRtYXAyKSAhPSBtYXAge1xuICAgICRtYXAxOiAkbWFwMjtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAyIHtcbiAgICAgICRfbmV3OiAoJGtleTogX3N1c3lfZGVlcC1tZXJnZShtYXAtZ2V0KCRtYXAxLCAka2V5KSwgJHZhbHVlKSk7XG4gICAgICAkbWFwMTogbWFwLW1lcmdlKCRtYXAxLCAkX25ldyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbWFwMTtcbn1cblxuXG4vLyBEZWVwIEhhcy1LZXlcbi8vIC0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gdHJ1ZSBpZiBhIGRlZXAga2V5IGV4aXN0c1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtaGFzLWtleShcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogbnVsbDtcbiAgJF9zdG9wOiBmYWxzZTtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgbm90KCRfc3RvcCkge1xuICAgICAgJF9yZXR1cm46IG1hcC1oYXMta2V5KCRtYXAsICRrZXkpO1xuICAgIH1cblxuICAgIEBpZiAkX3JldHVybiB7XG4gICAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9zdG9wOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTZXR0aW5nc1xuLy8gPT09PT09PT1cblxuLy8gVmVyc2lvblxuLy8gLS0tLS0tLVxuJHN1LXZlcnNpb246IDEuMTtcblxuXG4vLyBEZWZhdWx0IFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBUaGUgYmFzaWMgc2V0dGluZ3NcbiRzdXN5LWRlZmF1bHRzOiAoXG4gIGNvbHVtbnM6IDQsXG4gIGd1dHRlcnM6IC4yNSxcbik7XG5cblxuLy8gVXNlciBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBEZWZpbmUgdGhlICRzdXN5IHZhcmlhYmxlIHdpdGggYSBtYXAgb2YgeW91ciBvd24gc2V0dGluZ3MuXG4vLyAtIFNldCBFSVRIRVIgJGNvbHVtbi13aWR0aCBPUiAkY29udGFpbmVyXG4vLyAtIFVzZSAkY29sdW1uLXdpZHRoIGZvciBzdGF0aWMgbGF5b3V0c1xuJHN1c3k6ICgpICFkZWZhdWx0O1xuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IEFkZCBkZWZhdWx0cyB0byBTdXN5XG5AbWl4aW4gc3VzeS1kZWZhdWx0cyhcbiAgJGRlZmF1bHRzXG4pIHtcbiAgJHN1c3ktZGVmYXVsdHM6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJGRlZmF1bHRzKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgU2V0XG4vLyAtLS0tLS0tLVxuLy8gQ2hhbmdlIG9uZSBzZXR0aW5nXG4vLyAtICRrZXkgICA6IHNldHRpbmcgbmFtZVxuLy8gLSAkdmFsdWUgOiBzZXR0aW5nIHZhbHVlXG5AbWl4aW4gc3VzeS1zZXQoXG4gICRrZXktdmFsdWUuLi5cbikge1xuICAkc3VzeTogX3N1c3ktZGVlcC1zZXQoJHN1c3ksICRrZXktdmFsdWUuLi4pICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm4gb25lIHNldHRpbmcgZnJvbSBhIGdyaWRcbi8vIC0gJGtleSAgICAgOiA8a2V5d29yZD5cbi8vIC0gJGxheW91dCAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gc3VzeS1nZXQoXG4gICRrZXksXG4gICRsYXlvdXQ6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJHN1c3kpXG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF9vcHRpb25zOiAkbGF5b3V0ICRzdXN5ICRzdXN5LWRlZmF1bHRzO1xuICAkX2JyZWFrOiBmYWxzZTtcbiAgJF9yZXR1cm46IG51bGw7XG5cbiAgQGVhY2ggJG9wdCBpbiAkX29wdGlvbnMge1xuICAgIEBpZiB0eXBlLW9mKCRvcHQpID09IG1hcCBhbmQgbm90KCRfYnJlYWspIHtcbiAgICAgICRfa2V5c2V0OiBfc3VzeS1kZWVwLWhhcy1rZXkoJG9wdCwgJGtleS4uLik7XG4gICAgICBAaWYgJF9rZXlzZXQge1xuICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1nZXQoJG9wdCwgJGtleS4uLik7XG4gICAgICAgICRfYnJlYWs6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIE1hdGggVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09XG5cblxuLy8gVmFsaWQgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGNvbHVtbiBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRjb2x1bW5zKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkY29sdW1ucykge1xuICAgICRyZXR1cm46ICRjb2x1bW5zO1xuICB9IEBlbHNlIGlmICR0eXBlID09IGxpc3Qge1xuICAgICRmYWlsOiBudWxsO1xuICAgIEBlYWNoICRjb2wgaW4gJGNvbHVtbnMge1xuICAgICAgQGlmIHR5cGUtb2YoJGNvbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgJGZhaWw6ICRmYWlsIG9yIGlmKHVuaXRsZXNzKCRjb2wpLCBudWxsLCB0cnVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHJldHVybjogaWYoJGZhaWwsICRyZXR1cm4sICRjb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiAkcmV0dXJuICE9ICRjb2x1bW5zIGFuZCBub3QoJHNpbGVudCkge1xuICAgICRyZXR1cm46IG51bGw7XG4gICAgJHdhcm46ICckY29sdW1ucyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyIG9yIGxpc3Qgb2YgdW5pdGxlc3MgbnVtYmVycy4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGNvbHVtbnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG4vLyBWYWxpZCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgZ3V0dGVyIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtZ3V0dGVycyhcbiAgJGd1dHRlcnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXJzKSB7XG4gICAgJHJldHVybjogJGd1dHRlcnM7XG4gIH0gQGVsc2UgaWYgbm90KCRzaWxlbnQpIHtcbiAgICAkd2FybjogJyRndXR0ZXJzIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRndXR0ZXJzfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBDb2x1bW4gbWF0aFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBJcyBTeW1tZXRyaWNhbFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIGdyaWQgaXMgc3ltbWV0cmljYWwuXG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gaXMtc3ltbWV0cmljYWwoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpZih0eXBlLW9mKCRjb2x1bW5zKSA9PSBudW1iZXIsICRjb2x1bW5zLCBudWxsKTtcbn1cblxuXG4vLyBTdXN5IENvdW50XG4vLyAtLS0tLS0tLS0tXG4vLyBGaW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiBhIGdpdmVuIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktY291bnQoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykgb3IgbGVuZ3RoKCRjb2x1bW5zKTtcbn1cblxuXG4vLyBTdXN5IFN1bVxuLy8gLS0tLS0tLS1cbi8vIEZpbmQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5LXN1bShcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuXG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQgPT0gd2lkZSwgMCwgaWYoJHNwcmVhZCA9PSB3aWRlciwgMSwgLTEpKTtcbiAgJGd1dHRlci1zdW06IChzdXN5LWNvdW50KCRjb2x1bW5zKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICRjb2x1bW4tc3VtOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgQGlmIG5vdCgkY29sdW1uLXN1bSkge1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGNvbHVtbnMge1xuICAgICAgJGNvbHVtbi1zdW06ICgkY29sdW1uLXN1bSBvciAwKSArICRjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtO1xufVxuXG5cbi8vIFN1c3kgU2xpY2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBvZiBjb2x1bW5zIGF0IGEgZ2l2ZW4gbG9jYXRpb24uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkc3ViLWNvbHVtbnM6ICRzcGFuO1xuXG4gIEBpZiBub3QoaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpKSB7XG4gICAgJGxvY2F0aW9uOiAkbG9jYXRpb24gb3IgMTtcbiAgICAkc3ViLWNvbHVtbnM6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRzcGFuKSB7XG4gICAgICAkc3ViLWNvbHVtbnM6IGFwcGVuZCgkc3ViLWNvbHVtbnMsIG50aCgkY29sdW1ucywgJGkpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG4vLyBTdXN5XG4vLyAtLS0tXG4vLyBGaW5kIHRoZSBzdW0gb2YgYSBjb2x1bW4tc3Bhbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5KFxuICAkc3BhbixcbiAgJGxvY2F0aW9uICAgICA6IGZhbHNlLFxuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICAgICAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgICAgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG4gICRzcGFuOiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcblxuICBAcmV0dXJuIHN1c3ktc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCk7XG59XG4iLCIvLyBGbG9hdCBBUElcbi8vID09PT09PT09PVxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbkBpbXBvcnQgXCJmbG9hdC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJmbG9hdC9zcGFuXCI7XG5AaW1wb3J0IFwiZmxvYXQvZW5kXCI7XG5AaW1wb3J0IFwiZmxvYXQvaXNvbGF0ZVwiO1xuIiwiLy8gU2hhcmVkIEFQSVxuLy8gPT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydFwiO1xuXG5AaW1wb3J0IFwic2hhcmVkL2luc3BlY3RcIjtcbkBpbXBvcnQgXCJzaGFyZWQvb3V0cHV0XCI7XG5AaW1wb3J0IFwic2hhcmVkL2RpcmVjdGlvblwiO1xuQGltcG9ydCBcInNoYXJlZC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic2hhcmVkL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNoYXJlZC9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic2hhcmVkL3BhZGRpbmdcIjtcblxuXG5cbiIsIi8vIFN1c3kgQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydC9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9wcmVmaXhcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3JlbVwiO1xuQGltcG9ydCBcInN1cHBvcnQvY2xlYXJmaXhcIjtcbiIsIi8vIEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgU3VwcG9ydCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgYnJlYWtwb2ludDogdHJ1ZSxcbiAgICBib3gtc2l6aW5nOiB0cnVlLFxuICAgIHJlbTogdHJ1ZSxcbiAgKSxcbikpO1xuXG5cbi8vIFN1c3kgU3VwcG9ydCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VuZCBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0byB0aGUgcHJvcGVyIHN1cHBvcnQgbW9kdWxlcy5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXN1cHBvcnQoXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgLy8gQmFja2dyb3VuZCBTdXBwb3J0XG4gIEBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtaW1hZ2UoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1zaXplIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtc2l6ZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLW9yaWdpbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbigkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWNsaXAge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1jbGlwKCR2YWwpO1xuICB9XG5cbiAgLy8gQm94LVNpemluZyBTdXBwb3J0XG4gIEBlbHNlIGlmICRwcm9wID09IGJveC1zaXppbmcge1xuICAgIEBpbmNsdWRlIHN1c3ktYm94LXNpemluZygkdmFsKTtcbiAgfVxuXG4gIC8vIFJlbSBTdXBwb3J0XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cblxuXG4vLyBTdXN5IFN1cHBvcnQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBzdXBwb3J0IG9mIGEgZmVhdHVyZS5cbi8vIC0gJGZlYXR1cmUgICAgICAgOiA8c3RyaW5nPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nIFwicmVtXCIgb3IgXCJib3gtc2l6aW5nXCJcbi8vIC0gJHJlcXVpcmVtZW50cyAgOiA8bWFwPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nICh2YXJpYWJsZTogcmVtLXdpdGgtcHgtZmFsbGJhY2ssIG1peGluOiByZW0pXG4vLyAtICR3YXJuICAgICAgICAgIDogPGJvb2w+XG5AZnVuY3Rpb24gc3VzeS1zdXBwb3J0KFxuICAkZmVhdHVyZSxcbiAgJHJlcXVpcmVtZW50czogKCksXG4gICR3YXJuOiB0cnVlXG4pIHtcbiAgJF9zdXBwb3J0OiBzdXN5LWdldCh1c2UtY3VzdG9tICRmZWF0dXJlKTtcblxuICBAaWYgJF9zdXBwb3J0IHtcbiAgICAkX2ZhaWw6IGZhbHNlO1xuXG4gICAgQGVhY2ggJF90eXBlLCAkX3JlcSBpbiAkcmVxdWlyZW1lbnRzIHtcbiAgICAgIEBlYWNoICRfaSBpbiAkX3JlcSB7XG4gICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcblxuICAgICAgICBAaWYgbm90KCRfcGFzcykge1xuICAgICAgICAgICRfZmFpbDogdHJ1ZTtcbiAgICAgICAgICBAaWYgJHdhcm4ge1xuICAgICAgICAgICAgQHdhcm4gXCJZb3UgcmVxdWVzdGVkIGN1c3RvbSBzdXBwb3J0IG9mICN7JGZlYXR1cmV9LCBidXQgdGhlICN7JF9pfSAjeyRfdHlwZX0gaXMgbm90IGF2YWlsYWJsZS5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3N1cHBvcnQ6IGlmKCRfZmFpbCwgZmFsc2UsICRfc3VwcG9ydCk7XG4gIH1cblxuICBAcmV0dXJuICRfc3VwcG9ydDtcbn1cbiIsIi8vIFN1c3kgUHJlZml4XG4vLyA9PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IHNpbXBsZSBwcmVmaXhlZCBwcm9wZXJ0aWVzLlxuLy8gLSAkcHJvcCAgICAgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgICAgICA6IDxjc3MgdmFsdWU+XG4vLyAtIFskcHJlZml4XSAgOiA8YnJvd3NlciBwcmVmaXggbGlzdD5cbkBtaXhpbiBzdXN5LXByZWZpeChcbiAgJHByb3AsXG4gICR2YWwsXG4gICRwcmVmaXg6IG9mZmljaWFsXG4pIHtcbiAgQGVhY2ggJGZpeCBpbiAkcHJlZml4IHtcbiAgICAkZml4OiBpZigkZml4ID09IG9mZmljaWFsIG9yIG5vdCgkZml4KSwgJHByb3AsICctI3skZml4fS0jeyRwcm9wfScpO1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRmaXgsICR2YWwpO1xuICB9XG59XG4iLCIvLyBCYWNrZ3JvdW5kIFByb3BlcnRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEJhY2tncm91bmQgSW1hZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtaW1hZ2U+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2Vcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtaW1hZ2UsIChtaXhpbjogYmFja2dyb3VuZC1pbWFnZSksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLi4uKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBTaXplXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLXNpemU+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1zaXplKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgkc2l6ZSk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemU7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIE9yaWdpblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtb3JpZ2luPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oXG4gICRvcmlnaW5cbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLW9yaWdpbikpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRvcmlnaW47XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIENsaXBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1jbGlwPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1jbGlwKFxuICAkY2xpcFxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtY2xpcCkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNsaXAoJGNsaXApO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwO1xuICB9XG59XG4iLCIvLyBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09XG5cbi8vIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkbW9kZWw6IDxib3gtc2l6aW5nPlxuQG1peGluIHN1c3ktYm94LXNpemluZyhcbiAgJG1vZGVsOiBjb250ZW50LWJveFxuKSB7XG4gIEBpZiAkbW9kZWwge1xuICAgIEBpZiBzdXN5LXN1cHBvcnQoYm94LXNpemluZywgKG1peGluOiBib3gtc2l6aW5nKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKCRtb2RlbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJlZml4OiAobW96LCB3ZWJraXQsIG9mZmljaWFsKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktcHJlZml4KGJveC1zaXppbmcsICRtb2RlbCwgJHByZWZpeCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBEZWJ1Z2dpbmdcbi8vID09PT09PT09PVxuXG4vLyBTdXN5IEluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8gT3V0cHV0IGFyZ3VtZW50cyBwYXNzZWQgdG8gYSBpbnNwZWN0LlxuLy8gLSAkbWl4aW4gIDogPHN1c3kgbWl4aW4+XG4vLyAtICRpbnNwZWMgICA6IDxtaXhpbiBhcmd1bWVudHM+XG5cbkBtaXhpbiBzdXN5LWluc3BlY3QoXG4gICRtaXhpbixcbiAgJGluc3BlY3Rcbikge1xuICAkc2hvdzogZmFsc2U7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGluc3BlY3Qge1xuICAgIEBpZiBpbmRleCgkaXRlbSwgaW5zcGVjdCkge1xuICAgICAgJHNob3c6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzaG93IG9yIHN1c3ktZ2V0KGRlYnVnIGluc3BlY3QpIHtcbiAgICAtc3VzeS0jeyRtaXhpbn06IGluc3BlY3QoJGluc3BlY3QpO1xuICB9XG59XG4iLCIvLyBPdXRwdXRcbi8vID09PT09PVxuXG4vLyBPdXRwdXRcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IENTUyB3aXRoIHByb3BlciBicm93c2VyIHN1cHBvcnQuXG4vLyAtICRzdHlsZXMgIDogPG1hcCBvZiBjc3MgcHJvcGVydHktdmFsdWUgcGFpcnM+XG5AbWl4aW4gb3V0cHV0KFxuICAkc3R5bGVzXG4pIHtcbiAgQGVhY2ggJHByb3AsICR2YWwgaW4gJHN0eWxlcyB7XG4gICAgQGluY2x1ZGUgc3VzeS1zdXBwb3J0KCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gR3JpZCBCYWNrZ3JvdW5kIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuLy8gLSBTdWItcGl4ZWwgcm91bmRpbmcgY2FuIGxlYWQgdG8gc2V2ZXJhbCBwaXhlbHMgdmFyaWF0aW9uIGJldHdlZW4gYnJvd3NlcnMuXG5cbi8vIEdyaWQgQmFja2dyb3VuZCBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGltYWdlOiBiYWNrZ3JvdW5kLWltYWdlXG4vLyAtICRzaXplOiBiYWNrZ3JvdW5kLXNpemVcbi8vIC0gJGNsaXA6IGJhY2tncm91bmQtY2xpcFxuLy8gLSBbJGZsb3ddOiBsdHIgfCBydGxcbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0IChcbiAgJGltYWdlLFxuICAkc2l6ZTogbnVsbCxcbiAgJGNsaXA6IG51bGwsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2UsXG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZSxcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBmcm9tKCRmbG93KSB0b3AsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBNYXJnaW5zIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gTWFyZ2luIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBtYXJnaW4tb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUGFkZGluZyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIFBhZGRpbmcgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBwYWRkaW5nLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBDb250YWluZXJcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGZsb2F0LWNvbnRhaW5lcihcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gIEBpbmNsdWRlIHN1c3ktY2xlYXJmaXg7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1vdXRwdXQoJHdpZHRoLCAkanVzdGlmeSwgJHByb3BlcnR5KTtcbn1cbiIsIi8vIEZsb2F0IFNwYW4gQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBTcGFuIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHdpZHRoICAgICAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG9hdF0gICAgICAgICAgIDogZnJvbSB8IHRvXG4vLyAtIFskbWFyZ2luLWJlZm9yZV0gICA6IDxsZW5ndGg+XG4vLyAtIFskbWFyZ2luLWFmdGVyXSAgICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1iZWZvcmVdICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1hZnRlcl0gICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gICAgICAgICAgICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LXNwYW4tb3V0cHV0KFxuICAkd2lkdGgsXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbSxcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsLFxuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGwsXG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbCxcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsLFxuICAkZmxvdyAgICAgICAgICAgICA6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvICAgICA6IHRvKCRmbG93KTtcbiAgJGZyb20gICA6IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aDogJHdpZHRoLFxuICAgIGZsb2F0OiBpZigkZmxvYXQgPT0gdG8sICR0bywgbnVsbCkgb3IgaWYoJGZsb2F0ID09IGZyb20sICRmcm9tLCBudWxsKSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkcGFkZGluZy1hZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IElzb2xhdGlvbiBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gSXNvbGF0ZSBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRwdXNoICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBpc29sYXRlLW91dHB1dChcbiAgJHB1c2gsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiAkZnJvbSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRwdXNoLFxuICAgIG1hcmdpbi0jeyR0b306IC0xMDAlLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFN1c3kgU2V0dGluZ3Ncbi8vID09PT09PT09PT09PT1cblxuLy8gU3VzeSBMYW5ndWFnZSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBjZW50ZXIsXG4gIGd1dHRlci1wb3NpdGlvbjogYWZ0ZXIsXG4gIGdsb2JhbC1ib3gtc2l6aW5nOiBjb250ZW50LWJveCxcbiAgZGVidWc6IChcbiAgICBpbWFnZTogaGlkZSxcbiAgICBjb2xvcjogcmdiYSgjNjZmLCAuMjUpLFxuICAgIG91dHB1dDogYmFja2dyb3VuZCxcbiAgICB0b2dnbGU6IHRvcCByaWdodCxcbiAgKSxcbikpO1xuXG5cbi8vIFZhbGlkIEtleXdvcmQgVmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFOiBET05UJ1QgVE9VQ0hcbiRzdXN5LWtleXdvcmRzOiAoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogc3RhdGljIGZsdWlkLFxuICBvdXRwdXQ6IGlzb2xhdGUgZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogbGVmdCBjZW50ZXIgcmlnaHQsXG4gIGZsb3c6IGx0ciBydGwsXG4gIGd1dHRlci1wb3NpdGlvbjogYmVmb3JlIGFmdGVyIHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljLFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94IGNvbnRlbnQtYm94LFxuICBzcGFuOiBmdWxsLFxuICBlZGdlOiBmaXJzdCBhbHBoYSBsYXN0IG9tZWdhIGZ1bGwsXG4gIHNwcmVhZDogbmFycm93IHdpZGUgd2lkZXIsXG4gIGd1dHRlci1vdmVycmlkZTogbm8tZ3V0dGVycyBuby1ndXR0ZXIsXG4gIHJvbGU6IG5lc3QsXG4gIGNsZWFyOiBicmVhayBub2JyZWFrLFxuICBkZWJ1ZyBpbWFnZTogc2hvdyBoaWRlIHNob3ctY29sdW1ucyBzaG93LWJhc2VsaW5lLFxuICBkZWJ1ZyBvdXRwdXQ6IGJhY2tncm91bmQgb3ZlcmxheSxcbik7XG5cblxuLy8gUGFyc2UgU3VzeSBLZXl3b3JkcyBhbmQgTWFwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNldHRpbmdzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gc3RyaW5nc1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IHN0cmluZyB7XG4gICAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkc3VzeS1rZXl3b3JkcyB7XG4gICAgICAgICAgQGlmIGluZGV4KCR2YWx1ZSwgJGl0ZW0pIHtcbiAgICAgICAgICAgICRfa2V5LXZhbHVlOiBhcHBlbmQoJGtleSwgJGl0ZW0pO1xuICAgICAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtc2V0KCRfcmV0dXJuLCAkX2tleS12YWx1ZS4uLik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAvLyBtYXBzXG4gICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IG1hcCB7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIENvbHVtbnMgJiBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWxheW91dChcbiAgJHNob3J0XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuICAkX2NvbHVtbnM6ICgpO1xuICAkX2d1dHRlcnM6IG51bGw7XG5cbiAgQGlmIG5vdCh1bml0bGVzcyhudGgobnRoKCRzaG9ydCwgMSksIDEpKSkge1xuICAgICRfZ3V0dGVyczogbnRoKCRzaG9ydCwgMSk7XG4gIH0gQGVsc2Uge1xuICAgICRfY29sdW1uczogKGNvbHVtbnM6IG50aCgkc2hvcnQsIDEpKTtcbiAgICAkX2d1dHRlcnM6IGlmKGxlbmd0aCgkc2hvcnQpID4gMSwgbnRoKCRzaG9ydCwgMiksICRfZ3V0dGVycyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkX2d1dHRlcnMpID09IGxpc3QgYW5kIGxlbmd0aCgkX2d1dHRlcnMpID4gMCB7XG4gICAgJF9ndXR0ZXJzOiAoXG4gICAgICBndXR0ZXJzOiBudGgoJF9ndXR0ZXJzLCAyKSAvIG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICAgY29sdW1uLXdpZHRoOiBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlcnM6IGlmKCRfZ3V0dGVycywgKGd1dHRlcnM6ICRfZ3V0dGVycyksICgpKTtcbiAgfVxuXG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfY29sdW1ucyk7XG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfZ3V0dGVycyk7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHcmlkL0NvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWdyaWQoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogcGFyc2Utc2V0dGluZ3MoJHNob3J0KTtcbiAgJF9sYXlvdXQ6ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gbnVtYmVyIG9yIGxpc3RcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IG9yIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICAgJF9sYXlvdXQ6IGFwcGVuZCgkX2xheW91dCwgJGl0ZW0pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY29udGFpbmVyOiAkaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9sYXlvdXQ6IGlmKGxlbmd0aCgkX2xheW91dCkgPiAwLCBwYXJzZS1sYXlvdXQoJF9sYXlvdXQpLCAkX2xheW91dCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkX3JldHVybiwgJF9sYXlvdXQpO1xufVxuXG5cbi8vIFBhcnNlIFNwYW5cbi8vIC0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zcGFuKFxuICAkc2hvcnQsXG4gICRrZXk6IHNwYW5cbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgICRfYXQ6IGluZGV4KCRzaG9ydCwgYXQpO1xuXG4gICAgQGlmICRfYXQge1xuICAgICAgJF9sb2NpOiAkX2F0ICsgMTtcbiAgICAgICRfbG9jYXRpb246IG50aCgkc2hvcnQsICRfbG9jaSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAobG9jYXRpb246ICRfbG9jYXRpb24pKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfYXQsIG51bGwpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9sb2NpLCBudWxsKTtcbiAgICB9XG5cbiAgICAkX2k6IDE7XG4gICAgJF9zcGFuOiAoKTtcblxuICAgIEB3aGlsZSAkX2kgPD0gbGVuZ3RoKCRzaG9ydCkge1xuICAgICAgJF90aGlzOiBudGgoJHNob3J0LCAkX2kpO1xuXG4gICAgICBAaWYgdHlwZS1vZigkX3RoaXMpID09IG51bWJlciB7XG4gICAgICAgICRfc3BhbjogYXBwZW5kKCRfc3BhbiwgJF90aGlzKTtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgIH0gQGVsc2UgaWYgJF90aGlzID09IG9mIHtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgICAgJF9pOiBsZW5ndGgoJHNob3J0KSArIDE7XG4gICAgICB9XG5cbiAgICAgICRfaTogJF9pICsgMTtcbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCRfc3BhbikgPiAwIHtcbiAgICAgICRfc3BhbjogaWYobGVuZ3RoKCRfc3BhbikgPT0gMSwgbnRoKCRfc3BhbiwgMSksICRfc3Bhbik7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJGtleTogJF9zcGFuKSk7XG4gICAgfVxuXG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgcGFyc2UtZ3JpZCgkc2hvcnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWd1dHRlcnMoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX2d1dHRlcnM6IHBhcnNlLXNwYW4oJHNob3J0LCBndXR0ZXItb3ZlcnJpZGUpO1xuICAkX3NwYW46IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJF9ndXR0ZXJzKTtcblxuICBAaWYgJF9zcGFuIGFuZCBub3QobWFwLWdldCgkX2d1dHRlcnMsIGNvbHVtbnMpKSB7XG4gICAgJF9jb250ZXh0OiAoKTtcbiAgICAkX25ldzogKCk7XG5cbiAgICBAZWFjaCAkaXRlbSBpbiAkX3NwYW4ge1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgJF9jb250ZXh0OiBhcHBlbmQoJF9jb250ZXh0LCAkaXRlbSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJF9uZXc6IGFwcGVuZCgkX25ldywgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICRfY29udGV4dDogcGFyc2UtZ3JpZCgkX2NvbnRleHQpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDAsIG51bGwsICRfbmV3KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAxLCBudGgoJF9uZXcsIDEpLCAkX25ldyk7XG4gICAgJF9uZXc6IChndXR0ZXItb3ZlcnJpZGU6IGlmKCRfbmV3ICE9ICRfc3BhbiwgJF9uZXcsICRfc3BhbikpO1xuXG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX25ldyk7XG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX2NvbnRleHQpO1xuICB9XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG4iLCIvLyBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09XG5cblxuLy8gVmFsaWRhdGUgQ29sdW1uIE1hdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1uLW1hdGgoXG4gICRtYXRoLFxuICAkY29sdW1uLXdpZHRoXG4pIHtcbiAgQGlmICRtYXRoID09IHN0YXRpYyBhbmQgbm90KCRjb2x1bW4td2lkdGgpIHtcbiAgICBAZXJyb3IgJ1N0YXRpYyBtYXRoIHJlcXVpcmVzIGEgdmFsaWQgY29sdW1uLXdpZHRoIHNldHRpbmcuJztcbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi13aWR0aDtcbn1cbiIsIi8vIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBTZXQgYSBuZXcgbGF5b3V0IHVzaW5nIGEgc2hvcnRoYW5kXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXlvdXQsICRpbnNwZWN0KTtcbn1cblxuXG4vLyBVc2UgR3JpZFxuLy8gLS0tLS0tLS1cbi8vIFVzZSBhbiBhcmJpdHJhcnkgbGF5b3V0IGZvciBhIHNlY3Rpb24gb2YgY29kZVxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIHdpdGgtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJG9sZCAgICAgIDogJHN1c3k7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qod2l0aC1sYXlvdXQsICRpbnNwZWN0KTtcblxuICBAY29udGVudDtcblxuICAkc3VzeTogJG9sZCAhZ2xvYmFsO1xufVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gYSBwYXJzZWQgbGF5b3V0IG1hcCBiYXNlZCBvbiBzaG9ydGhhbmQgc3ludGF4XG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBsYXlvdXQoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgQHJldHVybiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xufVxuXG5cbi8vIEdldCBMYXlvdXRcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIG5ldyBsYXlvdXQgYmFzZWQgb24gY3VycmVudCBhbmQgZ2l2ZW4gc2V0dGluZ3Ncbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBmdW5jdGlvbiBfZ2V0LWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRsYXlvdXQ6IGxheW91dCgkbGF5b3V0KTtcbiAgQHJldHVybiBpZigkY2xlYW4sICRsYXlvdXQsIF9zdXN5LWRlZXAtbWVyZ2UoJHN1c3ksICRsYXlvdXQpKTtcbn1cbiIsIi8vIFN1c3kgQm94IFNpemluZ1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBib3ggbW9kZWwgZ2xvYmFsbHkgb24gYWxsIGVsZW1lbnRzLlxuLy8gLSBbJGJveF06IGJvcmRlci1ib3ggfCBjb250ZW50LWJveFxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBnbG9iYWwtYm94LXNpemluZyhcbiAgJGJveDogc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpLFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdDogJGJveDtcblxuICBAaWYgJGluaGVyaXQge1xuICAgIEBhdC1yb290IHtcbiAgICAgICBodG1sIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgICAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cbiAgICAgfVxuICB9IEBlbHNlIHtcbiAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2xvYmFsLWJveC1zaXppbmcsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgdXBkYXRlLWJveC1tb2RlbCgkYm94KTtcbn1cblxuLy8gQm9yZGVyIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBIGxlZ2FjeSBzaG9ydGN1dC4uLlxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBib3JkZXItYm94LXNpemluZyhcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCwgJGluaGVyaXQpO1xufVxuXG4vLyBVcGRhdGUgQm94IE1vZGVsXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBVcGRhdGVzIGdsb2JhbCBib3ggbW9kZWwgc2V0dGluZ1xuQG1peGluIHVwZGF0ZS1ib3gtbW9kZWwoXG4gICRib3hcbikge1xuICBAaWYgJGJveCAhPSBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykge1xuICBAaW5jbHVkZSBzdXN5LXNldChnbG9iYWwtYm94LXNpemluZywgJGJveCk7XG4gIH1cbn1cbiIsIi8vIENvbnRleHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBOZXN0ZWQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBncmlkIGZvciBuZXN0ZWQgY29udGV4dC5cbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuQGZ1bmN0aW9uIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkY29udGV4dCAgICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkc3BhbiAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRjb250ZXh0KTtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGNvbnRleHQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcblxuICBAcmV0dXJuIHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xufVxuXG4vLyBOZXN0ZWQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFVzZSBhIHN1YnNldCBncmlkIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbi8vIC0gQGNvbnRlbnQgICA6IDxjb250ZW50PlxuQG1peGluIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRvbGQgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpO1xuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiBuZXN0ZWQoJGNvbnRleHQpKSkgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobmVzdGVkLCAkaW5zcGVjdCk7XG4gIEBjb250ZW50O1xuXG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6ICRvbGQpKSAhZ2xvYmFsO1xufVxuIiwiLy8gQmFja2dyb3VuZCBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IGZhbHNlO1xuXG5cbi8vIFNob3cgR3JpZC9zXG4vLyAtLS0tLS0tLS0tLVxuLy8gU2hvdyBncmlkIG9uIGFueSBlbGVtZW50IHVzaW5nIGVpdGhlciBiYWNrZ3JvdW5kIG9yIG92ZXJsYXkuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIHNob3ctZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3Q6ICRncmlkO1xuICAkX291dHB1dDogZGVidWctZ2V0KG91dHB1dCwgJGdyaWQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzaG93LWdyaWQsICRpbnNwZWN0KTtcbiAgQGlmICRfb3V0cHV0ID09IG92ZXJsYXkgYW5kIHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCkgIT0gaGlkZSB7XG4gICAgQGluY2x1ZGUgb3ZlcmxheS1ncmlkKCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvdy1ncmlkcyhcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRncmlkKTtcbn1cblxuLy8gQmFja2dyb3VuZCBHcmlkXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNob3cgYSBncmlkIGJhY2tncm91bmQgb24gYW55IGVsZW1lbnQuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIGJhY2tncm91bmQtZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGdyaWQ7XG4gICRfb3V0cHV0ICA6IGdldC1iYWNrZ3JvdW5kKCRncmlkKTtcblxuICBAaWYgbGVuZ3RoKCRfb3V0cHV0KSA+IDAge1xuICAgICRfZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpO1xuXG4gICAgJF9pbWFnZTogKCk7XG4gICAgQGVhY2ggJG5hbWUsICRsYXllciBpbiBtYXAtZ2V0KCRfb3V0cHV0LCBpbWFnZSkge1xuICAgICAgJF9kaXJlY3Rpb246IGlmKCRuYW1lID09IGJhc2VsaW5lLCB0byBib3R0b20sIHRvIHRvKCRfZmxvdykpO1xuICAgICAgJF9pbWFnZTogYXBwZW5kKCRfaW1hZ2UsIGxpbmVhci1ncmFkaWVudCgkX2RpcmVjdGlvbiwgJGxheWVyKSwgY29tbWEpO1xuICAgIH1cbiAgICAkX291dHB1dDogbWFwLW1lcmdlKCRfb3V0cHV0LCAoaW1hZ2U6ICRfaW1hZ2UpKTtcblxuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICAgIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChiYWNrZ3JvdW5kLWdyaWQsICRpbnNwZWN0KTtcbiAgfVxufVxuXG5cbi8vIE92ZXJsYXkgR3JpZFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBHZW5lcmF0ZSBhbiBpY29uIHRvIHRyaWdnZXIgZ3JpZC1vdmVybGF5cyBvbiBhbnkgZ2l2ZW4gZWxlbWVudHMuXG4vLyAkZ3JpZHMuLi4gIDogPHNlbGVjdG9yPiBbPHNldHRpbmdzPl0gWywgPHNlbGVjdG9yPl0qXG5AbWl4aW4gb3ZlcmxheS1ncmlkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGlmIG5vdCgkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHMpIHtcbiAgICBAYXQtcm9vdCBoZWFkIHsgQGluY2x1ZGUgb3ZlcmxheS1oZWFkKCRncmlkKTsgfVxuICAgIEBhdC1yb290IGhlYWQ6YmVmb3JlIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpob3ZlciB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlci1ob3ZlcjsgfVxuICAgICRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgaGVhZDpob3ZlciB+ICYsXG4gIGhlYWQ6aG92ZXIgfiBib2R5ICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLW92ZXJsYXktYmFzZTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlciB7XG4gIGNvbnRlbnQ6IFwifHx8XCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udDoge1xuICAgIGZhbWlseTogc2Fucy1zZXJpZjtcbiAgICBzaXplOiAxNnB4O1xuICAgIHdlaWdodDogYm9sZDtcbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXIgSG92ZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXItaG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuNSk7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgSGVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGhlYWQ+IHN0eWxlcyB0byBjcmVhdGUgZ3JpZCBvdmVybGF5IHRvZ2dsZVxuQG1peGluIG92ZXJsYXktaGVhZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRfdG9nZ2xlOiBkZWJ1Zy1nZXQodG9nZ2xlLCAkZ3JpZCk7XG4gICRfaG9yejogbnVsbDtcbiAgJF92ZXJ0OiBudWxsO1xuXG4gIEBlYWNoICRzaWRlIGluICRfdG9nZ2xlIHtcbiAgICAkX2hvcno6IGlmKCRzaWRlID09IGxlZnQgb3IgJHNpZGUgPT0gcmlnaHQsICRzaWRlLCAkX2hvcnopO1xuICAgICRfdmVydDogaWYoJHNpZGUgPT0gdG9wIG9yICRzaWRlID09IGJvdHRvbSwgJHNpZGUsICRfdmVydCk7XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICAjeyRfaG9yen06IDEwcHg7XG4gICN7JF92ZXJ0fTogMTBweDtcbiAgei1pbmRleDogOTk5O1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjI1KTtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gR3JpZCBPdmVybGF5IEJhc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmFzZSBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIG92ZXJsYXlcbkBtaXhpbiBncmlkLW92ZXJsYXktYmFzZSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICB6LWluZGV4OiA5OTg7XG59XG5cblxuLy8gR2V0IFN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLXN5bShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgICAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9ndXR0ZXJzICAgICAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGdyaWQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRncmlkKTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGdyaWQpO1xuXG4gICRfY29sb3IgICAgICAgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfdHJhbnMgICAgICAgICA6IHRyYW5zcGFyZW50O1xuICAkX2xpZ2h0ICAgICAgICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG5cbiAgJF9lbmQgICAgICAgICAgIDogMSArICRfZ3V0dGVycztcbiAgJF9hZnRlciAgICAgICAgIDogcGVyY2VudGFnZSgxLyRfZW5kKTtcbiAgJF9zdG9wcyAgICAgICAgIDogKCk7XG4gICRfc2l6ZSAgICAgICAgICA6IHNwYW4oMSAkZ3JpZCB3aWRlKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodDtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3BsaXQ6ICRfZ3V0dGVycy8yO1xuICAgICRfYmVmb3JlOiBwZXJjZW50YWdlKCRfc3BsaXQvJF9lbmQpO1xuICAgICRfYWZ0ZXI6IHBlcmNlbnRhZ2UoKDEgKyAkX3NwbGl0KS8kX2VuZCk7XG4gICAgJF9zdG9wczogJF90cmFucyAkX2JlZm9yZSwgJF9jb2xvciAkX2JlZm9yZSwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9XG5cbiAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICRfc2l6ZTogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkgKiAkX2VuZDtcbiAgfVxuXG4gICRfb3V0cHV0OiAoXG4gICAgaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSxcbiAgICBzaXplOiAkX3NpemUsXG4gICk7XG5cbiAgQHJldHVybiAkX291dHB1dDtcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEluc2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1pbnNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgU3BsaXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1zcGxpdChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRzdGFydCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuXG4gICAgJF9lbmQ6ICRzdGFydCArIHNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRfZW5kLCBjb21tYSk7XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIE91dHNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLW91dHNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfdHJhbnMgICA6IHRyYW5zcGFyZW50O1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGd1dHRlcjogZ2V0LXNwYW4td2lkdGgoZmlyc3QgJGxvY2F0aW9uICRncmlkKTtcblxuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuXG4gICAgICAkZ3V0dGVyOiAkX2xpZ2h0ICRndXR0ZXIsICRfdHJhbnMgJGd1dHRlciwgJF90cmFucyAkX2VuZDtcbiAgICAgICR0aGlzLXN0b3A6IGpvaW4oJHRoaXMtc3RvcCwgJGd1dHRlciwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtYXN5bShcbiAgJGdyaWRcbikge1xuICAkX3N0b3BzOiAoKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0taW5zaWRlKCRncmlkKTtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLXNwbGl0KCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tb3V0c2lkZSgkZ3JpZCk7XG4gIH1cblxuICBAcmV0dXJuIChpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpKTtcbn1cblxuXG4vLyBHZXQgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9zaG93ICAgIDogc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKTtcbiAgJF9yZXR1cm4gIDogKCk7XG5cbiAgQGlmICRfc2hvdyBhbmQgJF9zaG93ICE9ICdoaWRlJyB7XG4gICAgJF9jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICAkX3N5bTogaXMtc3ltbWV0cmljYWwoJF9jb2x1bW5zKTtcbiAgICAgICRfcmV0dXJuOiBpZigkX3N5bSwgZ2V0LWJhY2tncm91bmQtc3ltKCRncmlkKSwgZ2V0LWJhY2tncm91bmQtYXN5bSgkZ3JpZCkpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGNvbnRlbnQtYm94KSk7XG4gICAgfVxuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1jb2x1bW5zJ1xuICAgICAgYW5kIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoYmFzZS1saW5lLWhlaWdodClcbiAgICAgIGFuZCB0eXBlLW9mKCRiYXNlLWxpbmUtaGVpZ2h0KSA9PSAnbnVtYmVyJ1xuICAgICAgYW5kIG5vdCB1bml0bGVzcygkYmFzZS1saW5lLWhlaWdodCkge1xuICAgICAgJF9jb2xvcjogdmFyaWFibGUtZXhpc3RzKCdncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3InKTtcbiAgICAgICRfY29sb3I6IGlmKCRfY29sb3IsICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICMwMDApO1xuXG4gICAgICAkX2ltYWdlOiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSk7XG4gICAgICAkX3NpemU6IG1hcC1nZXQoJF9yZXR1cm4sIHNpemUpO1xuICAgICAgJF9iYXNlbGluZTogKGJhc2VsaW5lOiAoJF9jb2xvciAxcHgsIHRyYW5zcGFyZW50IDFweCkpO1xuICAgICAgJF9iYXNlbGluZS1zaXplOiAxMDAlICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoXG4gICAgICAgIGltYWdlOiBpZigkX2ltYWdlLCBtYXAtbWVyZ2UoJF9pbWFnZSwgJF9iYXNlbGluZSksICRfYmFzZWxpbmUpLFxuICAgICAgICBzaXplOiBpZigkX3NpemUsICgkX3NpemUsICRfYmFzZWxpbmUtc2l6ZSksICRfYmFzZWxpbmUtc2l6ZSksXG4gICAgICApKTtcblxuICAgICAgQGlmICRfc2hvdyA9PSAnc2hvdycge1xuICAgICAgICAkX2NsaXA6IG1hcC1nZXQoJF9yZXR1cm4sIGNsaXApO1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogam9pbigkX2NsaXAsIGJvcmRlci1ib3gsIGNvbW1hKSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJF9zaG93ID09ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICBAd2FybiAnUGxlYXNlIHByb3ZpZGUgYSAkYmFzZS1saW5lLWhlaWdodCB3aXRoIHRoZSBkZXNpcmVkIGhlaWdodCBhbmQgdW5pdHMnO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSkge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChmbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gR2V0IERlYnVnXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgdmFsdWUgb2YgYSBkZWJ1ZyBzZXR0aW5nXG4vLyAtICRrZXk6IDxzZXR0aW5nPlxuQGZ1bmN0aW9uIGRlYnVnLWdldChcbiAgJGtleSxcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGtleTogam9pbihkZWJ1ZywgJGtleSwgc3BhY2UpO1xuICBAcmV0dXJuIHN1c3ktZ2V0KCRrZXksICRncmlkKTtcbn1cbiIsIi8vIENvbnRhaW5lciBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBjb250YWluZXIgZWxlbWVudFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQG1peGluIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgICA6ICRsYXlvdXQ7XG4gICRsYXlvdXQgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcblxuICAkX3dpZHRoICAgICA6IGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG4gICRfanVzdGlmeSAgIDogcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKHN1c3ktZ2V0KGNvbnRhaW5lci1wb3NpdGlvbiwgJGxheW91dCkpO1xuICAkX3Byb3BlcnR5ICA6IGlmKHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpID09IHN0YXRpYywgd2lkdGgsIG1heC13aWR0aCk7XG5cbiAgJF9ib3ggICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkbGF5b3V0KTtcblxuICBAaWYgJF9ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJF9ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChjb250YWluZXIsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgZmxvYXQtY29udGFpbmVyKCRfd2lkdGgsICRfanVzdGlmeSwgJF9wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0KTtcbn1cblxuLy8gQ29udGFpbmVyIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gIEByZXR1cm4gZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbn1cblxuLy8gR2V0IENvbnRhaW5lciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIHRoZSBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWNvbnRhaW5lci13aWR0aChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0ICAgICAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX3dpZHRoICAgICAgICAgOiBzdXN5LWdldChjb250YWluZXIsICRsYXlvdXQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRsYXlvdXQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkbGF5b3V0KTtcblxuICBAaWYgbm90KCRfd2lkdGgpIG9yICRfd2lkdGggPT0gYXV0byB7XG4gICAgQGlmIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpIHtcbiAgICAgICRfY29sdW1ucyAgIDogc3VzeS1nZXQoY29sdW1ucywgJGxheW91dCk7XG4gICAgICAkX2d1dHRlcnMgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRsYXlvdXQpO1xuICAgICAgJF9zcHJlYWQgICAgOiBpZihpcy1zcGxpdCgkbGF5b3V0KSwgd2lkZSwgbmFycm93KTtcbiAgICAgICRfd2lkdGggICAgIDogc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSAqICRfY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF93aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfd2lkdGg7XG59XG5cbi8vIFBhcnNlIENvbnRhaW5lciBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZSB0aGUgJGNvbnRhaW5lci1wb3NpdGlvbiBpbnRvIG1hcmdpbiB2YWx1ZXMuXG4vLyAtIFskanVzdGlmeV0gICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IDxsZW5ndGg+IFs8bGVuZ3RoPl1cbkBmdW5jdGlvbiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oXG4gICRqdXN0aWZ5OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBjb250YWluZXItcG9zaXRpb24pXG4pIHtcbiAgJF9yZXR1cm46IGlmKCRqdXN0aWZ5ID09IGxlZnQsIDAsIGF1dG8pIGlmKCRqdXN0aWZ5ID09IHJpZ2h0LCAwLCBhdXRvKTtcblxuICBAaWYgbm90KGluZGV4KGxlZnQgcmlnaHQgY2VudGVyLCAkanVzdGlmeSkpIHtcbiAgICAkX3JldHVybjogbnRoKCRqdXN0aWZ5LCAxKTtcbiAgICAkX3JldHVybjogJF9yZXR1cm4gaWYobGVuZ3RoKCRqdXN0aWZ5KSA+IDEsIG50aCgkanVzdGlmeSwgMiksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIElzb2xhdGlvbiBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuXG4vLyBJc29sYXRlIFtNaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGlzb2xhdGlvbiBhcyBhbiBvdmVycmlkZS5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBtaXhpbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpbnNwZWN0OiAkaXNvbGF0ZTtcblxuICAkb3V0cHV0OiAoXG4gICAgcHVzaDogaXNvbGF0ZSgkaXNvbGF0ZSksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGlzb2xhdGUpLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChpc29sYXRlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGlzb2xhdGUtb3V0cHV0KCRvdXRwdXQuLi4pO1xufVxuXG5cbi8vIElzb2xhdGUgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYW4gaXNvbGF0aW9uIG9mZnNldCB3aWR0aC5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBmdW5jdGlvbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpc29sYXRlOiBwYXJzZS1zcGFuKCRpc29sYXRlKTtcbiAgJGlzb2xhdGlvbjogc3VzeS1nZXQoc3BhbiwgJGlzb2xhdGUpO1xuXG4gIEBpZiAkaXNvbGF0aW9uIGFuZCBub3QoZ2V0LWxvY2F0aW9uKCRpc29sYXRlKSkge1xuICAgICRuZXc6IChcbiAgICAgIHNwYW46IG51bGwsXG4gICAgICBsb2NhdGlvbjogJGlzb2xhdGlvbixcbiAgICApO1xuICAgICRpc29sYXRlOiBtYXAtbWVyZ2UoJGlzb2xhdGUsICRuZXcpO1xuICB9XG5cbiAgQHJldHVybiBnZXQtaXNvbGF0aW9uKCRpc29sYXRlKTtcbn1cblxuXG4vLyBHZXQgSXNvbGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGhcbi8vIC0gJGlucHV0OiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1pc29sYXRpb24oXG4gICRpbnB1dFxuKSB7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRpbnB1dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGlucHV0KTtcbiAgJHdpZHRoICAgICAgOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyIGFuZCBub3QodW5pdGxlc3MoJGxvY2F0aW9uKSkge1xuICAgICR3aWR0aDogJGxvY2F0aW9uO1xuICB9IEBlbHNlIGlmICRsb2NhdGlvbiB7XG4gICAgJHB1c2g6ICRsb2NhdGlvbiAtIDE7XG4gICAgQGlmICRwdXNoID4gMCB7XG4gICAgICAkcHVzaDogbWFwLW1lcmdlKCRpbnB1dCwgKFxuICAgICAgICBzcGFuOiAkcHVzaCxcbiAgICAgICAgbG9jYXRpb246IDEsXG4gICAgICAgIHNwcmVhZDogd2lkZSxcbiAgICAgICkpO1xuICAgICAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkcHVzaCk7XG4gICAgfVxuICB9XG5cbiAgQGlmIHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGlucHV0KSA9PSBzcGxpdFxuICAgICAgYW5kIHN1c3ktZ2V0KGd1dHRlcnMsICRpbnB1dCkgPiAwIHtcbiAgICAkd2lkdGg6IGlmKCR3aWR0aCA9PSBudWxsLCBndXR0ZXJzKCRpbnB1dCksICR3aWR0aCArIGd1dHRlcnMoJGlucHV0KSk7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aCBvciAwO1xufVxuIiwiLy8gR2FsbGVyeSBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIEdhbGxlcnlcbi8vIC0tLS0tLS1cbi8vIENyZWF0ZSBhbiBpc29sYXRlZCBnYWxsZXJ5XG4vLyAtICRzcGFuICAgICAgICA6IDxzcGFuPlxuLy8gLSBbJHNlbGVjdG9yXSAgOiBjaGlsZCB8IG9mLXR5cGVcbkBtaXhpbiBnYWxsZXJ5KFxuICAkc3BhbixcbiAgJHNlbGVjdG9yOiBjaGlsZFxuKSB7XG4gICRpbnNwZWN0ICAgIDogJHNwYW47XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRzcGFuICAgICAgIDogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246IDEpKTtcblxuICAkbiAgICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkY29udGV4dCAgICAgIDogc3VzeS1jb3VudCgkY29sdW1ucyk7XG4gICRmbG93ICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG5cbiAgJGluc2lkZSAgICAgICA6IGlzLWluc2lkZSgkc3Bhbik7XG4gICRmcm9tICAgICAgICAgOiBmcm9tKCRmbG93KTtcbiAgJGxpbmUgICAgICAgICA6IGZsb29yKCRjb250ZXh0IC8gJG4pO1xuICAkc3ltbWV0cmljYWwgIDogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aCAgICAgICAgICAgICA6IG51bGwsXG4gICAgZmxvYXQgICAgICAgICAgICAgOiBmcm9tLFxuICAgIG1hcmdpbi1iZWZvcmUgICAgIDogbnVsbCxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IG51bGwsXG4gICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICApO1xuXG4gIEBpZiAkaW5zaWRlIHtcbiAgICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAoXG4gICAgICBwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKSxcbiAgICAgIHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKSxcbiAgICApKTtcbiAgfVxuXG4gIEBpZiAkc3ltbWV0cmljYWwge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAod2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKSkpO1xuICB9XG5cbiAgJGJveCAgICAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGdsb2JhbC1ib3ggICA6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSA9PSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2FsbGVyeSwgJGluc3BlY3QpO1xuXG4gIC8vIENvbGxlY3RpdmUgT3V0cHV0XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggb3IgKCRpbnNpZGUgYW5kIG5vdCgkYm94KSBhbmQgbm90KCRnbG9iYWwtYm94KSkge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogYm9yZGVyLWJveCkpO1xuICB9IEBlbHNlIGlmICRib3ggPT0gY29udGVudC1ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogY29udGVudC1ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIC8vIEluZGl2aWR1YWwgTG9vcFxuICBAZm9yICRpdGVtIGZyb20gMSB0aHJvdWdoICRsaW5lIHtcbiAgICAkbnRoOiAnI3skbGluZX1uICsgI3skaXRlbX0nO1xuICAgICY6bnRoLSN7JHNlbGVjdG9yfSgjeyRudGh9KSB7XG4gICAgICAvLyBJbmRpdmlkdWFsIFByZXBcbiAgICAgICRvdXRwdXQ6IChcbiAgICAgICAgd2lkdGggICAgICAgICAgICAgOiBpZigkc3ltbWV0cmljYWwsIG51bGwsIGdldC1zcGFuLXdpZHRoKCRzcGFuKSksXG4gICAgICAgIGZsb2F0ICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgbWFyZ2luLWJlZm9yZSAgICAgOiBnZXQtaXNvbGF0aW9uKCRzcGFuKSxcbiAgICAgICAgbWFyZ2luLWFmdGVyICAgICAgOiAtMTAwJSxcbiAgICAgICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgICAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICAgICApO1xuXG4gICAgICAvLyBJbmRpdmlkdWFsIE91dHB1dFxuICAgICAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgICAgIEBpZiBnZXQtZWRnZSgkc3BhbikgPT0gZmlyc3Qge1xuICAgICAgICBAaW5jbHVkZSBicmVhaztcbiAgICAgICAgQGluY2x1ZGUgZmlyc3QoJHNwYW4pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgTG9jYXRpb24gSW5jcmVtZW50XG4gICAgICAkbG9jYXRpb246IGdldC1sb2NhdGlvbigkc3BhbikgKyAkbjtcbiAgICAgICRsb2NhdGlvbjogaWYoJGxvY2F0aW9uID4gJGNvbnRleHQsIDEsICRsb2NhdGlvbik7XG4gICAgICAkc3BhbjogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246ICRsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZ3V0dGVyIDogZ3V0dGVyKCRzcGFuKTtcbiAgJHNwYW4gICA6IHNwYW4oJHNwYW4pO1xuICAkd2lkdGggIDogaWYoJHNwbGl0IGFuZCAkZ3V0dGVyLCAkc3BhbiArICRndXR0ZXIsICRzcGFuKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNxdWlzaCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmUoJHByZSk7XG4gIEBpbmNsdWRlIHBvc3QoJHBvc3QpO1xufVxuIiwiLy8gUGFkZGluZyBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmVmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFN1ZmZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzdWZmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHN1ZmZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUGFkXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBwYWQoXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocGFkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZWZpeCgkcHJlKTtcbiAgQGluY2x1ZGUgc3VmZml4KCRwb3N0KTtcblxufVxuIiwiLy8gQmxlZWQgU3ludGF4XG4vLyA9PT09PT09PT09PT1cblxuLy8gQmxlZWRcbi8vIC0tLS0tXG4vLyBBZGQgbmVnYXRpdmUgbWFyZ2lucywgYW5kIGVxdWFsIHBvc2l0aXZlIHBhZGRpbmcgdG8gY3JlYXRlIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQoXG4gICRibGVlZDogMCBndXR0ZXIoKVxuKSB7XG4gICRpbnNwZWN0ICA6ICRibGVlZDtcbiAgJG91dHB1dCAgIDogZ2V0LWJsZWVkKCRibGVlZCk7XG5cbiAgQGlmIHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSBjb250ZW50LWJveCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKChib3gtc2l6aW5nOiBjb250ZW50LWJveCksICRvdXRwdXQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJsZWVkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuXG4vLyBCbGVlZC14XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgaG9yaXpvbnRhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXgoXG4gICRibGVlZDogZ3V0dGVyKClcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAyKSAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXggb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEJsZWVkLXlcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciB2ZXJ0aWNhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXkoXG4gICRibGVlZDogaWYoZnVuY3Rpb24tZXhpc3RzKHJoeXRobSksIHJoeXRobSgxKSwgMWVtKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwIG50aCgkdHJibCwgMikgMCkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteSBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gR2V0IEJsZWVkXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBibGVlZCBvdXRwdXQgdmFsdWVzXG4vLyAtICRibGVlZDogPHNwYW4+XG5AZnVuY3Rpb24gZ2V0LWJsZWVkKFxuICAkYmxlZWRcbikge1xuICAkYmxlZWQgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJGJsZWVkKSk7XG4gICR0cmJsICAgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG4gICRzaG9ydCAgICA6IG51bGw7XG4gICRvdXRwdXQgICA6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR0cmJsKSB7XG4gICAgJHRoaXM6IG50aCgkdHJibCwgJGkpO1xuICAgICRuZXc6ICgpO1xuICAgICRtYXJnaW46IG51bGw7XG4gICAgJHBhZGRpbmc6IG51bGw7XG4gICAgJHBhZGRpbmcteDogbnVsbDtcblxuICAgIEBpZiAkdGhpcyA+IDAge1xuICAgICAgJHRoaXM6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAkdGhpcykpO1xuICAgICAgJG1hcmdpbjogc3BhbigkdGhpcyk7XG4gICAgICAkcGFkZGluZzogJG1hcmdpbjtcbiAgICAgICRwYWRkaW5nLXg6ICRwYWRkaW5nO1xuICAgIH1cblxuICAgIEBpZiAkbWFyZ2luIGFuZCAkbWFyZ2luID4gMCB7XG4gICAgICAkbWFyZ2luOiAtICRtYXJnaW47XG5cbiAgICAgIEBpZiBpcy1pbnNpZGUoJHRoaXMpIHtcbiAgICAgICAgJGd1dHRlcjogZ3V0dGVyKCR0aGlzKTtcbiAgICAgICAgJGpvaW46IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHBhZGRpbmcsICRndXR0ZXIpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICRwYWRkaW5nLXg6IGlmKCRqb2luIGFuZCAkcGFkZGluZyA+IDAsICRwYWRkaW5nICsgJGd1dHRlciwgJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAyIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDMge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gNCB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAkbmV3KTtcbiAgfVxuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG91dHB1dCB7XG4gICAgJG91dHB1dDogaWYoJHZhbHVlID09IDAsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJHByb3A6IG51bGwpKSwgJG91dHB1dCk7XG4gIH1cblxuICBAcmV0dXJuIGJsZWVkLXNob3J0aGFuZCgkb3V0cHV0KTtcbn1cblxuLy8gQmxlZWQgU2hvcnRoYW5kXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENvbnZlcnQgYmxlZWQgb3V0cHV0IGludG8gc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuXG4vLyAtICRibGVlZDogPG91dHB1dCBtYXA+XG5AZnVuY3Rpb24gYmxlZWQtc2hvcnRoYW5kKFxuICAkYmxlZWRcbikge1xuICAkbWFyZ2luOiAoKTtcbiAgJHBhZGRpbmc6ICgpO1xuICAkcmV0dXJuOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJsZWVkIHtcbiAgICBAaWYgc3RyLWluZGV4KCRrZXksIG1hcmdpbikge1xuICAgICAgJG1hcmdpbjogbWFwLW1lcmdlKCRtYXJnaW4sICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIGlmIHN0ci1pbmRleCgka2V5LCBwYWRkaW5nKSA+IDAge1xuICAgICAgJHBhZGRpbmc6IG1hcC1tZXJnZSgkcGFkZGluZywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICRwcm9wczogKFxuICAgIG1hcmdpbjogJG1hcmdpbixcbiAgICBwYWRkaW5nOiAkcGFkZGluZyxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJG1hcCBpbiAkcHJvcHMge1xuICAgICRmb3VyOiBpZihsZW5ndGgobWFwLWtleXMoJG1hcCkpID09IDQsIHRydWUsIGZhbHNlKTtcbiAgICAkbnVsbDogaWYoaW5kZXgobWFwLXZhbHVlcygkbWFwKSwgbnVsbCksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkZm91ciBhbmQgbm90KCRudWxsKSB7XG4gICAgICAkdG9wOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS10b3AnKTtcbiAgICAgICRyaWdodDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tcmlnaHQnKTtcbiAgICAgICRib3R0b206IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWJvdHRvbScpO1xuICAgICAgJGxlZnQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWxlZnQnKTtcblxuICAgICAgJHRiOiBpZigkdG9wID09ICRib3R0b20sICR0b3AsIG51bGwpO1xuICAgICAgJHJsOiBpZigkcmlnaHQgPT0gJGxlZnQsICRyaWdodCwgbnVsbCk7XG4gICAgICAkYWxsOiBpZigkdGIgPT0gJHJsLCAkdGIsIG51bGwpO1xuXG4gICAgICAkbmV3OiBpZigkYWxsLCAkYWxsLCBudWxsKTtcblxuICAgICAgQGlmIG5vdCgkbmV3KSB7XG4gICAgICAgIEBpZiAkdGIgYW5kICRybCB7XG4gICAgICAgICAgJG5ldzogJHRiICRybDtcbiAgICAgICAgfSBAZWxzZSBpZiAkcmwge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJsICRib3R0b207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJpZ2h0ICRib3R0b20gJGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmFtZTogJG5ldykpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICRtYXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cbiIsIi8qXG4qIFNjdXQsIGEgY29sbGVjdGlvbiBvZiBTYXNzIHV0aWxpdGllc1xuKiB0byBlYXNlIGFuZCBpbXByb3ZlIG91ciBpbXBsZW1lbnRhdGlvbnMgb2YgY29tbW9uIHN0eWxlLWNvZGUgcGF0dGVybnMuXG4qIHYxLjQuMFxuKiBEb2NzIGF0IGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0XG4qL1xuXG5AbWl4aW4gc2N1dC1jbGVhcmZpeCB7XG5cbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxuXG59XG5cbiVzY3V0LWNsZWFyZml4IHtcbiAgQGluY2x1ZGUgc2N1dC1jbGVhcmZpeDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtdW5zdHlsZWQoXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xuXG4gIEBpZiAkbm8tbWFyZ2luIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCk7XG59XG4vLyBEZXBlbmRzIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1mbG9hdGVkIChcbiAgJHNwYWNlOiBmYWxzZSxcbiAgJGRpcjogbGVmdCxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LXVuc3R5bGVkKCRuby1tYXJnaW4pO1xuICBAaW5jbHVkZSBzY3V0LWNsZWFyZml4O1xuXG4gICYgPiBsaSB7XG4gICAgZmxvYXQ6ICRkaXI7XG4gIH1cblxuICBAaWYgJHNwYWNlIHtcbiAgICAmID4gbGkgKyBsaSB7XG4gICAgICBtYXJnaW4tI3skZGlyfTogJHNwYWNlO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtZmxvYXRlZCB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1mbG9hdGVkO1xufVxuXG5AZnVuY3Rpb24gc2N1dC1hdXRvT3JWYWx1ZSAoJHZhbCkge1xuICBAaWYgJHZhbCA9PSBhIG9yICR2YWwgPT0gYXV0byB7XG4gICAgQHJldHVybiBhdXRvO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICR2YWw7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtY29vcmRzIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICAkdG9wOiBudGgoJGNvb3JkaW5hdGVzLCAxKTtcbiAgJHJpZ2h0OiBudGgoJGNvb3JkaW5hdGVzLCAyKTtcbiAgJGJvdHRvbTogbnRoKCRjb29yZGluYXRlcywgMyk7XG4gICRsZWZ0OiBudGgoJGNvb3JkaW5hdGVzLCA0KTtcblxuICBAaWYgJHRvcCAhPSBuIHtcbiAgICB0b3A6IHNjdXQtYXV0b09yVmFsdWUoJHRvcCk7XG4gIH1cbiAgQGlmICRyaWdodCAhPSBuIHtcbiAgICByaWdodDogc2N1dC1hdXRvT3JWYWx1ZSgkcmlnaHQpO1xuICB9XG4gIEBpZiAkYm90dG9tICE9IG4ge1xuICAgIGJvdHRvbTogc2N1dC1hdXRvT3JWYWx1ZSgkYm90dG9tKTtcbiAgfVxuICBAaWYgJGxlZnQgIT0gbiB7XG4gICAgbGVmdDogc2N1dC1hdXRvT3JWYWx1ZSgkbGVmdCk7XG4gIH1cblxufVxuQGZ1bmN0aW9uIHNjdXQtc3RyaXAtdW5pdCAoXG4gICRudW1cbikge1xuXG4gIEByZXR1cm4gJG51bSAvICgkbnVtICogMCArIDEpO1xuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1lbS1iYXNlOiAxNiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIHNjdXQtZW0gKFxuICAkcGl4ZWxzLFxuICAkYmFzZTogJHNjdXQtZW0tYmFzZVxuKSB7XG5cbiAgLy8gJGJhc2UgY291bGQgYmUgaW4gZW0gb3IgcHggKG5vIHVuaXQgPSBweCkuXG4gIC8vIEFkanVzdCBhY2NvcmRpbmdseSB0byBjcmVhdGUgYSAkZGl2aXNvciB0aGF0XG4gIC8vIHNlcnZlcyBhcyBjb250ZXh0IGZvciAkcGl4ZWxzLlxuICAkbXVsdGlwbGllcjogaWYodW5pdCgkYmFzZSkgPT0gZW0sIDE2LCAxKTtcbiAgJGRpdmlzb3I6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZSkgKiAkbXVsdGlwbGllcjtcblxuICAkZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1lbXM6IChzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkZGl2aXNvcikgKiAxZW07XG4gICAgJGVtLXZhbHM6IGFwcGVuZCgkZW0tdmFscywgJHZhbC1pbi1lbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkZW0tdmFscykgPT0gMSB7XG4gICAgLy8gcmV0dXJuIGEgc2luZ2xlIHZhbHVlIGluc3RlYWQgb2YgYSBsaXN0LFxuICAgIC8vIHNvIGl0IGNhbiBiZSB1c2VkIGluIGNhbGN1bGF0aW9uc1xuICAgIEByZXR1cm4gbnRoKCRlbS12YWxzLCAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkZW0tdmFscztcbiAgfVxuXG59XG4vLyBEZXBlbmRzIG9uIGBzY3V0LXN0cmlwLXVuaXRgLlxuXG4kc2N1dC1yZW0tYmFzZTogMTYgIWRlZmF1bHQ7XG5cbkBmdW5jdGlvbiBzY3V0LXJlbSAoXG4gICRwaXhlbHNcbikge1xuXG4gICRyZW0tdmFsczogKCk7XG4gIEBlYWNoICR2YWwgaW4gJHBpeGVscyB7XG4gICAgJHZhbC1pbi1yZW1zOiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgLyAkc2N1dC1yZW0tYmFzZSAqIDFyZW07XG4gICAgJHJlbS12YWxzOiBhcHBlbmQoJHJlbS12YWxzLCAkdmFsLWluLXJlbXMpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcmVtLXZhbHMpID09IDEge1xuICAgIC8vIHJldHVybiBhIHNpbmdsZSB2YWx1ZSBpbnN0ZWFkIG9mIGEgbGlzdCxcbiAgICAvLyBzbyBpdCBjYW4gYmUgdXNlZCBpbiBjYWxjdWxhdGlvbnNcbiAgICBAcmV0dXJuIG50aCgkcmVtLXZhbHMsIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuICRyZW0tdmFscztcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1ib3JkZXIgKFxuICAkc3R5bGUsXG4gICRzaWRlczogbiB5XG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaWRlcykgPT0gMiB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgICAgYm9yZGVyLXJpZ2h0OiAkc3R5bGU7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaWRlcykgPT0gNCB7XG4gICAgQGlmIG50aCgkc2lkZXMsIDEpICE9IG4ge1xuICAgICAgYm9yZGVyLXRvcDogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgMikgIT0gbiB7XG4gICAgICBib3JkZXItcmlnaHQ6ICRzdHlsZTtcbiAgICB9XG4gICAgQGlmIG50aCgkc2lkZXMsIDMpICE9IG4ge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHN0eWxlO1xuICAgIH1cbiAgICBAaWYgbnRoKCRzaWRlcywgNCkgIT0gbiB7XG4gICAgICBib3JkZXItbGVmdDogJHN0eWxlO1xuICAgIH1cbiAgfVxuXG4gIEBlbHNlIHtcbiAgICBAd2FybiBcIlNjdXQtYm9yZGVyIHJlcXVpcmVzIGEgJHNpZGVzIGFyZ3VtZW50IG9mIDIgb3IgNCB2YWx1ZXMuXCJcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jaXJjbGUgKFxuICAkc2l6ZSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuICBAaWYgJGNvbG9yID09IGluaGVyaXQge1xuICAgIC8vIElmIHVzZXIgd2FudHMgdG8gaW5oZXJpdCB0aGUgY29sb3IsXG4gICAgLy8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZhY3QgdGhhdCBib3JkZXJcbiAgICAvLyBjb2xvciBkZWZhdWx0cyB0byB0aGUgdGV4dCBjb2xvciBvZiB0aGUgZWxlbWVudC5cbiAgICBib3JkZXItd2lkdGg6ICRzaXplIC8gMjtcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgIGhlaWdodDogMDtcbiAgICB3aWR0aDogMDtcbiAgfVxuICBAZWxzZSB7XG4gICAgLy8gT3RoZXJ3aXNlLCBqdXN0IHVzZSBiYWNrZ3JvdW5kLWNvbG9yLlxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcbiAgICBoZWlnaHQ6ICRzaXplO1xuICAgIHdpZHRoOiAkc2l6ZTtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1jb2xvci1zd2FwIChcbiAgJG9mZixcbiAgJG9uLFxuICAkZHVyYXRpb246IDAsXG4gICRiZzogZmFsc2Vcbikge1xuXG4gICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IG51bGw7XG4gICRvZmYtaXMtbGlzdDogdHlwZS1vZigkb2ZmKSA9PSBsaXN0O1xuICAkb24taXMtbGlzdDogdHlwZS1vZigkb24pID09IGxpc3Q7XG5cbiAgLy8gSWYgJG9mZiBJUyBhIGxpc3QsXG4gIC8vIGFzc2lnbiBjb2xvciBhbmQgYmFja2dyb3VuZC1jb2xvci5cbiAgQGlmICRvZmYtaXMtbGlzdCB7XG4gICAgY29sb3I6IG50aCgkb2ZmLCAxKTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBudGgoJG9mZiwgMik7XG4gICAgJHRyYW5zaXRpb24tcHJvcGVydGllczogYmFja2dyb3VuZC1jb2xvciwgY29sb3I7XG4gIH1cblxuICAvLyBJZiAkb2ZmIElTIE5PVCBhIGxpc3QgYW5kICRiZyBpcyBUUlVFLFxuICAvLyBhc3NpZ24gYmFja2dyb3VuZC1jb2xvci5cbiAgQGVsc2UgaWYgJGJnIGFuZCBub3QoJG9mZi1pcy1saXN0KSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJG9mZjtcbiAgICAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzOiBiYWNrZ3JvdW5kLWNvbG9yO1xuICB9XG5cbiAgLy8gSWYgJG9mZiBJUyBOT1QgYSBsaXN0IGFuZCAkYmcgaXMgRkFMU0UsXG4gIC8vIGFzc2lnbiBjb2xvci5cbiAgQGVsc2Uge1xuICAgIGNvbG9yOiAkb2ZmO1xuICAgICR0cmFuc2l0aW9uLXByb3BlcnRpZXM6IGNvbG9yO1xuICB9XG5cbiAgLy8gT25seSBzZXQtdXAgdHJhbnNpdGlvbiBpZiAkZHVyYXRpb24gIT0gMC5cbiAgQGlmICRkdXJhdGlvbiAhPSAwIHtcbiAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiAkdHJhbnNpdGlvbi1wcm9wZXJ0aWVzO1xuICAgIHRyYW5zaXRpb24tZHVyYXRpb246ICRkdXJhdGlvbjtcbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuXG4gICAgLy8gJG9uIGlzIHRyZWF0ZWQgdGhlIHNhbWUgYXMgJG9mZiwgYWJvdmUuXG4gICAgQGlmICRvbi1pcy1saXN0IHtcbiAgICAgIGNvbG9yOiBudGgoJG9uLCAxKTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IG50aCgkb24sIDIpO1xuICAgIH1cblxuICAgIEBlbHNlIGlmICRiZyBhbmQgbm90KCRvbi1pcy1saXN0KSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkb247XG4gICAgfVxuXG4gICAgQGVsc2Uge1xuICAgICAgY29sb3I6ICRvbjtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtaGQtYnAgKFxuICAkcmF0aW86IDEuM1xuKSB7XG5cbiAgQG1lZGlhICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAoJHJhdGlvIC8gMSkpLFxuICAgICAgICAgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgICAgICAgIChtaW4tcmVzb2x1dGlvbjogKHJvdW5kKDk2ICogJHJhdGlvKSAqIDFkcGkpKSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cblxufVxuXG5AbWl4aW4gc2N1dC1oaWRlLXZpc3VhbGx5IHtcblxuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMCAwIDAgMCk7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IC0xcHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcblxufVxuXG4lc2N1dC1oaWRlLXZpc3VhbGx5IHtcbiAgQGluY2x1ZGUgc2N1dC1oaWRlLXZpc3VhbGx5O1xufVxuQG1peGluIHNjdXQtaW1hZ2UtcmVwbGFjZSB7XG5cbiAgdGV4dC1pbmRlbnQ6IDEwMiU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHBhZGRpbmc6IDA7XG5cbn1cblxuJXNjdXQtaW1hZ2UtcmVwbGFjZSB7XG4gIEBpbmNsdWRlIHNjdXQtaW1hZ2UtcmVwbGFjZTtcbn1cblxuLy8gRGVwZW5kcyBvbiBzY3V0LXJlbSBhbmQgc2N1dC1zdHJpcC11bml0XG5cbkBtaXhpbiBzY3V0LXJlbS1mYWxsYmFjayAoXG4gICRwaXhlbHMsXG4gICRwcm9wZXJ0eTogZm9udC1zaXplXG4pIHtcblxuICAkcHgtdmFsczogbnVsbDtcbiAgQGVhY2ggJHZhbCBpbiAkcGl4ZWxzIHtcbiAgICAkdmFsLWluLXB4OiBzY3V0LXN0cmlwLXVuaXQoJHZhbCkgKiAxcHg7XG4gICAgJHB4LXZhbHM6IGFwcGVuZCgkcHgtdmFscywgJHZhbC1pbi1weCk7XG4gIH1cbiAgJHJlbS12YWxzOiBzY3V0LXJlbSgkcGl4ZWxzKTtcblxuICAjeyRwcm9wZXJ0eX06ICRweC12YWxzO1xuICAjeyRwcm9wZXJ0eX06ICRyZW0tdmFscztcblxufVxuQG1peGluIHNjdXQtcmVzZXQtYm9yZGVyLWJveCB7XG4gIC8vIE1ha2UgZXZlcnl0aGluZyBhIGJvcmRlci1ib3gsIGJlY2F1c2Ugd2h5IG5vdD9cbiAgaHRtbCB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuICAqLCAqOmJlZm9yZSwgKjphZnRlciB7XG4gICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1hbnRpYWxpYXMge1xuICAvLyBBbnRpYWxpYXMhXG4gIGJvZHkge1xuICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICB9XG4gICosICo6YmVmb3JlLCAqOmFmdGVyIHtcbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBpbmhlcml0O1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXNlbWFudGljaXplIHtcbiAgLy8gTWFrZSBoZWFkZXJzIGFuZCA8Yj4gc2VtYW50aWMsIG5vdCBwcmVzZW50YXRpb25hbC5cbiAgaDEsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBtYXJnaW46IDA7XG4gIH1cbiAgYiB7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgfVxufVxuXG5AbWl4aW4gc2N1dC1yZXNldC1wb2ludGVyIHtcbiAgLy8gQ2xpY2thYmxlIGZvcm0gZWxlbWVudHMgc2hvdWxkIGhhdmUgYSBwb2ludGVyLlxuICBsYWJlbCxcbiAgc2VsZWN0LFxuICBvcHRpb24sXG4gIGJ1dHRvbiB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZvcm0ge1xuICBmaWVsZHNldCB7XG4gICAgYm9yZGVyOiAwO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIHRleHRhcmVhIHtcbiAgICByZXNpemU6IHZlcnRpY2FsO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWJ1dHRvbiB7XG4gIC8vIFJlc2V0IGRlZmF1bHQgYnV0dG9uIHN0eWxlcywgd2hpY2ggYXJlIG5ldmVyIHVzZWQuXG4gIGJ1dHRvbixcbiAgW3R5cGU9XCJidXR0b25cIl0sXG4gIFt0eXBlPVwic3VibWl0XCJdLFxuICBbdHlwZT1cInJlc2V0XCJdIHtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBib3JkZXI6IDA7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udDogaW5oZXJpdDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogYXV0bztcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTtcbiAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICAmOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LXBhcmFncmFwaCB7XG4gIC8vIFNvbWUgcGFyYWdyYXBoIG1hcmdpbnMganVzdCBnZXQgaW4gdGhlIHdheS5cbiAgcDpmaXJzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICB9XG4gIHA6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LW1lZGlhIHtcbiAgLy8gWW91IHdhbnQgdGhlc2UgZWxlbWVudHMgZmx1aWQsIHByb2JhYmx5LlxuICBpbWcsXG4gIHZpZGVvIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICB9XG59XG5cbkBtaXhpbiBzY3V0LXJlc2V0LWZpZ3VyZSB7XG4gIC8vIFJlbW92ZSBkZWZhdWx0IG1hcmdpbnMuXG4gIGZpZ3VyZSB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8vIENhbGwgdGhlbSBhbGwsIG1pbnVzIGV4Y2x1c2lvbnMhXG5AbWl4aW4gc2N1dC1yZXNldCAoJGV4Y2x1ZGU6IGZhbHNlKSB7XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJvcmRlci1ib3gpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1ib3JkZXItYm94O1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGFudGlhbGlhcykpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWFudGlhbGlhcztcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBzZW1hbnRpY2l6ZSkpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LXNlbWFudGljaXplO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIHBvaW50ZXIpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wb2ludGVyO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGZvcm0pKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1mb3JtO1xuICB9XG4gIEBpZiBub3QoaW5kZXgoJGV4Y2x1ZGUsIGJ1dHRvbikpIHtcbiAgICBAaW5jbHVkZSBzY3V0LXJlc2V0LWJ1dHRvbjtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBwYXJhZ3JhcGgpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1wYXJhZ3JhcGg7XG4gIH1cbiAgQGlmIG5vdChpbmRleCgkZXhjbHVkZSwgbWVkaWEpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1tZWRpYTtcbiAgfVxuICBAaWYgbm90KGluZGV4KCRleGNsdWRlLCBmaWd1cmUpKSB7XG4gICAgQGluY2x1ZGUgc2N1dC1yZXNldC1maWd1cmU7XG4gIH1cbn1cblxuQG1peGluIHNjdXQtc2VsZWN0ZWQgKFxuICAkYWN0aXZlOiBmYWxzZVxuKSB7XG5cbiAgQGlmICRhY3RpdmUge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyxcbiAgICAmOmFjdGl2ZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6aG92ZXIsXG4gICAgJjpmb2N1cyB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuQG1peGluIHNjdXQtdHJpYW5nbGUgKFxuICAkZGlyZWN0aW9uOiByaWdodCxcbiAgJHNpemU6IDAuNzVlbSxcbiAgJGNvbG9yOiBpbmhlcml0XG4pIHtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMDtcbiAgd2lkdGg6IDA7XG4gIC8vIEZvciBpbXByb3ZlZCBhcHBlYXJhbmNlIGluIHNvbWUgV2Via2l0IGJyb3dzZXJzXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcblxuICAvLyBTZXQgdXAgc29tZSB2YXJpYWJsZXNcbiAgJHdpZHRoOiBudWxsO1xuICAkaGVpZ2h0OiBudWxsO1xuICAkYm9yZGVyLXdpZHRoczogbnVsbDtcblxuICBAaWYgdHlwZS1vZigkc2l6ZSkgPT0gbGlzdCB7XG4gICAgJHdpZHRoOiBudGgoJHNpemUsIDEpO1xuICAgICRoZWlnaHQ6IG50aCgkc2l6ZSwgMik7XG4gIH1cbiAgQGVsc2Uge1xuICAgICR3aWR0aDogJHNpemU7XG4gICAgJGhlaWdodDogJHNpemU7XG4gIH1cblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIHtcbiAgICAvLyBGb3IgdXAgYW5kIGRvd24sIHdpZHRoIGdldHMgdHdvIGJvcmRlcnMgYnV0IGhlaWdodCBvbmx5IG9uZSxcbiAgICAvLyBzbyBkaXZpZGUgc2Vjb25kIGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICRoZWlnaHQgKCR3aWR0aCAvIDIpO1xuICB9XG4gIEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgLy8gRm9yIHJpZ2h0IGFuZCBsZWZ0LCBoZWlnaHQgZ2V0cyB0d28gYm9yZGVycyBidXQgd2lkdGggb25seSBvbmUsXG4gICAgLy8gc28gZGl2aWRlIGZpcnN0IGJvcmRlci13aWR0aCB2YWx1ZSBieSAyXG4gICAgJGJvcmRlci13aWR0aHM6ICgkaGVpZ2h0IC8gMikgJHdpZHRoO1xuICB9XG4gIEBlbHNlIHtcbiAgICAvLyBGb3IgcmlnaHQgdHJpYW5nbGVzICh0aGUgcmVzdCksIGJvdGggc2lkZXMgZ2V0IHR3byBib3JkZXJzLFxuICAgIC8vIHNvIGRpdmlkZSBib3RoIGJ5IDJcbiAgICAkYm9yZGVyLXdpZHRoczogKCRoZWlnaHQgLyAyKSAoJHdpZHRoIC8gMik7XG4gIH1cblxuICBib3JkZXItd2lkdGg6ICRib3JkZXItd2lkdGhzO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuXG5cbiAgLy8gU1RBTkRBUkQgVFJJQU5HTEVTXG5cbiAgQGlmICgkZGlyZWN0aW9uID09IHVwKSBvciAoJGRpcmVjdGlvbiA9PSBkb3duKSBvciAoJGRpcmVjdGlvbiA9PSByaWdodCkgb3IgKCRkaXJlY3Rpb24gPT0gbGVmdCkge1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXRvcC13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSByaWdodCB7XG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcbiAgICB9XG4gICAgQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogJGNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQtd2lkdGg6IDA7XG4gICAgfVxuICB9XG5cblxuICAvLyBDT1JORVIgVFJJQU5HTEVTXG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gdG9wLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB0b3AtbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSB0b3AtcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gdG9wLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGVsc2UgaWYgKCRkaXJlY3Rpb24gPT0gYm90dG9tLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBib3R0b20tbGVmdCkge1xuICAgIGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgICBAaWYgJGRpcmVjdGlvbiA9PSBib3R0b20tcmlnaHQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgfVxuICAgIEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gYm90dG9tLWxlZnQge1xuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtdHJpYW5nbGUge1xuICBAaW5jbHVkZSBzY3V0LXRyaWFuZ2xlO1xufVxuQG1peGluIHNjdXQtY2VudGVyLWFic29sdXRlbHkgKFxuICAkZGltZW5zaW9uc1xuKSB7XG5cbiAgJHdpZHRoOiBudGgoJGRpbWVuc2lvbnMsIDEpO1xuICAkaGVpZ2h0OiBudGgoJGRpbWVuc2lvbnMsIDIpO1xuXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICBAaWYgJHdpZHRoICE9IG4ge1xuICAgIHdpZHRoOiAkd2lkdGg7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi1sZWZ0OiAoLSR3aWR0aCAvIDIpO1xuICB9XG5cbiAgQGlmICRoZWlnaHQgIT0gbiB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6ICgtJGhlaWdodCAvIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LWNlbnRlci1ibG9jayAoXG4gICRtYXgtd2lkdGg6IGZhbHNlXG4pIHtcblxuICBtYXJnaW4tbGVmdDogYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBAaWYgJG1heC13aWR0aCB7XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICB9XG5cbn1cblxuJXNjdXQtY2VudGVyLWJsb2NrIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItYmxvY2s7XG59XG5cbkBtaXhpbiBzY3V0LWNlbnRlci10cmFuc2Zvcm0gKFxuICAkYXhpczogZmFsc2UgLy8gb3IgeCBvciB5XG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG5cbiAgQGlmICRheGlzICE9IHgge1xuICAgIHRvcDogNTAlO1xuICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgbWFyZ2luLWJvdHRvbTogYXV0bztcbiAgfVxuXG4gIEBpZiAkYXhpcyAhPSB5IHtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICB9XG5cbiAgJHRyYW5zbGF0ZS12YWw6IG51bGw7XG5cbiAgQGlmIG5vdCgkYXhpcykge1xuICAgICR0cmFuc2xhdGUtdmFsOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geCB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVkoLTUwJSk7XG4gIH1cbiAgQGVsc2UgaWYgJGF4aXMgIT0geSB7XG4gICAgJHRyYW5zbGF0ZS12YWw6IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIH1cblxuICAtd2Via2l0LXRyYW5zZm9ybTogJHRyYW5zbGF0ZS12YWw7XG4gIC1tcy10cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xuICB0cmFuc2Zvcm06ICR0cmFuc2xhdGUtdmFsO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtIHtcbiAgQGluY2x1ZGUgc2N1dC1jZW50ZXItdHJhbnNmb3JtO1xufVxuXG4lc2N1dC1jZW50ZXItdHJhbnNmb3JtLXgge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeCk7XG59XG5cbiVzY3V0LWNlbnRlci10cmFuc2Zvcm0teSB7XG4gIEBpbmNsdWRlIHNjdXQtY2VudGVyLXRyYW5zZm9ybSh5KTtcbn1cblxuQG1peGluIHNjdXQtZmlsbCAoXG4gICR3aWR0aC1oZWlnaHQ6IGZhbHNlXG4pIHtcblxuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgQGlmICR3aWR0aC1oZWlnaHQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuICBAZWxzZSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICB9XG5cbn1cblxuJXNjdXQtZmlsbCB7XG4gIEBpbmNsdWRlIHNjdXQtZmlsbDtcbn1cbkBtaXhpbiBzY3V0LWxpc3QtY3VzdG9tIChcbiAgJGNvbnRlbnQ6IFwiXFwyMDIyXCIsXG4gICRtYXJrZXItd2lkdGg6IDAuNzVlbSxcbiAgJHBhZDogMCxcbiAgJG5vLW1hcmdpbjogZmFsc2Vcbikge1xuXG4gICRjb250ZW50LXZhbDogbnVsbDtcbiAgJGNvdW50ZXI6IGluZGV4KCRjb250ZW50LCBjb3VudCk7XG4gIEBpZiAkY291bnRlciB7XG4gICAgQGlmIGxlbmd0aCgkY29udGVudCkgPT0gMyB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyLCBudGgoJGNvbnRlbnQsIDMpKW50aCgkY29udGVudCwyKTtcbiAgICB9XG4gICAgQGVsc2UgaWYgbGVuZ3RoKCRjb250ZW50KSA9PSAyIHtcbiAgICAgICRjb250ZW50LXZhbDogY291bnRlcihzY3V0bGlzdGNvdW50ZXIpbnRoKCRjb250ZW50LDIpO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkY29udGVudC12YWw6IGNvdW50ZXIoc2N1dGxpc3Rjb3VudGVyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICRjb250ZW50LXZhbDogJGNvbnRlbnQ7XG4gIH1cblxuICBwYWRkaW5nLWxlZnQ6ICRtYXJrZXItd2lkdGggKyAkcGFkO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG5cbiAgQGlmICRuby1tYXJnaW4ge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gICYgPiBsaSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIEBpZiAkY291bnRlciB7XG4gICAgICBjb3VudGVyLWluY3JlbWVudDogc2N1dGxpc3Rjb3VudGVyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICBjb250ZW50OiAkY29udGVudC12YWw7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IC0kbWFya2VyLXdpZHRoO1xuICAgICAgd2lkdGg6ICRtYXJrZXItd2lkdGg7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cblxufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC1mbG9hdGVkYCwgd2hpY2ggZGVwZW5kcyBpbiB0dXJuIG9uIGBsaXN0LXVuc3R5bGVkYCBhbmQgYGNsZWFyZml4YC5cblxuQG1peGluIHNjdXQtbGlzdC1kaXZpZGVkIChcbiAgJGRpdmlkZXI6IFwifFwiLFxuICAkc3BhY2U6IDAuNWVtLFxuICAkZGlyOiBsZWZ0LFxuICAkaGVpZ2h0OiBmYWxzZSxcbiAgJG5vLW1hcmdpbjogdHJ1ZVxuKSB7XG5cbiAgQGluY2x1ZGUgc2N1dC1saXN0LWZsb2F0ZWQoJGRpcjogJGRpciwgJG5vLW1hcmdpbjogJG5vLW1hcmdpbik7XG5cbiAgJHBzZXVkbzogaWYoJGRpciA9PSBsZWZ0LCAnYmVmb3JlJywgJ2FmdGVyJyk7XG5cbiAgLy8gSWYgYW4gZXhwbGljaXQgaGVpZ2h0IGlzIHBhc3NlZCxcbiAgLy8gdGhpbmdzIGFyZSBkaWZmZXJlbnQ6IEFsbCA8bGk+c1xuICAvLyBuZWVkIHRoZSBwc2V1ZG8tZWxlbWVudCAodG8gZm9yY2UgaGVpZ2h0KSxcbiAgLy8gYnV0IHRoZSBmaXJzdCdzIG11c3QgYmUgaGlkZGVuLlxuXG4gIEBpZiAkaGVpZ2h0IHtcbiAgICAmID4gbGkge1xuICAgICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICAgIH1cbiAgICAmID4gbGk6I3skcHNldWRvfSB7XG4gICAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgJiA+IGxpOmZpcnN0LWNoaWxkOiN7JHBzZXVkb30ge1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cbiAgfVxuXG4gICYgPiBsaSArIGxpOiN7JHBzZXVkb30ge1xuICAgIEBpZiBub3QoJGhlaWdodCkge1xuICAgICAgY29udGVudDogJGRpdmlkZXI7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gICAgbWFyZ2luLWxlZnQ6ICRzcGFjZTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRzcGFjZTtcbiAgfVxuXG59XG5cbiVzY3V0LWxpc3QtYmFyIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LWRpdmlkZWQ7XG59XG5cbiVzY3V0LWxpc3QtYnJlYWRjcnVtYiB7XG4gIEBpbmNsdWRlIHNjdXQtbGlzdC1kaXZpZGVkKFwiL1wiKTtcbn1cbi8vIERlcGVuZHMgb24gYGxpc3QtdW5zdHlsZWRgLlxuXG5AbWl4aW4gc2N1dC1saXN0LWlubGluZSAoXG4gICRzcGFjZTogZmFsc2UsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxuXG4gIEBpZiAkc3BhY2Uge1xuICAgICYgPiBsaSArIGxpIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkc3BhY2U7XG4gICAgfVxuICB9XG5cbn1cblxuJXNjdXQtbGlzdC1pbmxpbmUge1xuICBAaW5jbHVkZSBzY3V0LWxpc3QtaW5saW5lO1xufVxuLy8gRGVwZW5kcyBvbiBgbGlzdC11bnN0eWxlZGAuXG5cbkBtaXhpbiBzY3V0LWxpc3QtcHVuY3R1YXRlZCAoXG4gICRkaXZpZGVyOiBcIiwgXCIsXG4gICRkaXNwbGF5OiBpbmxpbmUsXG4gICRuby1tYXJnaW46IHRydWVcbikge1xuXG4gIEBpbmNsdWRlIHNjdXQtbGlzdC11bnN0eWxlZCgkbm8tbWFyZ2luKTtcblxuICAmID4gbGkge1xuICAgIGRpc3BsYXk6ICRkaXNwbGF5O1xuICAgICY6bm90KDpsYXN0LWNoaWxkKTphZnRlciB7XG4gICAgICBjb250ZW50OiAkZGl2aWRlcjtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1saXN0LWNvbW1hIHtcbiAgQGluY2x1ZGUgc2N1dC1saXN0LXB1bmN0dWF0ZWQ7XG59XG5AbWl4aW4gc2N1dC1tYXJnaW4gKFxuICAkbWFyZ2luXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDEgYW5kICRtYXJnaW4gIT0gbiB7XG4gICAgbWFyZ2luLXRvcDogJG1hcmdpbjtcbiAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW47XG4gICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbjtcbiAgICBtYXJnaW4tbGVmdDogJG1hcmdpbjtcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJG1hcmdpbikgPT0gMiB7XG4gICAgJG1hcmdpbi15OiBudGgoJG1hcmdpbiwgMSk7XG4gICAgJG1hcmdpbi14OiBudGgoJG1hcmdpbiwgMik7XG4gICAgQGlmICRtYXJnaW4teSAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4teTtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teTtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4teCAhPSBuIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4teDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRtYXJnaW4pID09IDMge1xuICAgICRtYXJnaW4teS10b3A6IG50aCgkbWFyZ2luLCAxKTtcbiAgICAkbWFyZ2luLXg6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLXktYm90dG9tOiBudGgoJG1hcmdpbiwgMyk7XG4gICAgQGlmICRtYXJnaW4teS10b3AgIT0gbiB7XG4gICAgICBtYXJnaW4tdG9wOiAkbWFyZ2luLXktdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi14ICE9IG4ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXg7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi14O1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi15LWJvdHRvbSAhPSBuIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4teS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkbWFyZ2luKSA9PSA0IHtcbiAgICAkbWFyZ2luLXRvcDogbnRoKCRtYXJnaW4sIDEpO1xuICAgICRtYXJnaW4tcmlnaHQ6IG50aCgkbWFyZ2luLCAyKTtcbiAgICAkbWFyZ2luLWJvdHRvbTogbnRoKCRtYXJnaW4sIDMpO1xuICAgICRtYXJnaW4tbGVmdDogbnRoKCRtYXJnaW4sIDQpO1xuICAgIEBpZiAkbWFyZ2luLXRvcCAhPSBuIHtcbiAgICAgIG1hcmdpbi10b3A6ICRtYXJnaW4tdG9wO1xuICAgIH1cbiAgICBAaWYgJG1hcmdpbi1yaWdodCAhPSBuIHtcbiAgICAgIG1hcmdpbi1yaWdodDogJG1hcmdpbi1yaWdodDtcbiAgICB9XG4gICAgQGlmICRtYXJnaW4tYm90dG9tICE9IG4ge1xuICAgICAgbWFyZ2luLWJvdHRvbTogJG1hcmdpbi1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkbWFyZ2luLWxlZnQgIT0gbiB7XG4gICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbi1sZWZ0O1xuICAgIH1cbiAgfVxuXG59XG5AbWl4aW4gc2N1dC1wYWRkaW5nIChcbiAgJHBhZGRpbmdcbikge1xuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDEgYW5kICRwYWRkaW5nICE9IG4ge1xuICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZztcbiAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZztcbiAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmc7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgfVxuXG4gIEBpZiBsZW5ndGgoJHBhZGRpbmcpID09IDIge1xuICAgICRwYWRkaW5nLXk6IG50aCgkcGFkZGluZywgMSk7XG4gICAgJHBhZGRpbmcteDogbnRoKCRwYWRkaW5nLCAyKTtcbiAgICBAaWYgJHBhZGRpbmcteSAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15O1xuICAgICAgcGFkZGluZy1ib3R0b206ICRwYWRkaW5nLXk7XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy14ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1yaWdodDogJHBhZGRpbmcteDtcbiAgICB9XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRwYWRkaW5nKSA9PSAzIHtcbiAgICAkcGFkZGluZy15LXRvcDogbnRoKCRwYWRkaW5nLCAxKTtcbiAgICAkcGFkZGluZy14OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLXktYm90dG9tOiBudGgoJHBhZGRpbmcsIDMpO1xuICAgIEBpZiAkcGFkZGluZy15LXRvcCAhPSBuIHtcbiAgICAgIHBhZGRpbmctdG9wOiAkcGFkZGluZy15LXRvcDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLXggIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14O1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14O1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmcteS1ib3R0b20gIT0gbiB7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcteS1ib3R0b207XG4gICAgfVxuICB9XG5cbiAgQGlmIGxlbmd0aCgkcGFkZGluZykgPT0gNCB7XG4gICAgJHBhZGRpbmctdG9wOiBudGgoJHBhZGRpbmcsIDEpO1xuICAgICRwYWRkaW5nLXJpZ2h0OiBudGgoJHBhZGRpbmcsIDIpO1xuICAgICRwYWRkaW5nLWJvdHRvbTogbnRoKCRwYWRkaW5nLCAzKTtcbiAgICAkcGFkZGluZy1sZWZ0OiBudGgoJHBhZGRpbmcsIDQpO1xuICAgIEBpZiAkcGFkZGluZy10b3AgIT0gbiB7XG4gICAgICBwYWRkaW5nLXRvcDogJHBhZGRpbmctdG9wO1xuICAgIH1cbiAgICBAaWYgJHBhZGRpbmctcmlnaHQgIT0gbiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy1yaWdodDtcbiAgICB9XG4gICAgQGlmICRwYWRkaW5nLWJvdHRvbSAhPSBuIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZy1ib3R0b207XG4gICAgfVxuICAgIEBpZiAkcGFkZGluZy1sZWZ0ICE9IG4ge1xuICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy1sZWZ0O1xuICAgIH1cbiAgfVxufVxuLy8gRGVwZW5kcyBvbiBgcG9zaXRpb25pbmctY29vcmRpbmF0ZXNgLlxuXG5AbWl4aW4gc2N1dC1hYnNvbHV0ZSAoXG4gICRjb29yZGluYXRlczogMCBuIG4gMFxuKSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBAaW5jbHVkZSBzY3V0LWNvb3JkcygkY29vcmRpbmF0ZXMpO1xuXG59XG5cbiVzY3V0LWFic29sdXRlIHtcbiAgQGluY2x1ZGUgc2N1dC1hYnNvbHV0ZTtcbn1cbi8vIERlcGVuZHMgb24gYHBvc2l0aW9uaW5nLWNvb3JkaW5hdGVzYC5cblxuQG1peGluIHNjdXQtZml4ZWQgKFxuICAkY29vcmRpbmF0ZXM6IDAgbiBuIDBcbikge1xuXG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgQGluY2x1ZGUgc2N1dC1jb29yZHMoJGNvb3JkaW5hdGVzKTtcblxufVxuXG4lc2N1dC1maXhlZCB7XG4gIEBpbmNsdWRlIHNjdXQtZml4ZWQ7XG59XG4vLyBEZXBlbmRzIG9uIGBwb3NpdGlvbmluZy1jb29yZGluYXRlc2AuXG5cbkBtaXhpbiBzY3V0LXJlbGF0aXZlIChcbiAgJGNvb3JkaW5hdGVzOiBuIG4gbiBuXG4pIHtcblxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIHNjdXQtY29vcmRzKCRjb29yZGluYXRlcyk7XG5cbn1cbkBtaXhpbiBzY3V0LXJhdGlvLWJveCAoXG4gICRyYXRpbzogMS8xXG4pIHtcblxuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gVGhlIGNvbnRhaW5lcidzIGhlaWdodCwgYXMgYSBwZXJjZW50YWdlIG9mIHRoZVxuICAvLyBjb250YWluZXIncyB3aWR0aCwgaXMgc2V0IGJ5IGFzc2lnbmluZ1xuICAvLyBwYWRkaW5nLXRvcCB0byBhIHBzZXVkby1lbGVtZW50LlxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDA7XG4gICAgcGFkZGluZy10b3A6ICgxIC8gJHJhdGlvKSAqIDEwMCU7XG4gIH1cblxufVxuXG4lc2N1dC1yYXRpby1ib3gge1xuICBAaW5jbHVkZSBzY3V0LXJhdGlvLWJveDtcbn1cbkBtaXhpbiBzY3V0LXNpemUoXG4gICRzaXplXG4pIHtcblxuICBAaWYgbGVuZ3RoKCRzaXplKSA9PSAxIHtcbiAgICB3aWR0aDogICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gIH1cbiAgQGVsc2UgaWYgbGVuZ3RoKCRzaXplKSA9PSAyIHtcbiAgICB3aWR0aDogIG50aCgkc2l6ZSwgMSk7XG4gICAgaGVpZ2h0OiBudGgoJHNpemUsIDIpO1xuICB9XG5cbn1cbkBtaXhpbiBzY3V0LXN0aWNreS1mb290ZXItZml4ZWQgKFxuICAkaGVpZ2h0LFxuICAkd3JhcHBlcjogXCIud3JhcHBlclwiLFxuICAkZm9vdGVyOiBcIi5zY3V0LXN0aWNreVwiXG4pIHtcblxuICBodG1sLFxuICBib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cblxuICAjeyR3cmFwcGVyfSB7XG4gICAgbWluLWhlaWdodDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAtJGhlaWdodDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gIH1cblxuICAjeyR3cmFwcGVyfTphZnRlcixcbiAgI3skZm9vdGVyfSB7XG4gICAgaGVpZ2h0OiAkaGVpZ2h0O1xuICB9XG5cbn1cblxuLy8gZGVwcmVjYXRlZFxuQG1peGluIHNjdXQtc3RpY2t5LWZvb3RlciAoXG4gICRoZWlnaHQsXG4gICR3cmFwcGVyOiBcIi53cmFwcGVyXCIsXG4gICRmb290ZXI6IFwiLnNjdXQtc3RpY2t5XCJcbil7XG4gIEBpbmNsdWRlIHNjdXQtc3RpY2t5LWZvb3Rlci1maXhlZCgkaGVpZ2h0LCAkd3JhcHBlciwgJGZvb3Rlcik7XG59XG5AbWl4aW4gc2N1dC1zdGlja3ktZm9vdGVyLWZsdWlkIChcbiAgJHdyYXBwZXI6IFwiLndyYXBwZXJcIixcbiAgJGZvb3RlcjogXCIuc2N1dC1zdGlja3lcIlxuKSB7XG5cbiAgaHRtbCxcbiAgYm9keSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG5cbiAgI3skd3JhcHBlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICN7JGZvb3Rlcn0ge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcbiAgICBoZWlnaHQ6IDFweDtcbiAgfVxuXG59XG5AbWl4aW4gc2N1dC12Y2VudGVyLWliIChcbiAgJGlubmVyLi4uXG4pIHtcblxuICAvLyBUaGUgaW5uZXIgZWxlbWVudCBpcyB2ZXJ0aWNhbGx5IGNlbnRlcmVkXG4gIC8vIGJ5IG1pZGRsZS1hbGlnbmluZyBpdCB3aXRoIGFuIGlubGluZSBwc2V1ZG8tZWxlbWVudFxuICAvLyB3aG9zZSBoZWlnaHQgaXMgMTAwJS5cblxuICAmOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgLy8gQSBzbWFsbCBuZWdhdGl2ZSByaWdodCBtYXJnaW4gaXMgc2V0XG4gICAgLy8gdG8gYWNjb3VudCBmb3IgdGhlIGRlZmF1bHRcbiAgICAvLyB3b3JkLXNwYWNpbmcgb2YgaW5saW5lLWJsb2NrLlxuICAgIG1hcmdpbi1yaWdodDogLTAuMjVlbTtcbiAgfVxuXG4gICRpbm5lcjogaWYobGVuZ3RoKCRpbm5lcikgPT0gMCwgXCIuc2N1dC1pbm5lclwiLCAkaW5uZXIpO1xuICBAZWFjaCAkY2VsbC1zZWxlY3RvciBpbiAkaW5uZXIge1xuICAgICRjZWxsLXNlbGVjdG9yOiB1bnF1b3RlKCRjZWxsLXNlbGVjdG9yKTtcbiAgICAmID4gI3skY2VsbC1zZWxlY3Rvcn0ge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC12Y2VudGVyLWliIHtcbiAgQGluY2x1ZGUgc2N1dC12Y2VudGVyLWliO1xufVxuXG5AbWl4aW4gc2N1dC12Y2VudGVyLWxoIChcbiAgJGhlaWdodFxuKSB7XG5cbiAgaGVpZ2h0OiAkaGVpZ2h0O1xuICBsaW5lLWhlaWdodDogJGhlaWdodDtcblxufVxuQG1peGluIHNjdXQtdmNlbnRlci10ZCAoXG4gICRpbm5lci4uLlxuKSB7XG5cbiAgZGlzcGxheTogdGFibGU7XG5cbiAgJGlubmVyOiBpZihsZW5ndGgoJGlubmVyKSA9PSAwLCBcIi5zY3V0LWlubmVyXCIsICRpbm5lcik7XG4gIEBlYWNoICRjZWxsLXNlbGVjdG9yIGluICRpbm5lciB7XG4gICAgJGNlbGwtc2VsZWN0b3I6IHVucXVvdGUoJGNlbGwtc2VsZWN0b3IpO1xuICAgICYgPiAjeyRjZWxsLXNlbGVjdG9yfSB7XG4gICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG5cbiVzY3V0LXZjZW50ZXItdGQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdGQ7XG59XG5cbi8vIERlcGVuZHMgb24gc2N1dC1jZW50ZXItdHJhbnNmb3JtXG5cbkBtaXhpbiBzY3V0LXZjZW50ZXItdHQgKCkge1xuICBAaW5jbHVkZSBzY3V0LWNlbnRlci10cmFuc2Zvcm0oeSk7XG59XG5cbiVzY3V0LXZjZW50ZXItdHQge1xuICBAaW5jbHVkZSBzY3V0LXZjZW50ZXItdHQ7XG59XG4vLyBzcGFjZVxuJHNjdXQtc3BhY2U6IFwiXFwwMDIwXCI7XG4vLyBub24tYnJlYWtpbmcgc3BhY2VcbiRzY3V0LW5ic3A6IFwiXFwwMGEwXCI7XG5cbi8vIHF1b3RhdGlvbiBtYXJrXG4kc2N1dC1xdW90OiBcIlxcMDAyMlwiO1xuLy8gbGVmdCBzaW5nbGUgY3VybHkgcXVvdGVcbiRzY3V0LWxzcXVvOiBcIlxcMjAxOFwiO1xuLy8gcmlnaHQgc2luZ2xlIGN1cmx5IHF1b3RlXG4kc2N1dC1yc3F1bzogXCJcXDIwMTlcIjtcbi8vIGxlZnQgZG91YmxlIGN1cmx5IHF1b3RlXG4kc2N1dC1sZHF1bzogXCJcXDIwMUNcIjtcbi8vIHJpZ2h0IGRvdWJsZSBjdXJseSBxdW90ZVxuJHNjdXQtcmRxdW86IFwiXFwyMDFEXCI7XG4vLyBsZWZ0IHNpbmdsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbHNhcXVvOiBcIlxcMjAzOVwiO1xuLy8gcmlnaHQgc2luZ2xlIGFuZ2xlIHF1b3RlIChndWlsbGVtZXQpXG4kc2N1dC1yc2FxdW86IFwiXFwyMDNBXCI7XG4vLyBsZWZ0IGRvdWJsZSBhbmdsZSBxdW90ZSAoZ3VpbGxlbWV0KVxuJHNjdXQtbGFxdW86IFwiXFwwMGFiXCI7XG4vLyByaWdodCBkb3VibGUgYW5nbGUgcXVvdGUgKGd1aWxsZW1ldClcbiRzY3V0LXJhcXVvOiBcIlxcMDBiYlwiO1xuXG4vLyBlbSBkYXNoIChtdXR0b24pXG4kc2N1dC1tZGFzaDogXCJcXDIwMTRcIjtcbi8vIGVuIGRhc2ggKG51dClcbiRzY3V0LW5kYXNoOiBcIlxcMjAxM1wiO1xuLy8gaHlwaGVuXG4kc2N1dC1oeXBoZW46IFwiXFwyMDEwXCI7XG5cbi8vIGFtcGVyc2FuZFxuJHNjdXQtYW1wOiBcIlxcMDAyNlwiO1xuLy8gZ3JlYXRlciB0aGFuXG4kc2N1dC1ndDogXCJcXDAwM2VcIjtcbi8vIGxlc3MgdGhhblxuJHNjdXQtbHQ6IFwiXFwwMDNjXCI7XG4vLyB0aW1lc1xuJHNjdXQtdGltZXM6IFwiXFwwMEQ3XCI7XG4vLyBiaWcgdGltZXNcbiRzY3V0LWJpZ3RpbWVzOiBcIlxcMjcxNVwiO1xuLy8gY2hlY2ttYXJrXG4kc2N1dC1jaGVja21hcms6IFwiXFwyNzEzXCI7XG5cbi8vIHNlY3Rpb24gc2lnbiAoZG91YmxlIFMsIGh1cnJpY2FuZSwgc2VjdGlvbmFsIHN5bWJvbCwgdGhlIGxlZ2FsIGRvdWdobnV0LCBzaWdudW0gc2VjdGlvbmlzKVxuJHNjdXQtc2VjdDogXCJcXDAwYTdcIjtcbi8vIHBhcmFncmFwaCBzeW1ib2wgKHBpbGNyb3cpXG4kc2N1dC1wYXJhOiBcIlxcMDBiNlwiO1xuXG4vLyBtaWRkb3QgKGludGVycHVuY3QsIGludGVycG9pbnQpXG4kc2N1dC1taWRkb3Q6IFwiXFwwMGI3XCI7XG4vLyBvLXNsYXNoIChzbGFzaGVkIG8pXG4kc2N1dC1vc2xhc2g6IFwiXFwwMGY4XCI7XG4vLyBidWxsZXRcbiRzY3V0LWJ1bGw6IFwiXFwyMDIyXCI7XG4vLyB3aGl0ZSBidWxsZXRcbiRzY3V0LXdoaWJ1bGw6IFwiXFwyNUU2XCI7XG4vLyBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1oZWxsaXA6IFwiXFwyMDI2XCI7XG4vLyB2ZXJ0aWNhbCBlbGxpcHNpc1xuJHNjdXQtdmVsbGlwOiBcIlxcMjJFRVwiO1xuLy8gbWlkbGluZSBob3Jpem9udGFsIGVsbGlwc2lzXG4kc2N1dC1taWRoZWxsaXA6IFwiXFwyMkVGXCI7XG5cbi8vIHVwLXBvaW50aW5nIHRyaWFuZ2xlXG4kc2N1dC11dHJpOiBcIlxcMjViMlwiO1xuLy8gZG93bi1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtZHRyaTogXCJcXDI1YmNcIjtcbi8vIGxlZnQtcG9pbnRpbmcgdHJpYW5nbGVcbiRzY3V0LWx0cmk6IFwiXFwyNWMwXCI7XG4vLyByaWdodC1wb2ludGluZyB0cmlhbmdsZVxuJHNjdXQtcnRyaTogXCJcXDI1YjZcIjtcbi8vIHVwLXBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlXG4kc2N1dC11c3RyaTogXCJcXDI1YjRcIjtcbi8vIGRvd24tcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiRzY3V0LWRzdHJpOiBcIlxcMjViZVwiO1xuLy8gbGVmdC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtbHN0cmk6IFwiXFwyNWMyXCI7XG4vLyByaWdodC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuJHNjdXQtcnN0cmk6IFwiXFwyNWI4XCI7XG4vLyBkaWFtb25kXG4kc2N1dC1kaWFtb25kOiBcIlxcMjVjNlwiO1xuLy8gZmlzaGV5ZVxuJHNjdXQtZmlzaGV5ZTogXCJcXDI1YzlcIjtcbi8vIGJ1bGxzZXllXG4kc2N1dC1idWxsc2V5ZTogXCJcXDI1Y2VcIjtcbi8vIGNpcmNsZVxuJHNjdXQtY2lyY2xlOiBcIlxcMjVjZlwiO1xuLy8gd2hpdGUgY2lyY2xlXG4kc2N1dC13aGl0ZWNpcmNsZTogXCJcXDI1Y2JcIjtcbi8vIHNxdWFyZVxuJHNjdXQtc3F1YXJlOiBcIlxcMjVhMFwiO1xuLy8gd2hpdGUgc3F1YXJlXG4kc2N1dC13aGl0ZXNxdWFyZTogXCJcXDI1YTFcIjtcbi8vIHNtYWxsIHNxdWFyZVxuJHNjdXQtc3NxdWFyZTogXCJcXDI1YWFcIjtcbi8vIHNtYWxsIHdoaXRlIHNxdWFyZVxuJHNjdXQtc3doaXRlc3F1YXJlOiBcIlxcMjVhYlwiO1xuXG4vLyBnZW5lcmFsIGN1cnJlbmN5XG4kc2N1dC1jdXJyZW5jeTogXCJcXDAwYTRcIjtcbi8vIGNlbnRcbiRzY3V0LWNlbnQ6IFwiXFwwMGEyXCI7XG4vLyBkb2xsYXJcbiRzY3V0LWRvbGxhcjogXCJcXDAwMjRcIjtcbi8vIHBvdW5kXG4kc2N1dC1wb3VuZDogXCJcXDAwYTNcIjtcbi8vIGV1cm9cbiRzY3V0LWV1cm86IFwiXFwyMGFjXCI7XG4vLyB5ZW5cbiRzY3V0LXllbjogXCJcXDAwYTVcIjtcbi8vIHJ1cGVlXG4kc2N1dC1ydXBlZTogXCJcXDIwQjlcIjtcbkBmdW5jdGlvbiBtYWluLXNyYygkZm9ybWF0cywgJGZpbGUtcGF0aCwgJGZvbnQtZmFtaWx5KSB7XG4gIC8vIFJldHVybiB0aGUgbGlzdCBvZiBgc3JjYCB2YWx1ZXMsIGluIG9yZGVyLCB0aGF0XG4gIC8vIGEgZ29vZCBgQGZvbnQtZmFjZWAgd2lsbCBuZWVkLCBpbmNsdWRpbmcgb25seVxuICAvLyB0aG9zZSBmb3JtYXRzIHNwZWNpZmllZCBpbiB0aGUgbGlzdCBgJGZvcm1hdHNgLlxuICAkcmVzdWx0OiAoKTtcbiAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAkZW90LXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXgnKSBmb3JtYXQoJ2VtYmVkZGVkLW9wZW50eXBlJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRlb3QtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB3b2ZmMikge1xuICAgICR3b2ZmMi12YWw6IHVybCgnI3skZmlsZS1wYXRofS53b2ZmMicpIGZvcm1hdCgnd29mZjInKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYyLXZhbCwgY29tbWEpO1xuICB9XG4gIEBpZiBpbmRleCgkZm9ybWF0cywgd29mZikge1xuICAgICR3b2ZmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHdvZmYtdmFsLCBjb21tYSk7XG4gIH1cbiAgQGlmIGluZGV4KCRmb3JtYXRzLCB0dGYpIHtcbiAgICAkdHRmLXZhbDogdXJsKCcjeyRmaWxlLXBhdGh9LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgICAkcmVzdWx0OiBhcHBlbmQoJHJlc3VsdCwgJHR0Zi12YWwsIGNvbW1hKTtcbiAgfVxuICBAaWYgaW5kZXgoJGZvcm1hdHMsIHN2Zykge1xuICAgICRzdmctdmFsOiB1cmwoJyN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fScpIGZvcm1hdCgnc3ZnJyk7XG4gICAgJHJlc3VsdDogYXBwZW5kKCRyZXN1bHQsICRzdmctdmFsLCBjb21tYSk7XG4gIH1cbiAgQHJldHVybiAkcmVzdWx0O1xufVxuXG5AbWl4aW4gc2N1dC1mb250LWZhY2UgKFxuICAkZm9udC1mYW1pbHksXG4gICRmaWxlLXBhdGgsXG4gICR3ZWlnaHQ6IG5vcm1hbCxcbiAgJHN0eWxlOiBub3JtYWwsXG4gICRmb3JtYXRzOiBlb3Qgd29mZjIgd29mZiB0dGYgc3ZnXG4pIHtcblxuICBAaWYgaW5kZXgoJ2l0YWxpYycgJ29ibGlxdWUnLCAkd2VpZ2h0KSB7XG4gICAgJHN0eWxlOiAkd2VpZ2h0O1xuICAgICR3ZWlnaHQ6IG5vcm1hbDtcbiAgfVxuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC13ZWlnaHQ6ICR3ZWlnaHQ7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuXG4gICAgQGlmIGluZGV4KCRmb3JtYXRzLCBlb3QpIHtcbiAgICAgIHNyYzogdXJsKCcjeyRmaWxlLXBhdGh9LmVvdCcpO1xuICAgIH1cbiAgICBzcmM6IG1haW4tc3JjKCRmb3JtYXRzLCAkZmlsZS1wYXRoLCAkZm9udC1mYW1pbHkpO1xuICB9XG5cbn1cblxuQG1peGluIHNjdXQtaGFuZ2luZy1pbmRlbnQgKFxuICAkaW5kZW50OiAxZW1cbikge1xuXG4gIC8vIHBhZGRpbmctbGVmdCBjcmVhdGVzIHRoZSBpbmRlbnQsXG4gIC8vIHdoaWxlIHRleHQtaW5kZW50IHB1bGxzIHRoZSBmaXJzdCBsaW5lXG4gIC8vIGJhY2sgdG8gdGhlIGVkZ2UuXG5cbiAgcGFkZGluZy1sZWZ0OiAkaW5kZW50O1xuICB0ZXh0LWluZGVudDogLSRpbmRlbnQ7XG5cbn1cblxuJXNjdXQtaGFuZ2luZy1pbmRlbnQge1xuICBAaW5jbHVkZSBzY3V0LWhhbmdpbmctaW5kZW50O1xufVxuQG1peGluIHNjdXQtaW5kZW50ZWQtcHMgKFxuICAkaW5kZW50OiAxLjVlbSxcbiAgJG5vLWZpcnN0LWluZGVudDogdHJ1ZVxuKSB7XG5cbiAgcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHRleHQtaW5kZW50OiAkaW5kZW50O1xuICB9XG5cbiAgQGlmICRuby1maXJzdC1pbmRlbnQge1xuICAgIHA6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICB0ZXh0LWluZGVudDogMDtcbiAgICB9XG4gIH1cblxufVxuXG4lc2N1dC1pbmRlbnRlZC1wcyB7XG4gIEBpbmNsdWRlIHNjdXQtaW5kZW50ZWQtcHM7XG59XG5AbWl4aW4gc2N1dC1rZXktdmFsIChcbiAgJGRpdmlkZXI6IFwiOlwiLFxuICAkcGFkOiAwLjI1ZW0sXG4gICRpbmRlbnQ6IDFlbSxcbiAgJHNwYWNpbmc6IDAsXG4gICRwYWQtbGVmdDogMFxuKSB7XG5cbiAgJiA+IGR0IHtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmbG9hdDogbGVmdDtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICRkaXZpZGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAkcGFkO1xuICAgICAgQGlmICRwYWQtbGVmdCAhPSAwIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRwYWQtbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmID4gZGQge1xuICAgIG1hcmdpbi1sZWZ0OiAkaW5kZW50O1xuICAgIEBpZiAkc3BhY2luZyAhPSAwIHtcbiAgICAgIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nO1xuICAgIH1cbiAgfVxuXG59XG5cbiVzY3V0LWtleS12YWwge1xuICBAaW5jbHVkZSBzY3V0LWtleS12YWw7XG59XG5AbWl4aW4gc2N1dC1saW5rLWJiIChcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkd2lkdGg6IDFweFxuKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXG4gIGJvcmRlci1ib3R0b20td2lkdGg6ICR3aWR0aDtcbiAgYm9yZGVyLWJvdHRvbS1zdHlsZTogJHN0eWxlO1xuICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRjb2xvcjtcbiAgfVxuXG59XG5cbiVzY3V0LWxpbmstYmIge1xuICBAaW5jbHVkZSBzY3V0LWxpbmstYmI7XG59XG4vLyBTQ1VUIExJTksgVU5TVFlMRURcbi8vIGh0dHA6Ly9kYXZpZHRoZWNsYXJrLmdpdGh1Yi5pby9zY3V0LyNsaW5rLXVuc3R5bGVkXG5cbkBtaXhpbiBzY3V0LWxpbmstdW5zdHlsZWQoKSB7XG5cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcblxufVxuXG4lc2N1dC1saW5rLXVuc3R5bGVkIHtcbiAgQGluY2x1ZGUgc2N1dC1saW5rLXVuc3R5bGVkKCk7XG59XG5cbkBtaXhpbiBzY3V0LXJldmVyc2UtaXRhbGljcyAoXG4gICRlbGVtZW50czogbnVsbFxuKSB7XG5cbiAgJGVsZW1lbnQtbGlzdDogZW0sIGNpdGUsIGk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgI3tqb2luKCRlbGVtZW50LWxpc3QsICRlbGVtZW50cyl9IHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gIH1cblxufVxuXG4lc2N1dC1yZXZlcnNlLWl0YWxpY3Mge1xuICBAaW5jbHVkZSBzY3V0LXJldmVyc2UtaXRhbGljcztcbn1cblxuQG1peGluIHNjdXQtc2lkZS1saW5lZCAoXG4gICRoZWlnaHQ6IDFweCxcbiAgJHNwYWNlOiAwLjVlbSxcbiAgJGNvbG9yOiBpbmhlcml0LFxuICAkc3R5bGU6IHNvbGlkLFxuICAkdi1hZGp1c3Q6IGZhbHNlLFxuICAkZG91YmxlOiBmYWxzZVxuKSB7XG5cbiAgZGlzcGxheTogYmxvY2s7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAmOmJlZm9yZSxcbiAgJjphZnRlciB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDUwJTtcblxuICAgIGJvcmRlci10b3Atc3R5bGU6ICRzdHlsZTtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAkaGVpZ2h0O1xuXG4gICAgQGlmICRjb2xvciAhPSBpbmhlcml0IHtcbiAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvcjtcbiAgICB9XG5cbiAgICBAaWYgJHYtYWRqdXN0ICE9IGZhbHNlIHtcbiAgICAgIGJvdHRvbTogJHYtYWRqdXN0O1xuICAgIH1cblxuICAgIEBpZiAkZG91YmxlICE9IGZhbHNlIHtcbiAgICAgIGhlaWdodDogJGRvdWJsZTtcbiAgICAgIGJvcmRlci1ib3R0b20tc3R5bGU6ICRzdHlsZTtcbiAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6ICRoZWlnaHQ7XG4gICAgICBAaWYgJGNvbG9yICE9IGluaGVyaXQge1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJjpiZWZvcmUge1xuICAgIHJpZ2h0OiAkc3BhY2U7XG4gICAgbWFyZ2luLWxlZnQ6IC01MCU7XG4gIH1cbiAgJjphZnRlciB7XG4gICAgbGVmdDogJHNwYWNlO1xuICAgIG1hcmdpbi1yaWdodDogLTUwJTtcbiAgfVxuXG59XG5cbiVzY3V0LXNpZGUtbGluZWQge1xuICBAaW5jbHVkZSBzY3V0LXNpZGUtbGluZWQ7XG59XG5AbWl4aW4gc2N1dC10cnVuY2F0ZSB7XG5cbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG5cbn1cblxuJXNjdXQtdHJ1bmNhdGUge1xuICBAaW5jbHVkZSBzY3V0LXRydW5jYXRlO1xufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVG9vbGtpdCBTZXR0aW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInRvb2xraXQvcGxhY2Vob2xkZXJzXCI7XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gSW1wb3J0c1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AaW1wb3J0IFwidG9vbGtpdC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcInRvb2xraXQvY29sb3JzXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9mb250c1wiO1xuQGltcG9ydCBcInRvb2xraXQvaW50cmluc2ljLXJhdGlvXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9uZXN0ZWQtY29udGV4dFwiO1xuQGltcG9ydCBcInRvb2xraXQvcGFyYWxsYXhcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3J0bFwiO1xuQGltcG9ydCBcInRvb2xraXQvdGFyZ2V0XCI7XG5AaW1wb3J0IFwidG9vbGtpdC90cmlhbmdsZVwiO1xuQGltcG9ydCBcInRvb2xraXQvY2VudGVyXCI7XG5AaW1wb3J0IFwidG9vbGtpdC92aWV3cG9ydFwiO1xuQGltcG9ydCBcInRvb2xraXQvdW5kZXJsaW5lXCI7XG5AaW1wb3J0IFwidG9vbGtpdC9hcnRcIjtcbkBpbXBvcnQgXCJ0b29sa2l0L3NldC1tdWx0aXBsZVwiO1xuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUb29sa2l0IFNldHRpbmdzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiRUb29sa2l0LVNldHRpbmdzOiAoXG4gICdjbGVhcmZpeCBleHRlbmQnOiBmYWxzZSxcbiAgJ2NvbG9yIHN0YWNrIGFtb3VudHMnOiAyNSUgNTAlIDc1JSA4NSUgOTAlLFxuICAndGludCBzaGFkZSBhbW91bnRzJzogNzUlIDUwJSAyNSUsXG4gICd0aW50IGNvbG9yJzogI2ZmZixcbiAgJ3NoYWRlIGNvbG9yJzogIzAwMCxcbiAgJ2NvbG9yIHNjYWxlIHN0ZXBzJzogNixcbiAgJ2xpZ2F0dXJlIGV4dGVuZCc6IGZhbHNlLFxuICAnZm9udCBmYWNlIHdlaWdodCc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBzdHlsZSc6IG5vcm1hbCxcbiAgJ2ZvbnQgZmFjZSBpbmxpbmUgd29mZic6IGZhbHNlLFxuICAnaWNvbiBmb250IGV4dGVuZCc6IGZhbHNlLFxuICAnaWNvbiBmb250IHNwZWFrJzogZmFsc2UsXG4gICdmYWRlIGluIGR1cmF0aW9uJzogMXMsXG4gICdmYWRlIGluIGxvYWRpbmcgY2xhc3MnOiAnLndmLWxvYWRpbmcnLFxuICAnZmFkZSBpbiBleHRlbmQnOiBmYWxzZSxcbiAgJ2ludHJpbnNpYyByYXRpbyc6IDE2LzksXG4gICdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnOiAxMDAlLFxuICAnaW50cmluc2ljIHJhdGlvIGVsZW1lbnRzJzogJz4gKicsXG4gICdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nOiB0b3AsXG4gICdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJzogZmFsc2UsXG4gICduZXN0ZWQgY29udGV4dCBjb250ZXh0cyc6IDEwMCUsXG4gICduZXN0ZWQgY29udGV4dCBwb3NpdGlvbic6IGxlZnQsXG4gICd0cmlhbmdsZSBjb2xvcic6ICMwMDAsXG4gICd0cmlhbmdsZSBoZWlnaHQnOiAxZW0sXG4gICd0cmlhbmdsZSB3aWR0aCc6IDFlbSxcbiAgJ3RyaWFuZ2xlIGFuZ2xlJzogMCxcbiAgJ3BhcmFsbGF4IHBlcnNwZWN0aXZlJzogMSxcbiAgJ3BhcmFsbGF4IGVsZW1lbnQnOiAnYm9keScsXG4gICdwYXJhbGxheCBpb3MnOiB0cnVlLFxuICAncGFyYWxsYXggZGlzdGFuY2UnOiAwLFxuICAndmVydGljYWwgbWlkcG9pbnQnOiA1MCUsXG4gICd2ZXJ0aWNhbCBleHRlbmQnOiBmYWxzZSxcbiAgJ2hvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2hvcml6b250YWwgZml4ZWQgbWlkcG9pbnQnOiA1MCUsXG4gICdob3Jpem9udGFsIGZpeGVkJzogZmFsc2UsXG4gICdob3Jpem9udGFsIGV4dGVuZCc6IGZhbHNlLFxuICAnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGhvcml6b250YWwgbWlkcG9pbnQnOiAwJSxcbiAgJ2Fic29sdXRlIGNlbnRlciBmaXhlZCBob3Jpem9udGFsIG1pZHBvaW50JzogNTAlLFxuICAnYWJzb2x1dGUgY2VudGVyIGZpeGVkJzogZmFsc2UsXG4gICdhYnNvbHV0ZSBjZW50ZXIgZXh0ZW5kJzogZmFsc2UsXG4gICd1bmRlcmxpbmUgYmFja2dyb3VuZCc6ICNmZmYsXG4gICd1bmRlcmxpbmUgY29sb3InOiAjMDBlLFxuICAndW5kZXJsaW5lIGNsZWFyIGRlc2NlbmRlcnMnOiB0cnVlLFxuICAndW5kZXJsaW5lIGRpc3RhbmNlJzogMSxcbiAgJ3VuZGVybGluZSB3aWR0aCc6IDIsXG4gICd1bmRlcmxpbmUgZXh0ZW5kJzogZmFsc2UsXG4gICdhcnQgcGl4ZWwgc2l6ZSc6IDFweCxcbiAgJ2FydCBjb2xvcic6IGJsYWNrLFxuICAnYXJ0IGJvcmRlciByYWRpdXMnOiAwJVxuKTtcblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBOZXcgU2V0dGluZ3MgbW9kdWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEdsb2JhbFxuJEdsb2JhbFNldHRpbmdzOiAkVG9vbGtpdC1TZXR0aW5ncyAhZGVmYXVsdDtcbi8vIFVzZXJcbiRVc2VyU2V0dGluZ3M6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVzZXIgU2V0dGluZyBFeGlzdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRVc2VyU2V0dGluZ3MsICRzZXR0aW5nKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiB1c2VyLXNldHRpbmctZXhpc3RzLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkUmV0dXJuOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkUmV0dXJuOiBtYXAtbWVyZ2UoJFJldHVybiwgKCRzZXR0aW5nOiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKSkpO1xuICB9XG4gIEByZXR1cm4gJFJldHVybjtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1oYXMoJHNldHRpbmcpIHtcbiAgQHJldHVybiB1c2VyLXNldHRpbmctZXhpc3RzKCRzZXR0aW5nKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBTZXR0aW5nIEdldFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gc2V0dGluZy1nZXQoJHNldHRpbmcpIHtcbiAgQGlmIHVzZXItc2V0dGluZy1leGlzdHMoJHNldHRpbmcpIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJFVzZXJTZXR0aW5ncywgJHNldHRpbmcpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJEdsb2JhbFNldHRpbmdzLCAkc2V0dGluZyk7XG4gIH1cbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctZ2V0LW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkdmFsdWVzOiAoKTtcbiAgQGVhY2ggJHNldHRpbmcgaW4gJHNldHRpbmdzIHtcbiAgICAkdmFsdWVzOiBtYXAtbWVyZ2UoJHZhbHVlcywgKCRzZXR0aW5nOiBzZXR0aW5nLWdldCgkc2V0dGluZykpKTtcbiAgfVxuICBAcmV0dXJuICR2YWx1ZXM7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtZ2V0KCRzZXR0aW5nKSB7XG4gIEByZXR1cm4gc2V0dGluZy1nZXQoJHNldHRpbmcpO1xufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZ3MgU2V0XG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRVc2VyU2V0dGluZ3M6IG1hcC1tZXJnZSgkVXNlclNldHRpbmdzLCAoJHNldHRpbmc6ICR2YWx1ZSkpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctc2V0LW11bHRpcGxlKCRzZXR0aW5ncykge1xuICAkVXNlclNldHRpbmdzOiBtYXAtbWVyZ2UoJFVzZXJTZXR0aW5ncywgJHNldHRpbmdzKSAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKSB7XG4gICRzZXR0aW5nLXNldHRlcjogc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSkgIWdsb2JhbDtcbn1cblxuQG1peGluIHNldHRpbmctY2hhbmdlKCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgJHNldHRpbmctc2V0dGVyOiBzZXR0aW5nLXNldC1tdWx0aXBsZSgkc2V0dGluZ3MpICFnbG9iYWw7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNoYW5nZS1tdWx0aXBsZSgkc2V0dGluZ3MpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQtbXVsdGlwbGUoJHNldHRpbmdzKTtcbn1cblxuLy8gVG9vbGtpdCBWZXJzaW9uXG5AZnVuY3Rpb24gdG9vbGtpdC1zZXQoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAcmV0dXJuIHNldHRpbmctc2V0KCRzZXR0aW5nLCAkdmFsdWUpO1xufVxuXG5AbWl4aW4gdG9vbGtpdC1jaGFuZ2UoJHNldHRpbmcsICR2YWx1ZSkge1xuICBAaW5jbHVkZSBzZXR0aW5nLXNldCgkc2V0dGluZywgJHZhbHVlKTtcbn1cblxuQG1peGluIHRvb2xraXQtc2V0KCRzZXR0aW5nLCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1zZXQoJHNldHRpbmcsICR2YWx1ZSk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gUmVtb3ZlIFNldHRpbmdcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJFJldHVybjogKCk7XG5cbiAgQGVhY2ggJEtleSwgJFZhbHVlIGluICRVc2VyU2V0dGluZ3Mge1xuICAgICRSZXR1cm46IGlmKCRzZXR0aW5nID09ICRLZXksICRSZXR1cm4sIG1hcC1tZXJnZSgkUmV0dXJuLCAoJEtleTogJFZhbHVlKSkpO1xuICB9XG5cbiAgJFVzZXJTZXR0aW5nczogJFJldHVybiAhZ2xvYmFsO1xuICBAcmV0dXJuIHRydWU7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICBAZWFjaCAkc2V0dGluZyBpbiAkc2V0dGluZ3Mge1xuICAgICRjbGVhci10aGUtc2V0dGluZ3M6IHNldHRpbmctY2xlYXIoJHNldHRpbmcpO1xuICB9XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQGZ1bmN0aW9uIHNldHRpbmctcmVzZXQoKSB7XG4gICRVc2VyU2V0dGluZ3M6ICgpICFnbG9iYWw7XG4gIEByZXR1cm4gdHJ1ZTtcbn1cblxuQG1peGluIHNldHRpbmctY2xlYXIoJHNldHRpbmcpIHtcbiAgJHNldHRpbmctY2xlYXJlcjogc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncy4uLikge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLWNsZWFyLW11bHRpcGxlKCRzZXR0aW5ncyk7XG59XG5cbkBtaXhpbiBzZXR0aW5nLXJlc2V0KCkge1xuICAkc2V0dGluZy1jbGVhcmVyOiBzZXR0aW5nLXJlc2V0KCk7XG59XG5cbi8vIFRvb2xraXQgVmVyc2lvblxuQGZ1bmN0aW9uIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQHJldHVybiBzZXR0aW5nLWNsZWFyKCRzZXR0aW5nKTtcbn1cblxuQG1peGluIHRvb2xraXQtcmVzZXQoJHNldHRpbmcpIHtcbiAgQGluY2x1ZGUgc2V0dGluZy1jbGVhcigkc2V0dGluZyk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU2V0dGluZyBQaWNrXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2soJHNldHRpbmcsICRpbnB1dCkge1xuICBAcmV0dXJuIGlmKCRpbnB1dCAhPSBudWxsLCAkaW5wdXQsIHNldHRpbmctZ2V0KCRzZXR0aW5nKSk7XG59XG5cbkBmdW5jdGlvbiBzZXR0aW5nLXBpY2stbXVsdGlwbGUoJHNldHRpbmdzKSB7XG4gICRSZXR1cm46ICgpO1xuICBAZWFjaCAkc2V0dGluZywgJGlucHV0IGluICRzZXR0aW5ncyB7XG4gICAgJFJldHVybjogbWFwLW1lcmdlKCRSZXR1cm4sICgkc2V0dGluZzogc2V0dGluZy1waWNrKCRpbnB1dCwgJHNldHRpbmcpKSk7XG4gIH1cblxuICBAcmV0dXJuICRSZXR1cm47XG59IiwiJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6ICgpICFkZWZhdWx0O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFBsYWNlaG9sZGVyIEdldC9TZXRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItc2V0KCRpZCkge1xuICAkdW5pcXVlLWlkOiB1bmlxdWUtaWQoKTtcbiAgJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnM6IG1hcC1tZXJnZSgkUHJpdmF0ZS1Ub29sa2l0LVBsYWNlaG9sZGVycywgKCRpZDogJHVuaXF1ZS1pZCkpICFnbG9iYWw7XG4gIEByZXR1cm4gJHVuaXF1ZS1pZDtcbn1cblxuQGZ1bmN0aW9uIHRvb2xraXQtcGxhY2Vob2xkZXItZ2V0KCRpZCkge1xuICBAcmV0dXJuIG1hcC1nZXQoJFByaXZhdGUtVG9vbGtpdC1QbGFjZWhvbGRlcnMsICRpZCk7XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gR2VuZXJhdGUgUGxhY2Vob2xkZXIgQ2xhc3MgYW5kIEV4dGVuZFxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZHluYW1pYy1leHRlbmQoJGlkKSB7XG4gICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1nZXQoJGlkKTtcblxuICBAaWYgJHBsYWNlaG9sZGVyLWlkID09IG51bGwge1xuICAgICRwbGFjZWhvbGRlci1pZDogdG9vbGtpdC1wbGFjZWhvbGRlci1zZXQoJGlkKTtcbiAgICBAYXQtcm9vdCAlI3skcGxhY2Vob2xkZXItaWR9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuICBAZXh0ZW5kICUjeyRwbGFjZWhvbGRlci1pZH07XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gU3RhdGljIE1peGluIEhlbHBlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gbWl4aW4tZHJ5ZXIoJGlkLCAkZXh0ZW5kOiB0cnVlKSB7XG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCRpZCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBNb2Rlcm4gQ2xlYXJmaXggTWl4aW5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGNsZWFyZml4KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnY2xlYXJmaXggZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjbGVhcmZpeCcpIHtcbiAgICAgIEBpbmNsdWRlIGNsZWFyZml4KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgICY6YWZ0ZXIge1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb21wYXNzIEV4dGVuc2lvbiBJbXBvcnRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBUaW50IGFuZCBTaGFkZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRhbW91bnQpIHtcbiAgQHJldHVybiBtaXgodG9vbGtpdC1nZXQoJ3RpbnQgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuQGZ1bmN0aW9uIHNoYWRlKCRjb2xvciwgJGFtb3VudCkge1xuICBAcmV0dXJuIG1peCh0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGNvbG9yLCAkYW1vdW50KTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBMdW1hXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBmdW5jdGlvbiBsdW1hKCRjb2xvcikge1xuICBAcmV0dXJuIChyZWQoJGNvbG9yKSAqIC4yOTkpICsgKGdyZWVuKCRjb2xvcikgKiAuNTg3KSArIChibHVlKCRjb2xvcikgKiAuMTE0KTtcbn1cblxuQGZ1bmN0aW9uIGx1bWEtZ3RlKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQGlmIGx1bWEoJGNvbG9yMSkgPj0gbHVtYSgkY29sb3IyKSB7XG4gICAgQHJldHVybiB0cnVlO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbkBmdW5jdGlvbiBsdW1hLWx0ZSgkY29sb3IxLCAkY29sb3IyKSB7XG4gIEBpZiBsdW1hKCRjb2xvcjEpIDw9IGx1bWEoJGNvbG9yMikge1xuICAgIEByZXR1cm4gdHJ1ZTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5AZnVuY3Rpb24gbHVtYS1kaWZmKCRjb2xvcjEsICRjb2xvcjIpIHtcbiAgQHJldHVybiBsdW1hKCRjb2xvcjEpIC0gbHVtYSgkY29sb3IyKTtcbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvciBTdGFja3Ncbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQGZ1bmN0aW9uIGNvbG9yLXN0YWNrKCRtYWluLCAkc2Vjb25kYXJ5LCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA9PSAwIHtcbiAgICAkYW1vdW50czogdG9vbGtpdC1nZXQoJ2NvbG9yIHN0YWNrIGFtb3VudHMnKTtcbiAgfVxuICBAZWxzZSBpZiBsZW5ndGgoJGFtb3VudHMpID09IDEge1xuICAgICRhbW91bnRzOiBudGgoJGFtb3VudHMsIDEpO1xuICB9XG5cbiAgJHN0YWNrOiAkbWFpbjtcblxuICBAZWFjaCAkYW1vdW50IGluICRhbW91bnRzIHtcbiAgICAkc3RhY2s6IGpvaW4oJHN0YWNrLCBtaXgoJHNlY29uZGFyeSwgbnRoKCRzdGFjaywgMSksICRhbW91bnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0YWNrO1xufVxuXG4vLyBUaW50IFN0YWNrXG5AZnVuY3Rpb24gdGludC1zdGFjaygkY29sb3IsICRhbW91bnRzLi4uKSB7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID4gMCB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJyksICRhbW91bnRzKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiBjb2xvci1zdGFjaygkY29sb3IsIHRvb2xraXQtZ2V0KCd0aW50IGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFNoYWRlIFN0YWNrXG5AZnVuY3Rpb24gc2hhZGUtc3RhY2soJGNvbG9yLCAkYW1vdW50cy4uLikge1xuICBAaWYgbGVuZ3RoKCRhbW91bnRzKSA+IDAge1xuICAgIEByZXR1cm4gY29sb3Itc3RhY2soJGNvbG9yLCB0b29sa2l0LWdldCgnc2hhZGUgY29sb3InKSwgJGFtb3VudHMpO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAcmV0dXJuIGNvbG9yLXN0YWNrKCRjb2xvciwgdG9vbGtpdC1nZXQoJ3NoYWRlIGNvbG9yJykpO1xuICB9XG59XG5cbi8vIFRpbnQvU2hhZGUgU3RhY2tcbkBmdW5jdGlvbiB0aW50LXNoYWRlLXN0YWNrKCRjb2xvciwgJGFtb3VudHMuLi4pIHtcbiAgJGNvbG9yczogKCk7XG4gIEBpZiBsZW5ndGgoJGFtb3VudHMpID09IDAge1xuICAgICRhbW91bnRzOiB0b29sa2l0LWdldCgndGludCBzaGFkZSBhbW91bnRzJyk7XG4gIH1cbiAgJGxlbmd0aDogbGVuZ3RoKCRhbW91bnRzKTtcblxuICAvLyBTaGFkZXNcbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkbGVuZ3RoIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgc2hhZGUoJGNvbG9yLCBudGgoJGFtb3VudHMsICRpKSkpO1xuICB9XG5cbiAgLy8gQmFzZVxuICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgJGNvbG9yKTtcblxuICAvLyBUaW50c1xuICBAZm9yICRpIGZyb20gMCB0aHJvdWdoICRsZW5ndGggLSAxIHtcbiAgICAkY29sb3JzOiBhcHBlbmQoJGNvbG9ycywgdGludCgkY29sb3IsIG50aCgkYW1vdW50cywgJGxlbmd0aCAtICRpKSkpO1xuICB9XG5cbiAgQHJldHVybiAkY29sb3JzO1xufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG9yIFNjYWxlc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AZnVuY3Rpb24gY29sb3Itc2NhbGUoJG1haW4sICRzZWNvbmRhcnksICRzdGVwczogbnVsbCkge1xuICAkc3RlcHM6IGlmKCRzdGVwcyAhPSBudWxsLCAkc3RlcHMsIHRvb2xraXQtZ2V0KCdjb2xvciBzY2FsZSBzdGVwcycpKTtcblxuICAkbGlzdDogJG1haW47XG5cbiAgJHJlZDE6IHJlZCgkbWFpbik7XG4gICRyZWQyOiByZWQoJHNlY29uZGFyeSk7XG4gICRyZWQtZGlmZjogKCgkcmVkMSAtICRyZWQyKSAvICgoJHN0ZXBzIC0gMSkpKTtcblxuICAkaHVlMTogaHVlKCRtYWluKTtcbiAgJGh1ZTI6IGh1ZSgkc2Vjb25kYXJ5KTtcbiAgQGlmICgkaHVlMiArIDM1OSAtICRodWUxKSA8IGFicygkaHVlMSAtICRodWUyKSB7XG4gICAgJGh1ZTI6ICRodWUyICsgMzU5O1xuICB9XG4gICRodWUtZGlmZjogKCRodWUyIC0gJGh1ZTEpIC8gKCRzdGVwcyAtIDEpO1xuXG4gICRzYXQxOiBzYXR1cmF0aW9uKCRtYWluKTtcbiAgJHNhdDI6IHNhdHVyYXRpb24oJHNlY29uZGFyeSk7XG4gICRzYXQtZGlmZjogMDtcbiAgQGlmICRzYXQxID4gJHNhdDIge1xuICAgICRzYXQtZGlmZjogKCRzYXQyIC0gJHNhdDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkc2F0LWRpZmY6ICgkc2F0MSAtICRzYXQyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRsdGUxOiBsaWdodG5lc3MoJG1haW4pO1xuICAkbHRlMjogbGlnaHRuZXNzKCRzZWNvbmRhcnkpO1xuICAkbHRlLWRpZmY6IDA7XG4gIEBpZiAkbHRlMSA+ICRsdGUyIHtcbiAgICAkbHRlLWRpZmY6ICgkbHRlMiAtICRsdGUxKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgJGx0ZS1kaWZmOiAoJGx0ZTEgLSAkbHRlMikgLyAoJHN0ZXBzIC0gMSk7XG4gIH1cblxuICAkYWxwMTogYWxwaGEoJG1haW4pO1xuICAkYWxwMjogYWxwaGEoJHNlY29uZGFyeSk7XG4gICRhbHAtZGlmZjogMDtcbiAgQGlmICRhbHAxID4gJGFscDIge1xuICAgICRhbHAtZGlmZjogKCRhbHAyIC0gJGFscDEpIC8gKCRzdGVwcyAtIDEpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkYWxwLWRpZmY6ICgkYWxwMSAtICRhbHAyKSAvICgkc3RlcHMgLSAxKTtcbiAgfVxuXG4gICRodWUtaG9sZDogJGh1ZTE7XG4gICRzYXQtaG9sZDogJHNhdDE7XG4gICRsdGUtaG9sZDogJGx0ZTE7XG4gICRhbHAtaG9sZDogJGFscDE7XG4gICRjb2xvci1ob2xkOiAwO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggJHN0ZXBzIHtcbiAgICAkaHVlLWhvbGQ6ICRodWUtaG9sZCArICRodWUtZGlmZjtcbiAgICAkc2F0LWhvbGQ6ICRzYXQtaG9sZCArICRzYXQtZGlmZjtcbiAgICAkbHRlLWhvbGQ6ICRsdGUtaG9sZCArICRsdGUtZGlmZjtcbiAgICAkYWxwLWhvbGQ6ICRhbHAtaG9sZCArICRhbHAtZGlmZjtcblxuICAgICRjb2xvci1ob2xkOiBoc2xhKCRodWUtaG9sZCwgJHNhdC1ob2xkLCAkbHRlLWhvbGQsICRhbHAtaG9sZCk7XG4gICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJGNvbG9yLWhvbGQpO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBFbmFibGUgbGlnYXR1cmVzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBlbmFibGUtbGlnYXR1cmVzKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnbGlnYXR1cmUgZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kIHtcbiAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnZW5hYmxlIGxpZ2F0dXJlcycpIHtcbiAgICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXM7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICAtd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtbW96LWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2E9MSwgZGxpZz0xXCI7XG4gICAgLW1vei1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgLW1zLWZvbnQtZmVhdHVyZS1zZXR0aW5nczpcImxpZ2FcIixcImRsaWdcIjtcbiAgICAtby1mb250LWZlYXR1cmUtc2V0dGluZ3M6XCJsaWdhXCIsXCJkbGlnXCI7XG4gICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIixcImRsaWdcIjtcbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZvbnQgRmFjZVxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gZm9udC1mYWNlKCRuYW1lLCAkZmlsZXMsICR3ZWlnaHQ6IG51bGwsICRzdHlsZTogbnVsbCwgJGlubGluZS13b2ZmOiBudWxsKSB7XG4gICR3ZWlnaHQ6IGlmKCR3ZWlnaHQgIT0gbnVsbCwgJHdlaWdodCwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSB3ZWlnaHQnKSk7XG4gICRzdHlsZTogaWYoJHN0eWxlICE9IG51bGwsICRzdHlsZSwgdG9vbGtpdC1nZXQoJ2ZvbnQgZmFjZSBzdHlsZScpKTtcbiAgJGlubGluZS13b2ZmOiBpZigkaW5saW5lLXdvZmYgIT0gbnVsbCwgJGlubGluZS13b2ZmLCB0b29sa2l0LWdldCgnZm9udCBmYWNlIGlubGluZSB3b2ZmJykpO1xuXG4gICRmb250LXN0YWNrOiAoKTtcbiAgJGZvbnQtc3JjOiAnJztcbiAgJGVvdDogZmFsc2U7XG4gICRmb250LWV4dGVuc2lvbnM6ICgnZW90JzogJ2VtYmVkZGVkLW9wZW50eXBlJywgJ3dvZmYyJzogJ3dvZmYyJywgJ3dvZmYnOiAnd29mZicsICd0dGYnOiAndHJ1ZXR5cGUnLCAnc3ZnJzogJ3N2ZycpO1xuXG4gIEBlYWNoICRleHQsICRmb3JtYXQgaW4gJGZvbnQtZXh0ZW5zaW9ucyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRmaWxlcywgJGV4dCkge1xuICAgICAgQGlmIGZ1bmN0aW9uLWV4aXN0cyhpbmxpbmUtZm9udC1maWxlcykgYW5kICRpbmxpbmUtd29mZiA9PSB0cnVlIGFuZCAoJGV4dCA9PSAnd29mZicgb3IgJGV4dCA9PSAnd29mZjInKSB7XG4gICAgICAgICRmb250LXNyYzogaW5saW5lLWZvbnQtZmlsZXMobWFwLWdldCgkZmlsZXMsICRleHQpKTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIGlmIGZ1bmN0aW9uLWV4aXN0cyhmb250LXVybCkge1xuICAgICAgICAkZm9udC1zcmM6IGZvbnQtdXJsKG1hcC1nZXQoJGZpbGVzLCAkZXh0KSkgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICBAaWYgJGV4dCA9PSAnZW90JyB7XG4gICAgICAgICAgJGVvdDogJGZvbnQtc3JjO1xuICAgICAgICAgICRmb250LXNyYzogZm9udC11cmwobWFwLWdldCgkZmlsZXMsICRleHQpICsgJyNpZWZpeCcpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkpIGZvcm1hdCgkZm9ybWF0KTtcbiAgICAgICAgQGlmICRleHQgPT0gJ2VvdCcge1xuICAgICAgICAgICRlb3Q6ICRmb250LXNyYztcbiAgICAgICAgICAkZm9udC1zcmM6IHVybChtYXAtZ2V0KCRmaWxlcywgJGV4dCkgKyAnI2llZml4JykgZm9ybWF0KCRmb3JtYXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAkZm9udC1zdGFjazogYXBwZW5kKCRmb250LXN0YWNrLCAkZm9udC1zcmMsICdjb21tYScpO1xuICAgIH1cblxuICB9XG5cbiAgQGZvbnQtZmFjZSB7XG4gICAgZm9udC1mYW1pbHk6ICRuYW1lO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICBAaWYgJGVvdCB7XG4gICAgICBzcmM6ICRlb3Q7XG4gICAgfVxuICAgIEBpZiBsZW5ndGgoJGZvbnQtc3RhY2spID4gMCB7XG4gICAgICBzcmM6ICRmb250LXN0YWNrO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEljb24gRm9udFxuLy8gRnJvbSBodHRwOi8vaWNvbW9vbi5pb1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5AbWl4aW4gaWNvbi1mb250KCRmb250LXN0YWNrLCAkc3BlYWs6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHNwZWFrOiBpZigkc3BlYWsgIT0gbnVsbCwgJHNwZWFrLCB0b29sa2l0LWdldCgnaWNvbiBmb250IHNwZWFrJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpY29uIGZvbnQgZXh0ZW5kJykpO1xuXG4gIGZvbnQtZmFtaWx5OiAkZm9udC1zdGFjaztcbiAgQGlmICRzcGVhayA9PSBmYWxzZSB7XG4gICAgc3BlYWs6IG5vbmU7XG4gIH1cbiAgQGluY2x1ZGUgaWNvbi1mb250LS1jb3JlKCRleHRlbmQpO1xufVxuXG5AbWl4aW4gaWNvbi1mb250LS1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaWNvbiBmb250IGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCAge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpY29uIGZvbnQgY29yZScpIHtcbiAgICAgIEBpbmNsdWRlIGljb24tZm9udC0tY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgICBsaW5lLWhlaWdodDogMTtcblxuICAgIEBpbmNsdWRlIGVuYWJsZS1saWdhdHVyZXMoJGV4dGVuZCk7XG5cbiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xuICB9XG59XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRm9udCBGYWRlIEluXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBjb250ZW50LWZhZGUtaW4oJGR1cmF0aW9uOiBudWxsLCAkbG9hZGluZzogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZHVyYXRpb246IGlmKCRkdXJhdGlvbiAhPSBudWxsLCAkZHVyYXRpb24sIHRvb2xraXQtZ2V0KCdmYWRlIGluIGR1cmF0aW9uJykpO1xuICAkbG9hZGluZzogaWYoJGxvYWRpbmcgIT0gbnVsbCwgJGxvYWRpbmcsIHRvb2xraXQtZ2V0KCdmYWRlIGluIGxvYWRpbmcgY2xhc3MnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ZhZGUgaW4gZXh0ZW5kJykpO1xuXG4gIEBpZiAkZXh0ZW5kID09IHRydWUgYW5kICRkdXJhdGlvbiA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBkdXJhdGlvbicpIGFuZCAkbG9hZGluZyA9PSB0b29sa2l0LWdldCgnZmFkZSBpbiBsb2FkaW5nIGNsYXNzJykge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdjb250ZW50IGZhZGUgaW4nKSB7XG4gICAgICBAaW5jbHVkZSBjb250ZW50LWZhZGUtaW4oJGV4dGVuZDogZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICBAaWYgbm90IG1peGluLWV4aXN0cygnc2luZ2xlLXRyYW5zaXRpb24nKSB7XG4gICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgJGR1cmF0aW9uO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkZHVyYXRpb247XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIHNpbmdsZS10cmFuc2l0aW9uKG9wYWNpdHkgJGR1cmF0aW9uKTtcbiAgICB9XG5cbiAgICAjeyRsb2FkaW5nfSAmIHtcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEZsdWlkIEVtYmVkcyBhbmQgd2hhdGV2ZXIgV0lUSCBOTyBKQVZBU0NJUFQhXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2ludHJpbnNpYyByYXRpbyBwYXJlbnQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcGFyZW50KGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1jaGlsZCgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdpbnRyaW5zaWMgcmF0aW8gY2hpbGQnKSB7XG4gICAgICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tY2hpbGQoZmFsc2UpO1xuICAgIH1cbiAgfVxuICBAZWxzZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IC8vIE51a2UgdGhlIGV4dGVybmFsIHN0eWxlc1xuICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyAvLyBOdWtlIHRoZSBleHRlcm5hbCBzdHlsZXNcbiAgICB0b3A6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpby1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJHBvc2l0aW9uOiBudWxsKSB7XG4gICRyYXRpbzogaWYoJHJhdGlvICE9IG51bGwsICRyYXRpbywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbycpKTtcbiAgJHdpZHRoOiBpZigkd2lkdGggIT0gbnVsbCwgJHdpZHRoLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHdpZHRoJykpO1xuICAkcG9zaXRpb246IGlmKCRwb3NpdGlvbiAhPSBudWxsLCAkcG9zaXRpb24sIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gcG9zaXRpb24nKSk7XG5cbiAgcGFkZGluZy0jeyRwb3NpdGlvbn06ICgxIC8gJHJhdGlvKSAqICR3aWR0aDtcbiAgd2lkdGg6ICR3aWR0aDtcbn1cblxuQG1peGluIGludHJpbnNpYy1yYXRpbygkcmF0aW86IG51bGwsICR3aWR0aDogbnVsbCwgJGVsZW1lbnRzOiBudWxsLCAkcG9zaXRpb246IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHJhdGlvOiBpZigkcmF0aW8gIT0gbnVsbCwgJHJhdGlvLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gd2lkdGgnKSk7XG4gICRlbGVtZW50czogaWYoJGVsZW1lbnRzICE9IG51bGwsICRlbGVtZW50cywgdG9vbGtpdC1nZXQoJ2ludHJpbnNpYyByYXRpbyBlbGVtZW50cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnaW50cmluc2ljIHJhdGlvIHBvc2l0aW9uJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdpbnRyaW5zaWMgcmF0aW8gZXh0ZW5kJykpO1xuXG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpby1wYXJlbnQoJGV4dGVuZCk7XG5cbiAgQGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLXJhdGlvKCRyYXRpbywgJHdpZHRoLCAkcG9zaXRpb24pO1xuXG4gIEBlYWNoICRlbGVtZW50IGluICRlbGVtZW50cyB7XG4gICAgI3skZWxlbWVudH0ge1xuICAgIFx0QGluY2x1ZGUgaW50cmluc2ljLXJhdGlvLWNoaWxkKCRleHRlbmQpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaXIoJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRlbGVtZW50czogbnVsbCwgJHBvc2l0aW9uOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gIEBpbmNsdWRlIGludHJpbnNpYy1yYXRpbygkcmF0aW8sICR3aWR0aCwgJGVsZW1lbnRzLCAkZXh0ZW5kLCAkcG9zaXRpb24pO1xufVxuXG5AbWl4aW4gaXItcmF0aW8oJHJhdGlvOiBudWxsLCAkd2lkdGg6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICBAaW5jbHVkZSBpbnRyaW5zaWMtcmF0aW8tcmF0aW8oJHJhdGlvLCAkd2lkdGgsICRwb3NpdGlvbik7XG59IiwiLy8gc2ltcGxlIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbnRleHQgb2YgYSBuZXN0ZWQgcGVyY2VudGFnZS5cbkBmdW5jdGlvbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwpIHtcbiAgJGNvbnRleHRzOiBpZigkY29udGV4dHMgIT0gbnVsbCwgJGNvbnRleHRzLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgY29udGV4dHMnKSk7XG5cbiAgLy8gRmlyc3QgbGV2ZWwgZGVlcCBpcyBhbHdheXMgMTAwJVxuICAkcGVyY2VudGFnZTogMTAwJTtcblxuICAvLyBMb29wIHRocm91Z2ggZWFjaCBsZXZlbFxuICBAZWFjaCAkY29udGV4dCBpbiAkY29udGV4dHMge1xuICAgIC8vIEludmVydCB0aGUgcGVyY2VudGFnZSB0byBmaW5kIGNvbnRleHRcbiAgICAkcGVyY2VudGFnZTogcGVyY2VudGFnZSgkcGVyY2VudGFnZSAvICRjb250ZXh0KTtcbiAgfVxuICAvLyBSZXR1cm4gZmluYWwgcGVyY2VudGFnZVxuICBAcmV0dXJuICRwZXJjZW50YWdlO1xufVxuXG4vLyBtaXhpbiB0byBtYWtlIHRoaW5ncyBlYXNpZXJcbkBtaXhpbiBuZXN0ZWQtY29udGV4dCgkY29udGV4dHM6IG51bGwsICRwb3NpdGlvbjogbnVsbCkge1xuICAkY29udGV4dHM6IGlmKCRjb250ZXh0cyAhPSBudWxsLCAkY29udGV4dHMsIHRvb2xraXQtZ2V0KCduZXN0ZWQgY29udGV4dCBjb250ZXh0cycpKTtcbiAgJHBvc2l0aW9uOiBpZigkcG9zaXRpb24gIT0gbnVsbCwgJHBvc2l0aW9uLCB0b29sa2l0LWdldCgnbmVzdGVkIGNvbnRleHQgcG9zaXRpb24nKSk7XG5cbiAgd2lkdGg6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cyk7XG4gIEBpZiAkcG9zaXRpb24gPT0gXCJjZW50ZXJcIiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogbmVzdGVkLWNvbnRleHQoJGNvbnRleHRzKSAqIC0uNTtcbiAgfVxuICBAaWYgJHBvc2l0aW9uID09IFwicmlnaHRcIiB7XG4gICAgbWFyZ2luLWxlZnQ6IG5lc3RlZC1jb250ZXh0KCRjb250ZXh0cykgKiAtMSArIDEwMCU7XG4gIH1cbn0iLCIvLyBNYWdpYyBwYXJhbGxheCBtaXhpbnNcbkBtaXhpbiBwYXJhbGxheC1pbml0KCRwZXJzcGVjdGl2ZTogbnVsbCwgJGVsZW1lbnQ6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcblxuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcbiAgJGVsZW1lbnQ6IGlmKCRlbGVtZW50ICE9IG51bGwsICRlbGVtZW50LCB0b29sa2l0LWdldCgncGFyYWxsYXggZWxlbWVudCcpKTtcbiAgJHBhcmFsbGF4LWlvczogaWYoJHBhcmFsbGF4LWlvcyAhPSBudWxsLCAkcGFyYWxsYXgtaW9zLCB0b29sa2l0LWdldCgncGFyYWxsYXggaW9zJykpO1xuXG4gIEBpZiAkZWxlbWVudCA9PSAnYm9keScge1xuICAgIEBhdC1yb290IHtcbiAgICAgIGh0bWwsIGJvZHkge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgICBib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgcGFyYWxsYXgtaW5pdC1jb3JlKCRwZXJzcGVjdGl2ZSwgJHBhcmFsbGF4LWlvcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGVsZW1lbnQgPT0gdGhpcyB7XG4gICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGF0LXJvb3QgI3skZWxlbWVudH0ge1xuICAgICAgICBAaW5jbHVkZSBwYXJhbGxheC1pbml0LWNvcmUoJHBlcnNwZWN0aXZlLCAkcGFyYWxsYXgtaW9zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIHBhcmFsbGF4LWluaXQtY29yZSgkcGVyc3BlY3RpdmU6IG51bGwsICRwYXJhbGxheC1pb3M6IG51bGwpIHtcbiAgJHBlcnNwZWN0aXZlOiBpZigkcGVyc3BlY3RpdmUgIT0gbnVsbCwgJHBlcnNwZWN0aXZlLCB0b29sa2l0LWdldCgncGFyYWxsYXggcGVyc3BlY3RpdmUnKSk7XG4gICRwYXJhbGxheC1pb3M6IGlmKCRwYXJhbGxheC1pb3MgIT0gbnVsbCwgJHBhcmFsbGF4LWlvcywgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGlvcycpKTtcblxuICBvdmVyZmxvdzogYXV0bztcbiAgQGlmIG1peGluLWV4aXN0cyhwZXJzcGVjdGl2ZSkge1xuICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSAqIDFweCk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIC13ZWJraXQtcGVyc3BlY3RpdmU6ICRwZXJzcGVjdGl2ZSAqIDFweDtcbiAgICBwZXJzcGVjdGl2ZTogJHBlcnNwZWN0aXZlICogMXB4O1xuICB9XG4gIC8vIEFsbG93cyBmb3Igc21vb3RoIHNjcm9sbGluZyBidXQgZGlzYWJsZXMgcGFyYWxsYXggZWZmZWN0cy5cbiAgQGlmICRwYXJhbGxheC1pb3MgPT0gZmFsc2Uge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuICAvLyBNYWtlIHN1cmUgM0QgcGVyc3BlY3RpdmUgaXMgcHJlc2VydmVkXG4gICYsICYgKiB7XG4gICAgQGlmIG1peGluLWV4aXN0cyh0cmFuc2Zvcm0tc3R5bGUpIHtcbiAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZShwcmVzZXJ2ZS0zZCk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIC13ZWJraXQtdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZDtcbiAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBwYXJhbGxheCgkZGlzdGFuY2U6IG51bGwsICRwZXJzcGVjdGl2ZTogbnVsbCkge1xuXG4gICRkaXN0YW5jZTogaWYoJGRpc3RhbmNlICE9IG51bGwsICRkaXN0YW5jZSwgdG9vbGtpdC1nZXQoJ3BhcmFsbGF4IGRpc3RhbmNlJykpO1xuICAkcGVyc3BlY3RpdmU6IGlmKCRwZXJzcGVjdGl2ZSAhPSBudWxsLCAkcGVyc3BlY3RpdmUsIHRvb2xraXQtZ2V0KCdwYXJhbGxheCBwZXJzcGVjdGl2ZScpKTtcblxuICAkdHJhbnNmb3JtOiB0cmFuc2xhdGVaKCRkaXN0YW5jZSAqICRwZXJzcGVjdGl2ZSAqIDFweCkgc2NhbGUoYWJzKCRkaXN0YW5jZSAtIDEpKTtcblxuICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnNmb3JtKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgLXdlYmtpdC10cmFuc2Zvcm06ICR0cmFuc2Zvcm07XG4gICAgdHJhbnNmb3JtOiAkdHJhbnNmb3JtO1xuICB9XG5cbiAgei1pbmRleDogJGRpc3RhbmNlICogMTAwO1xufVxuIiwiQG1peGluIHJ0bCgkcHJvcGVydHksICR2YWx1ZSkge1xuICAkX3Byb3BlcnR5OiAkcHJvcGVydHk7XG4gICN7JHByb3BlcnR5fTogJHZhbHVlO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA9PSA0IHtcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgI3skcHJvcGVydHl9OiBudGgoJHZhbHVlLCAxKSBudGgoJHZhbHVlLCA0KSBudGgoJHZhbHVlLCAzKSBudGgoJHZhbHVlLCAyKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ2xlZnQnKSkge1xuICAgICAgJHByb3BlcnR5OiBzdHItc2xpY2UoJHByb3BlcnR5LCAxLCBzdHItaW5kZXgoJHByb3BlcnR5LCAnbGVmdCcpIC0gMSkgKyAncmlnaHQnO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykpIHtcbiAgICAgICRwcm9wZXJ0eTogc3RyLXNsaWNlKCRwcm9wZXJ0eSwgMSwgc3RyLWluZGV4KCRwcm9wZXJ0eSwgJ3JpZ2h0JykgLSAxKSArICdsZWZ0JztcbiAgICB9XG5cbiAgICBAaWYgJHByb3BlcnR5ICE9ICRfcHJvcGVydHkge1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiQG1peGluIHRhcmdldCgkdGFyZ2V0KSB7XG4gIEBhdC1yb290IHtcbiAgICAvKiEgQHt0YXJnZXQ6ICN7JHRhcmdldH19ICovXG4gICAgJiB7XG4gICAgICBAY29udGVudDsgIFxuICAgIH1cbiAgICAvKiEge3RhcmdldDogI3skdGFyZ2V0fX1AICovICBcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gRHJhdyB0cmlhbmdsZXNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gdHJpYW5nbGUoJGNvbG9yOiBudWxsLCAkaGVpZ2h0OiBudWxsLCAkd2lkdGg6IG51bGwsICRhbmdsZTogbnVsbCkge1xuXG4gICRjb2xvcjogaWYoJGNvbG9yICE9IG51bGwsICRjb2xvciwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIGNvbG9yJykpO1xuICAkaGVpZ2h0OiBpZigkaGVpZ2h0ICE9IG51bGwsICRoZWlnaHQsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBoZWlnaHQnKSk7XG4gICR3aWR0aDogaWYoJHdpZHRoICE9IG51bGwsICR3aWR0aCwgdG9vbGtpdC1nZXQoJ3RyaWFuZ2xlIHdpZHRoJykpO1xuICAkYW5nbGU6IGlmKCRhbmdsZSAhPSBudWxsLCAkYW5nbGUsIHRvb2xraXQtZ2V0KCd0cmlhbmdsZSBhbmdsZScpKTtcblxuICBAaWYgbnRoKCRhbmdsZSwgMSkgPT0gXCJ0b3BcIiBvciBudGgoJGFuZ2xlLCAxKSA9PSBcImJvdHRvbVwiIHtcbiAgICAkYW5nbGU6IFwiI3skYW5nbGV9XCI7XG4gIH1cblxuICBAaWYgJGFuZ2xlID09IFwidG9wXCIge1xuICAgICRhbmdsZTogMDtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwidG9wIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiA3O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJyaWdodFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogMjtcbiAgfVxuICBAaWYgJGFuZ2xlID09IFwiYm90dG9tIHJpZ2h0XCIge1xuICAgICRhbmdsZTogNDUgKiAxO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJib3R0b21cIiB7XG4gICAgJGFuZ2xlOiA0NSAqIDQ7XG4gIH1cbiAgQGlmICRhbmdsZSA9PSBcImJvdHRvbSBsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiAzO1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJsZWZ0XCIge1xuICAgICRhbmdsZTogNDUgKiA2O1xuICB9XG4gIEBpZiAkYW5nbGUgPT0gXCJ0b3AgbGVmdFwiIHtcbiAgICAkYW5nbGU6IDQ1ICogNTtcbiAgfVxuXG4gIEBpZiB1bml0KCRoZWlnaHQpID09IFwiXCIgb3IgdW5pdCgkaGVpZ2h0KSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skaGVpZ2h0fSBpcyBub3QgYSBjb21wYXRpYmxlIHVuaXQgZm9yIGhlaWdodC5cIlxuICB9XG5cbiAgQGlmIHVuaXQoJHdpZHRoKSA9PSBcIlwiIG9yIHVuaXQoJHdpZHRoKSA9PSBcIiVcIiB7XG4gICAgQGRlYnVnIFwiaW4gdHJpYW5nbGUgI3skd2lkdGh9IGlzIG5vdCBhIGNvbXBhdGlibGUgdW5pdCBmb3Igd2lkdGguXCJcbiAgfVxuXG4gIC8vIG9mZnNldCA0NWRlZyB0byBtYWtlIGVhY2ggc2lkZSBzdGFydCBhdCAwXG4gICRkZWc6ICRhbmdsZSArIDQ1O1xuICAvLyBpZiB1bml0cywgcmVtb3ZlIHVuaXRzXG4gIEBpZiB1bml0KCRkZWcpID09IGRlZyB7XG4gICAgJGRlZzogJGRlZyAvIDFkZWc7XG4gIH1cbiAgLy8gc2hpZnQgdG8gYmUgb24gYSBzY2FsZSBmcm9tIDAgdG8gOTAuXG4gIEB3aGlsZSAkZGVnID4gOTAge1xuICAgICRkZWc6ICRkZWcgLSA5MDtcbiAgfVxuICBAd2hpbGUgJGRlZyA8IDAge1xuICAgICRkZWc6ICRkZWcgKyA5MDtcbiAgfVxuICAvLyBHZXQgYSByYXRpbyBvZiA5MCB0byBtdWx0aXBseSBieS5cbiAgJGRlZzogJGRlZyAvIDkwO1xuXG4gIC8vIG1ha2Ugc3VyZSBtZXRyaWNzIGFyZSByZXNldFxuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50O1xuXG4gIC8vIHJ1biB0aHJvdWdoIHNpZGVzXG4gIEBpZiAkYW5nbGUgPD0gNDUgb3IgJGFuZ2xlID4gMzE1IHtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAwICgkd2lkdGggKiBhYnMoJGRlZyAtIDEpKSAkaGVpZ2h0ICgkd2lkdGggKiAkZGVnKTtcbiAgfVxuICBAaWYgJGFuZ2xlID4gNDUgYW5kICRhbmdsZSA8PSAxMzUge1xuICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqICRkZWcpIDAgKCRoZWlnaHQgKiBhYnMoJGRlZyAtIDEpKSAkd2lkdGg7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDEzNSBhbmQgJGFuZ2xlIDw9IDIyNSB7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGNvbG9yO1xuICAgIGJvcmRlci13aWR0aDogJGhlaWdodCAoJHdpZHRoICogJGRlZykgMCAoJHdpZHRoICogYWJzKCRkZWcgLSAxKSk7XG4gIH1cbiAgQGlmICRhbmdsZSA+IDIyNSBhbmQgJGFuZ2xlIDw9IDMxNSB7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiAkY29sb3I7XG4gICAgYm9yZGVyLXdpZHRoOiAoJGhlaWdodCAqIGFicygkZGVnIC0gMSkpICR3aWR0aCAoJGhlaWdodCAqICRkZWcpIDA7XG4gIH1cbn0iLCIvLyBWZXJ0aWNhbGx5IGNlbnRlciBhbnl0aGluZywgbGl0ZXJhbGx5IGFueXRoaW5nLlxuLy8gaHR0cDovL3plcm9zaXh0aHJlZS5zZS92ZXJ0aWNhbC1hbGlnbi1hbnl0aGluZy13aXRoLWp1c3QtMy1saW5lcy1vZi1jc3MvXG5AbWl4aW4gdmVydGljYWwtY2VudGVyKCRtaWRwb2ludDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCd2ZXJ0aWNhbCBtaWRwb2ludCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuXG4gIHRvcDogJG1pZHBvaW50O1xuICBAaW5jbHVkZSB2ZXJ0aWNhbC1jZW50ZXItY29yZSgkZXh0ZW5kKTtcbn1cblxuQG1peGluIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IG51bGwpIHtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgndmVydGljYWwgZXh0ZW5kJykpO1xuICBAaWYgJGV4dGVuZCB7XG4gICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ3ZlcnRpY2FsIGNlbnRlcicpIHtcbiAgICAgIEBpbmNsdWRlIHZlcnRpY2FsLWNlbnRlci1jb3JlKCRleHRlbmQ6IGZhbHNlKTtcbiAgICB9XG4gIH1cbiAgQGVsc2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBAaWYgbWl4aW4tZXhpc3RzKHRyYW5zZm9ybSkge1xuICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoLTUwJSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgIH1cbiAgfVxufVxuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIEhvcml6b250YWwgQ2VudGVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiBob3Jpem9udGFsLWNlbnRlcigkbWlkcG9pbnQ6IG51bGwsICRmaXhlZDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkJykpO1xuICAkZXh0ZW5kOiBpZigkZXh0ZW5kICE9IG51bGwsICRleHRlbmQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGV4dGVuZCcpKTtcblxuICBAaWYgJGZpeGVkIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIGZpeGVkIG1pZHBvaW50JykpO1xuICB9XG4gIEBlbHNlIHtcbiAgICAkbWlkcG9pbnQ6IGlmKCRtaWRwb2ludCAhPSBudWxsLCAkbWlkcG9pbnQsIHRvb2xraXQtZ2V0KCdob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgQGlmICRtaWRwb2ludCAhPSAwJSB7XG4gICAgbGVmdDogJG1pZHBvaW50O1xuICB9XG5cbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gaG9yaXpvbnRhbC1jZW50ZXItY29yZSgkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJGZpeGVkOiBpZigkZml4ZWQgIT0gbnVsbCwgJGZpeGVkLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnaG9yaXpvbnRhbCBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpZiAkZml4ZWQge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKHRydWUsIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgZHluYW1pYy1leHRlbmQoJ2hvcml6b250YWwgY2VudGVyJykge1xuICAgICAgICBAaW5jbHVkZSBob3Jpem9udGFsLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cbn1cblxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBYnNvbHV0ZSBDZW50ZXJcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFic29sdXRlLWNlbnRlcigkdmVydGljYWw6IG51bGwsICRob3Jpem9udGFsOiBudWxsLCAkZml4ZWQ6IG51bGwsICRleHRlbmQ6IG51bGwpIHtcbiAgJHZlcnRpY2FsOiBpZigkdmVydGljYWwgIT0gbnVsbCwgJHZlcnRpY2FsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIHZlcnRpY2FsIG1pZHBvaW50JykpO1xuICAkZml4ZWQ6IGlmKCRmaXhlZCAhPSBudWxsLCAkZml4ZWQsIHRvb2xraXQtZ2V0KCdhYnNvbHV0ZSBjZW50ZXIgZml4ZWQnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBleHRlbmQnKSk7XG5cbiAgQGlmICRmaXhlZCB7XG4gICAgJGhvcml6b250YWw6IGlmKCRob3Jpem9udGFsICE9IG51bGwsICRob3Jpem9udGFsLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkIGhvcml6b250YWwgbWlkcG9pbnQnKSk7XG4gIH1cbiAgQGVsc2Uge1xuICAgICRob3Jpem9udGFsOiBpZigkaG9yaXpvbnRhbCAhPSBudWxsLCAkaG9yaXpvbnRhbCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBob3Jpem9udGFsIG1pZHBvaW50JykpO1xuICB9XG5cbiAgdG9wOiAkdmVydGljYWw7XG4gIEBpZiAkaG9yaXpvbnRhbCAhPSAwJSB7XG4gICAgbGVmdDogJGhvcml6b250YWw7XG4gIH1cblxuICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSgkZml4ZWQsICRleHRlbmQpO1xufVxuXG5AbWl4aW4gYWJzb2x1dGUtY2VudGVyLWNvcmUoJGZpeGVkOiBudWxsLCAkZXh0ZW5kOiBudWxsKSB7XG4gICRmaXhlZDogaWYoJGZpeGVkICE9IG51bGwsICRmaXhlZCwgdG9vbGtpdC1nZXQoJ2Fic29sdXRlIGNlbnRlciBmaXhlZCcpKTtcbiAgJGV4dGVuZDogaWYoJGV4dGVuZCAhPSBudWxsLCAkZXh0ZW5kLCB0b29sa2l0LWdldCgnYWJzb2x1dGUgY2VudGVyIGV4dGVuZCcpKTtcblxuICBAaWYgJGV4dGVuZCB7XG4gICAgQGlmICRmaXhlZCB7XG4gICAgICBAaW5jbHVkZSBkeW5hbWljLWV4dGVuZCgnYWJzb2x1dGUgY2VudGVyIGZpeGVkJykge1xuICAgICAgICBAaW5jbHVkZSBhYnNvbHV0ZS1jZW50ZXItY29yZSh0cnVlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCdhYnNvbHV0ZSBjZW50ZXInKSB7XG4gICAgICAgIEBpbmNsdWRlIGFic29sdXRlLWNlbnRlci1jb3JlKGZhbHNlLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICBAaWYgJGZpeGVkIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSkpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgdHJhbnNsYXRlWCgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgICB9XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIEBpZiBtaXhpbi1leGlzdHModHJhbnNmb3JtKSB7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKC01MCUpKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgfVxuICB9XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENTUyBsZXZlbCA0IFZpZXdwb3J0XG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtZGV2aWNlLWFkYXB0LyN0aGUtYXR2aWV3cG9ydC1ydWxlXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbkBtaXhpbiB2aWV3cG9ydCB7XG4gIEAtd2Via2l0LXZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxuICBALW1vei12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQC1tcy12aWV3cG9ydCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQHZpZXdwb3J0IHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4iLCJAbWl4aW4gdW5kZXJsaW5lKCRiYWNrZ3JvdW5kOiBudWxsLCAkY29sb3I6IG51bGwsICRjbGVhci1kZXNjZW5kZXJzOiBudWxsLCAkZGlzdGFuY2U6IG51bGwsICR3aWR0aDogbnVsbCwgJGV4dGVuZDogbnVsbCkge1xuICAkYmFja2dyb3VuZDogaWYoJGJhY2tncm91bmQgIT0gbnVsbCwgJGJhY2tncm91bmQsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgYmFja2dyb3VuZCcpKTtcbiAgJGNvbG9yOiBpZigkY29sb3IgIT0gbnVsbCwgJGNvbG9yLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGNvbG9yJykpO1xuICAkY2xlYXItZGVzY2VuZGVyczogaWYoJGNsZWFyLWRlc2NlbmRlcnMgIT0gbnVsbCwgJGNsZWFyLWRlc2NlbmRlcnMsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgY2xlYXIgZGVzY2VuZGVycycpKTtcbiAgJGRpc3RhbmNlOiBpZigkZGlzdGFuY2UgIT0gbnVsbCwgJGRpc3RhbmNlLCB0b29sa2l0LWdldCgndW5kZXJsaW5lIGRpc3RhbmNlJykpO1xuICAkd2lkdGg6IGlmKCR3aWR0aCAhPSBudWxsLCAkd2lkdGgsIHRvb2xraXQtZ2V0KCd1bmRlcmxpbmUgd2lkdGgnKSk7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgJFBYOiAuMDYyNWVtO1xuXG4gIEBpbmNsdWRlIHVuZGVybGluZS1jb3JlKCRleHRlbmQpO1xuXG4gIEBpZiBtaXhpbi1leGlzdHMoYmFja2dyb3VuZC1pbWFnZSkgYW5kIGZ1bmN0aW9uLWV4aXN0cyhsaW5lYXItZ3JhZGllbnQpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKFxuICAgICAgbGluZWFyLWdyYWRpZW50KGJvdHRvbSwgJGJhY2tncm91bmQgNzUlLCAkY29sb3IgNzUlKVxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsICRiYWNrZ3JvdW5kIDc1JSwgJGNvbG9yIDc1JSk7XG4gIH1cbiAgYmFja2dyb3VuZC1zaXplOiAoMiAqICRQWCkgKCgxICsgJHdpZHRoKSAqICRQWCk7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDAgKCgkd2lkdGgpICogJFBYKSArICRkaXN0YW5jZTtcblxuICBAaWYgJGNsZWFyLWRlc2NlbmRlcnMge1xuICAgIHRleHQtc2hhZG93OiAoMSAqICRQWCkgKDEgKiAkUFgpIDAgJGJhY2tncm91bmQsICgtMSAqICRQWCkgMCAwICRiYWNrZ3JvdW5kO1xuICB9XG59XG5cbkBtaXhpbiB1bmRlcmxpbmUtY29yZSgkZXh0ZW5kOiBudWxsKSB7XG4gICRleHRlbmQ6IGlmKCRleHRlbmQgIT0gbnVsbCwgJGV4dGVuZCwgdG9vbGtpdC1nZXQoJ3VuZGVybGluZSBleHRlbmQnKSk7XG5cbiAgQGlmICRleHRlbmQge1xuICAgIEBpbmNsdWRlIGR5bmFtaWMtZXh0ZW5kKCd1bmRlcmxpbmUnKSB7XG4gICAgICBAaW5jbHVkZSB1bmRlcmxpbmUtY29yZShmYWxzZSk7XG4gICAgfVxuICB9XG4gIEBlbHNlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14O1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBBUlQhXG4vLyBJbnNwaXJlZCBieSBodHRwOi8vZWxydW1vcmRlbGFsdXouZ2l0aHViLmlvL1BpeGVsYXRvci9cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuQG1peGluIGFydCgkYXJ0LCAkcHgtc2l6ZTogbnVsbCwgJGNvbG9yOiBudWxsLCAkcmFkaXVzOiBudWxsKSB7XG4gICRweC1zaXplOiBpZigkcHgtc2l6ZSAhPSBudWxsLCAkcHgtc2l6ZSwgdG9vbGtpdC1nZXQoJ2FydCBwaXhlbCBzaXplJykpO1xuICAkY29sb3I6IGlmKCRjb2xvciAhPSBudWxsLCAkY29sb3IsIHRvb2xraXQtZ2V0KCdhcnQgY29sb3InKSk7XG4gICRyYWRpdXM6IGlmKCRyYWRpdXMgIT0gbnVsbCwgJHJhZGl1cywgdG9vbGtpdC1nZXQoJ2FydCBib3JkZXIgcmFkaXVzJykpO1xuXG4gICRidWlsZDogKCk7XG4gICR5OiAkcHgtc2l6ZTtcbiAgJHg6IDA7XG5cbiAgaGVpZ2h0OiAkcHgtc2l6ZTtcbiAgd2lkdGg6ICRweC1zaXplO1xuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyX2xlbmd0aCgkYXJ0KSB7XG4gICAgJGNoYXI6IHN0cl9zbGljZSgkYXJ0LCAkaSwgJGkpO1xuICAgICR4OiAkeCArICRweC1zaXplO1xuXG4gICAgQGlmICRjaGFyID09ICduJyB7XG4gICAgICAkeTogJHkgKyAkcHgtc2l6ZTtcbiAgICAgICR4OiAwO1xuICAgIH1cbiAgICBAZWxzZSBpZiAkY2hhciAhPSAnICcge1xuICAgICAgJGJvcmRlcjogJHggJHkgMCAkY29sb3I7XG4gICAgICAkYnVpbGQ6IGFwcGVuZCgkYnVpbGQsICRib3JkZXIsIGNvbW1hKTtcbiAgICB9XG4gIH1cblxuICBib3gtc2hhZG93OiAkYnVpbGQ7XG59IiwiQG1peGluIHNldC1tdWx0aXBsZSgkdmFsdWUsICRwcm9wZXJ0aWVzLi4uKSB7XG4gICRwcm9wZXJ0eS1sZW5ndGg6IGxlbmd0aCgkcHJvcGVydGllcyk7XG4gICRlcnJvci1tc2c6IFwiVGhlIGBzZXQtbXVsdGlwbGVgIG1peGluIHJlcXVpcmVzIHlvdSB0byBwYXNzIGluIGEgbGlzdCBvZiBwcm9wZXJ0aWVzIGFzIHRoZSBzZWNvbmQgYXJndW1lbnRcIjtcblxuICBAaWYgJHByb3BlcnR5LWxlbmd0aCA8IDEge1xuICAgIEBpZiBmZWF0dXJlLWV4aXN0cyhhdC1lcnJvcikge1xuICAgICAgQGVycm9yICRlcnJvci1tc2c7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgIEB3YXJuICRlcnJvci1tc2c7XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgdGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCBpbiBpcyBhIHdoaXRlLXNwYWNlZCBzZXBhcmF0ZWQgbGlzdC5cbiAgJHByb3BlcnRpZXM6IGlmKCRwcm9wZXJ0eS1sZW5ndGggPT0gMSwgbnRoKCRwcm9wZXJ0aWVzLCAxKSwgJHByb3BlcnRpZXMpO1xuXG4gIEBlYWNoICRwcm9wZXJ0eSBpbiAkcHJvcGVydGllcyB7XG4gICAgI3skcHJvcGVydHl9OiAkdmFsdWVcbiAgfVxufVxuIiwiLy8gIE1vZHVsZSBTY2FsZSBhbmQgYmFzZSBmb250IHNldHRpbmdzXG4vLyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuJGJhc2UtZm9udC1zaXplOiAgIDE0cHg7XG4kaWRlYWwtZm9udC1zaXplOiAgMjJweDtcbi8vICRiYXNlLWxpbmUtaGVpZ2h0OiBtcygxLCAkYmFzZS1mb250LXNpemUpO1xuXG4kcmh5dGhtLXVuaXQ6IFwicmVtXCI7XG4kcmh5dGhtLWdhcDogOHB4O1xuJHJlbS13aXRoLXB4LWZhbGxiYWNrOiBmYWxzZTtcblxuJHNjdXQtcmVtLWJhc2U6IHNjdXQtc3RyaXAtdW5pdCgkYmFzZS1mb250LXNpemUpO1xuXG5cbi8vIHt7IENvbXBvbmVudCBzaXplIH19XG4kZ2xvYmFsLXJhZGl1czogM3B4O1xuIiwiLy8gIEdyaWQgc2V0dGluZ3Ncbi8vICA9PT09PT09PT09PT09XG5cbiRsYXlvdXQtYmFzZTogKFxuICBndXR0ZXJzOiAxLzUsXG4gIGNvbHVtbi13aWR0aDogODBweCxcbiAgLy8gZ3V0dGVyLXBvc2l0aW9uOiBpbnNpZGUtc3RhdGljLFxuICBkZWJ1ZzogKFxuICAgIC8vIGltYWdlOiBzaG93LFxuICApLFxuICB1c2UtY3VzdG9tOiAoXG4gICAgY2xlYXJmaXg6IHRydWUsXG4gICAgcmVtOiBmYWxzZSxcbiAgKSxcbik7XG4kc3VzeTogbGF5b3V0KDUgJGxheW91dC1iYXNlKTtcblxuLy8ge3sgRWxlbWVudCB0d2ljayBwb2ludHMgfX1cblxuLy8ge3sgRGV2aWNlIGxheW91dHMgfX1cbiRzdXN5LW1lZGlhOiAoXG4gICdtb2JpbGUnOiAnKG1heC13aWR0aDogNDE0cHgpJyxcbiAgJ3RhYmxldC1wb3J0cmFpdCc6ICcobWF4LXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUnOiAnKG1heC13aWR0aDogMTAyNHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ3RhYmxldCc6ICcobWluLXdpZHRoOiA3NjhweCknLFxuICAndGFibGV0LXBvcnRyYWl0LW1pbic6ICcobWluLXdpZHRoOiA3NjhweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpJyxcbiAgJ3RhYmxldC1sYW5kc2NhcGUtbWluJzogJyhtaW4td2lkdGg6IDc2OHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpJyxcbiAgJ2Rlc2t0b3AnOiAnKG1pbi13aWR0aDogMTIwMHB4KScsXG4gICdjYXRlZ29yeS1tZW51JzogJyhtaW4td2lkdGg6IDEwMjRweCknXG4pO1xuJHRhYmxldDogKFxuICBxdWVyeTogbWFwLWdldCgkc3VzeS1tZWRpYSwgdGFibGV0KSxcbiAgbGF5b3V0OiA5IC41XG4pO1xuJHRhYmxldC1jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCBtYXAtZ2V0KCR0YWJsZXQsIGxheW91dCkpO1xuJGRlc2t0b3A6IChcbiAgcXVlcnk6IG1hcC1nZXQoJHN1c3ktbWVkaWEsIGRlc2t0b3ApLFxuICBsYXlvdXQ6IDEyIDEuNSBzcGxpdFxuKTtcbiRkZXNrdG9wLWNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMsIG1hcC1nZXQoJGRlc2t0b3AsIGxheW91dCkpO1xuJGRlc2t0b3AtZ3JpZC1wYWRkaW5nOiBzY3V0LXJlbSgxNSk7XG5cbi8vICB7eyBMYXllcnMgLS0tLS0tIH19XG4kbGF5ZXJzOiAoXG4gIGJhc2UsXG4gIGhlYWRlci1tZW51LFxuICBkcmF3ZXIsXG4gIGRyYXdlci1zaGFkb3csXG4gIGRyYXdlci1uYXYsXG4pOyIsIi8vICBTZXR0aW5nc1xuLy8gID09PT09PT09XG5cbiRjb2xvci1saWdodC1zYXR1cmF0aW9uOiA5MyU7XG5cbi8vICBDb2xvcnNcbi8vICA9PT09PT1cblxuJGdyYXktYmFzZTogICAgICMwMDAgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrZXI6ICAgdGludCgkZ3JheS1iYXNlLCAxMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1kYXJrOiAgICAgdGludCgkZ3JheS1iYXNlLCAyMCUpICAgIWRlZmF1bHQ7XG4kZ3JheTogICAgICAgICAgdGludCgkZ3JheS1iYXNlLCAzMy41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodDogICAgdGludCgkZ3JheS1iYXNlLCA0Ni41JSkgIWRlZmF1bHQ7XG4kZ3JheS1saWdodGVyOiAgdGludCgkZ3JheS1iYXNlLCA5My41JSkgIWRlZmF1bHQ7XG5cbi8vICBUZXh0c1xuLy8gIC0tLS0tXG5cbiR0ZXh0LWNvbG9yOiAkZ3JheS1kYXJrO1xuXG4vLyAgUGFsbGV0ZVxuLy8gIC0tLS0tLS0tLS0tXG5cbiRibHVlOiAjMmQ2ZWM2O1xuJGJsdWUtZGFyazogcmdiKDAsIDY5LCAxNjQpO1xuJGJsdWUtbGlnaHQ6ICNkOGU5ZmY7XG4keWVsbG93OiAjZmM5NjAwO1xuJHllbGxvdy1kYXJrOiAjYjg2ZTAwO1xuJHllbGxvdy1saW5rOiAjZmZkODAwO1xuJG9yYW5nZTogI2ZjNDcwMDtcbiRvcmFuZ2UtZGFyazogI2I4NmUwMDtcbiRyZWQ6IHJnYigyMDYsIDY4LCA2Mik7XG4kZ3JlZW46IHJnYigyOCwgMTQ5LCAyMik7XG4kcGluazogcmdiKDE5NywgMzEsIDEyNCk7XG5cbiRwcmltYXJ5OiBzaGFkZSgjNDI4YmNhLCA2LjUlKTtcbiRzdWNjZXNzOiAjNWNiODVjO1xuJGluZm86ICAgICM1YmMwZGM7XG4kd2FybmluZzogI2YwYWQ0ZTtcbiRkYW5nZXI6ICAjZDk1MzRmO1xuXG4kaW5wdXQtYm9yZGVyOiAjZTRlNGU0O1xuJGJvcmRlci1ncmF5OiAjOTE5MTkxO1xuJGJhY2tncm91bmQtZ3JheTogI2U5ZTllOTtcblxuLy8gIExpbmtzXG4vLyAgLS0tLS1cblxuJGxpbmstY29sb3I6ICAgICAgICAgICAjMDAwICFkZWZhdWx0O1xuJGxpbmstaG92ZXItY29sb3I6ICAgICBzaGFkZSgkbGluay1jb2xvciwgMTUlKSAhZGVmYXVsdDtcbiRsaW5rLWZvY3VzLWNvbG9yOiAgICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLWFjdGl2ZS1jb2xvcjogICAgJGdyYXktZGFyayAhZGVmYXVsdDtcbiRsaW5rLXZpc2l0ZWQtY29sb3I6ICAgJGdyYXktZGFyayAhZGVmYXVsdDtcblxuLy8gIE5Qcm9ncmVzc1xuLy8gIC0tLS0tLS0tLVxuJG5wcm9ncmVzcy1jb2xvcjogICAgJHByaW1hcnk7XG4iLCIvLyAgRm9udCBzZXR0aW5nc1xuLy8gID09PT09PT09PT09PT1cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiAgIHJpZ2h0O1xuXG4vLyDlg4Xph53lsI3oi7Hmlodcbi8vIEBmb250LWZhY2Uge1xuLy8gICBmb250LWZhbWlseTogRW5nbGlzaDtcbi8vICAgdW5pY29kZS1yYW5nZTogVSswMC0wMjRGO1xuLy8gICBzcmM6IGxvY2FsKEhlbHZldGljYSk7XG4vLyB9XG5cbiRzYW5zOiAgICBIZWx2ZXRpY2FOZXVlLUxpZ2h0XG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUgTGlnaHQnXG4gICAgICAgLCAnSGVsdmV0aWNhIE5ldWUnXG4gICAgICAgLCAgSGVsdmV0aWNhXG4gICAgICAgLCAnSGVpdGkgVEMnXG4gICAgICAgLCAnTGlIZWkgUHJvJ1xuICAgICAgICwgJ01pY3Jvc29mdCBKaGVuZ0hlaSdcbiAgICAgICAsICflvq7ou5/mraPpu5Hpq5QnXG4gICAgICAgLCAgQXJpYWxcbiAgICAgICAsICBzYW5zLXNlcmlmO1xuXG4kc2VyaWY6ICAnUFQgU2VyaWYnXG4gICAgICAgLCBHZW9yZ2lhXG4gICAgICAgLCBUaW1lc1xuICAgICAgICwgJ1RpbWVzIE5ldyBSb21hbidcbiAgICAgICAsICdTb25ndGkgVEMnXG4gICAgICAgLCAnSGlyYWdpbm8gTWluY2hvIFByb04nXG4gICAgICAgLCBzZXJpZjtcblxuJGJhc2UtZm9udC1mYW1pbHk6ICRzYW5zOyJdLCJtYXBwaW5ncyI6IjtBOENBQTs7Ozs7RUFLRTtBOUMyREYsQThDOUJBLGM5QzhCYyxDOEM5Qk07RUFWbEIsZUFBZSxFQUFFLElBQUs7RUFDdEIsWUFBWSxFQUFFLENBQUU7RUFHZCxVQUFVLEVBQUUsQ0FBRTtFQUNkLGFBQWEsRUFBRSxDQUFFLEdBT3BCOztBRGNHLE1BQU0sRUFBTCxTQUFTLEVBQUUsTUFBTTtFN0N2Q0UsQUFBQSxvQkFBb0IsQ0FBQztJQUV6QyxPQUFPLEVBQUUsSUFBSztJQUNkLGVBQWUsRUFBRSxhQUFjLEdBRWxDOztBQUNELEFBQUEsWUFBWSxDQUFDO0VBQ1gsYUFBYSxFQ2ZrQixHQUFXO0VEZ0IxQyxnQkFBZ0IsRWtFd0JBLE9BQU8sR2xFdEJ4QjtFNkM2QkcsTUFBTSxFQUFMLFNBQVMsRUFBRSxNQUFNO0k3Q2pDdEIsQUFBQSxZQUFZLENBQUM7TUFHMEIsS0FBSyxFQUFFLGVBQUksR0FDakQ7O0FBQ0QsQUFBQSxzQkFBc0IsQ0FBQztFQUNyQixPQUFPLEVBQUUsQ0FBRTtFQUNYLE1BQU0sRUFBRSxDQUFFO0VBQ1YsTUFBTSxFQUFFLElBQUssR0FDZDs7QUFDRCxBQUFBLG9CQUFvQixDQUFDO0VBQ25CLE9BQU8sRUFBRSxLQUFNO0VBQ2YsT0FBTyxFQzFCd0IsR0FBVyxDQUFYLElBQVc7RUQyQjFDLGFBQWEsRUMzQmtCLElBQVc7RUQ0QjFDLElBQUksRUFBRSxTQUFVO0VBQ2hCLEtBQUssRUFBRSxJQUFLLEdBR2I7RUFGQyxBQU5GLG1CQU1xQixDQU5yQixvQkFBb0IsQ0FNSTtJQUFFLGdCQUFnQixFQUFFLElBQUssR0FBSTtFQUNuRCxBQVBGLGlCQU9tQixDQVBuQixvQkFBb0IsQ0FPRTtJQUFFLGdCQUFnQixFa0VIbEMsT0FBRyxHbEVHeUM7O0FBRWxELEFBQUEsMkJBQTJCLENBQUM7RUFDMUIsT0FBTyxFQUFFLElBQUs7RUFDZCxPQUFPLEVDbkN3QixHQUFXLENBQVgsSUFBVyxHRG9DM0M7O0FBQ0QsQUFBbUIsbUJBQUEsQUFBQSxNQUFNLENBQUM7RUFBRSxPQUFPLEVBQUUsS0FBTSxHQUFJOztBQUMvQyxBQUFBLHFCQUFxQixDQUFDO0VBQ3BCLElBQUksRUFBRSxRQUFTO0VBQ2YsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENrRURMLE9BQU8sR2xFRXBCOztBQUNELEFBQUEscUJBQXFCLENBQUM7RUFDcEIsT0FBTyxFQzNDd0IsSUFBVyxDQUZwQixDQUFPLENBRUUsSUFBVztFRDRDMUMsVUFBVSxFQUFFLE1BQU8sR0FDcEI7O0FBQ0QsQUFBQSxvQkFBb0IsQ0FBQztFQUNuQixPQUFPLEVDL0N3QixHQUFXLENBQVgsSUFBVztFRGdEMUMsSUFBSSxFQUFFLGNBQWUsR0FJdEI7RUFGQyxBQUpGLG1CQUlxQixDQUpyQixvQkFBb0IsQ0FJSTtJQUFFLGdCQUFnQixFQUFFLElBQUssR0FBSTtFQUNuRCxBQUxGLGlCQUttQixDQUxuQixvQkFBb0IsQ0FLRTtJQUFFLGdCQUFnQixFa0V2QmxDLE9BQUcsR2xFdUJ5Qzs7QUFHbEQsQUFBQSxvQkFBb0IsQ0FBQztFQUNuQixhQUFhLEVDdkRrQixHQUFXO0VEd0QxQyxJQUFJLEVBQUUsV0FBWTtFQUNsQixNQUFNLEVBQUUsR0FBRyxDQUFDLEtBQUssQ2tFbkJKLE9BQU87RWxFb0JwQixZQUFZLEVBQUUsV0FBWSxHQUMzQjs7QUFFRCxBQUFBLGNBQWMsQ0FBQztFQUViLGFBQWEsRUMvRGtCLEdBQVcsR0RrRTNDO0VBTEQsQUFJRSxjQUpZLENBSVosc0JBQXNCLENBQUM7SUFBRSxZQUFZLEVBQUUsQ0FBRSxHQUFJOztBQUUvQyxBQUFBLG9CQUFvQixDQUFDO0VBQ25CLE9BQU8sRUNwRXdCLEdBQVcsR0RzRTNDO0VBSEQsQUFBQSxvQkFBb0IsQUFFakIsVUFBVyxDQUFBLEFBQUEsR0FBRyxFQUFFO0lBQUUsZ0JBQWdCLEVrRTdCbkIsT0FBTyxHbEU2QmtDOztBQUUzRCxBQUFBLHFCQUFxQixDQUFDO0VBQ3BCLE1BQU0sRUFBRSxDQUFFO0VBQ1YsU0FBUyxFQUFFLElBQUssR0FHakI7RUFMRCxBQUlFLHFCQUptQixDQUluQixVQUFVLENBQUM7SUFBRSxLQUFLLEVrRXZEYixPQUFPLEdsRXVEaUIiLCJuYW1lcyI6W119 */
